From 96e055e13f010abf1cdaacfef84bb142068a3536 Mon Sep 17 00:00:00 2001 From: Zuev Date: Sat, 4 Jul 2026 15:47:12 +0300 Subject: [PATCH 01/14] =?UTF-8?q?=D0=B1=D0=B0=D0=B3=20=D1=80=D0=B5=D0=BF?= =?UTF-8?q?=D0=BE=D1=80=D1=82=20=D0=B8=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8?= =?UTF-8?q?=D1=84=D0=B0=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agents/skills/graphify/.graphify_version | 1 + .agents/skills/graphify/SKILL.md | 674 + .../skills/graphify/references/add-watch.md | 56 + .agents/skills/graphify/references/exports.md | 87 + .../graphify/references/extraction-spec.md | 31 + .../graphify/references/github-and-merge.md | 46 + .agents/skills/graphify/references/hooks.md | 33 + .agents/skills/graphify/references/query.md | 311 + .../skills/graphify/references/transcribe.md | 52 + .agents/skills/graphify/references/update.md | 192 + .codex/graphify/.graphify_version | 1 + .codex/graphify/SKILL.md | 674 + .codex/graphify/references/add-watch.md | 56 + .codex/graphify/references/exports.md | 87 + .codex/graphify/references/extraction-spec.md | 31 + .../graphify/references/github-and-merge.md | 46 + .codex/graphify/references/hooks.md | 33 + .codex/graphify/references/query.md | 311 + .codex/graphify/references/transcribe.md | 52 + .codex/graphify/references/update.md | 192 + BUG_REPORT.md | 219 + DEVOPS.md | 54 +- graphify-out/.graphify_labels.json | 1 + graphify-out/.graphify_learning.json | 5 + graphify-out/.graphify_python | 1 + graphify-out/.graphify_root | 1 + graphify-out/.graphify_semantic_new.json | 6222 + graphify-out/.graphify_uncached.txt | 48 + graphify-out/.vocab.txt | 885 + graphify-out/GRAPH_REPORT.md | 713 + ...2ab9d45f5ce85f3958e959fd0d7a6434042b8.json | 1 + ...d5f3f82770e794b6ae283c577580dcc10c6aa.json | 1 + ...8f27e08517e30f5d342d352c408a0ea0e0a6e.json | 1 + ...cb274b71aed05d9b8343d7b7c7ac4964a4e32.json | 1 + ...8cd32f7f4ba09e25701c0780fff0aa3e66dee.json | 1 + ...da580f2e0e51bf769258918ad51a75196a2de.json | 1 + ...2c4efd630fdf3421a9b9ed5140bb1f61ea811.json | 1 + ...954648216c4ef31dffab9c2e5988619859290.json | 1 + ...8a65d25b11663116210f41def5f50fb68de61.json | 1 + ...3d9f86742c0ffadb2de77c20fb30e3890917a.json | 1 + ...6e01cf20a5c0fe1b542d1038bf25507d8ab47.json | 1 + ...94cc3de7a17898f37c7895cee16da9f89d5c5.json | 1 + ...bb222a85dec4ba2d35a3ede28b3faab91de4f.json | 1 + ...4062ea4033d4a9308d84796cb08756b5aea50.json | 1 + ...e9b544e296008a83ac3ab64fef2684fdee86d.json | 1 + ...0a2dd9de0fb74747b2f0e9fd79221f0d11c29.json | 1 + ...5902bec52eeb85a782b60772ace0169091776.json | 1 + ...91af0c4b858ed682dec012a87ca8aa09ca58c.json | 1 + ...46d3efeed939ded371df696228e48e9122fb4.json | 1 + ...21c2a9ec9426167d9d5f29c5a7aa9fe0ccbb6.json | 1 + ...b1a88a4e63974f43156c4d2d76914de942d4e.json | 1 + ...7285056735442da415d0cdc5494984060ae67.json | 1 + ...0416a24e50a18fb08f615857ad03952bb5ddf.json | 1 + ...e080999d8e71d35685ebbc69d24dd2cde7f32.json | 1 + ...cf9b93e04ecb9f6b4c5ce47c7c44343f765cd.json | 1 + ...ca067b2cf0a02354475d99bc5a3a3d8d930a8.json | 1 + ...4441317464a752c9353c22c012b3c5e8a7fb7.json | 1 + ...11ada725d4d08b3ad0f59422a26dc6618bb0f.json | 1 + ...a3ff8479fd1cd402363311eb485e7740de83c.json | 1 + ...5eb1f447266da2c1cc9aabbfcfa600dd1708d.json | 1 + ...27325064fbb55454c5a96e2f22cfc5c6d6c3a.json | 1 + ...02e08cc75ca8cdcad4fd33a9e7c60416ecd60.json | 1 + ...77e50870fa8319bb09ee8794af9fc58754e7b.json | 1 + ...8d545164ce2c7481748835eac60e8d4722485.json | 1 + ...ce68b9b95cf0a8785e5e3720fcb469e94013e.json | 1 + ...2a08274c8392729be4740f84e7e953fa79b04.json | 1 + ...1a9a873abab9dd8be29c27ebf6976ea3c2b02.json | 1 + ...26160272baf9939e24dda52422b128e9c9ac7.json | 1 + ...8823c1b829e32ce3b304a5dcecfed1035cc77.json | 1 + ...b16f0864f2c6abda489c2de814252a1c7c2f1.json | 1 + ...3f6b94d8aff45ad93693103f493812aaa3209.json | 1 + ...9e9a047bb3029d120e1ababc02dcff0ed4eed.json | 1 + ...78b6b0fefd4df64133ac77ec6374610974201.json | 1 + ...c5fd3a05369987e8fef71c3299a365ae5883e.json | 1 + ...687a5a92c4735d276d696e9c2c23a99c41963.json | 1 + ...003524a7e603be5006f8381de30762361b5a1.json | 1 + ...8e92e8f30a0c79647c3975d9006f87a098daa.json | 1 + ...aca688742962aea6fa341fa25d51142cb78f0.json | 1 + ...809eff255ed97fbfb085ba8c76a88399add49.json | 1 + ...0b3088ea1668f667ab76fcc3c3db30609e464.json | 1 + ...5d0f63c6e8eecc704bee16d34e7d10fa011ed.json | 1 + ...2344e3fb65624bac54dde2e0e3af02306afd5.json | 1 + ...ad9eaf52e3515d3691620c0ab0e8c2ec016d1.json | 1 + ...8209b9d7423b9ac15d40ecd05846ce9a434b7.json | 1 + ...e862518c6c8360be75d1e4878626ca68ab2b4.json | 1 + ...0a62265e1922ce4f81ef7c24613ed5a2e8f9f.json | 1 + ...3d5bc583e8917b018561dc2ca86917efe42ff.json | 1 + ...1a4245b5a434a920b99ac12b573a71bbceaed.json | 1 + ...60adcb9ea16813e402426642d766a82e9a52a.json | 1 + ...deb86eec7fe934c014b419983b502c1368fec.json | 1 + ...eec3682157cc9def223de02fedbe4c6df738a.json | 1 + ...efb717b55781eea52a401286ad25d99c1a582.json | 1 + ...d007087a629ed52603e3fe0187059e7f903e2.json | 1 + ...7bde174b5c01ceaf9c399eb05b5e1bac74ddd.json | 1 + ...67c56f408b90cb3ecc32013855fd56b7e2582.json | 1 + ...0a9d1c6a85300d5e4d808170f3eaffd85bd70.json | 1 + ...d32336419f70fc89f48fed9b665f33561a913.json | 1 + ...05b6261a49ce5c81a41c78820e9315b899c64.json | 1 + ...10697dc89bee2ea2687a706329ce59b8de678.json | 1 + ...9d33099e5ca779ada943e24e8c35a8247a9cd.json | 1 + ...9b5211b8cbe442bebc4a340d8e565ce8948b1.json | 1 + ...15d517a23b84548c3520f2dcbeef3c1cb2a71.json | 1 + ...78d3080ce4138160e55670a2284a82bce2585.json | 1 + ...1a99cfea9e16c6a463fd44b2256d4b67e69e6.json | 1 + ...4964f99d2dcdaaf2bd02bcaffe5a0af80dac9.json | 1 + ...2cf6eaa5cd020e2690a75d0ccf0cb4d6c23be.json | 1 + ...096ecaa0d8df9e419f3d068f8e9280cf923f3.json | 1 + ...e28ac9ace8d8b1e46838ff4da53dd2f0deace.json | 1 + ...6a4e7d74f148ef2fdd7a6ae48ebb2f9ffbdc2.json | 1 + ...71298289a187b05deed370887df035bc6215e.json | 1 + ...afdb73df99284f492261408c4c7ce7af5209a.json | 1 + ...dcc02b9cb6661b6315b19eca6897b7abdfbaf.json | 1 + ...a05eb0d1a6724b1aeb40099d38fe695abfc58.json | 1 + ...5bf0495c0a0b204ab8e1880ce13e14344fbb2.json | 1 + ...2b9df6a7a5b8d8a9f4dad432092b2402b63e4.json | 1 + ...0eda974ab54a99660514c5a07b8d9344e5ac6.json | 1 + ...721c0f40a9642fc4a845a9a76764ff443e856.json | 1 + ...fc0d3ab18d78230c94d020be545cc7bd43bec.json | 1 + ...d39d734fdf523dfa941e8e71471546003ef4a.json | 1 + ...d427ff58616d4b9472b2dc67d5d2881f2de03.json | 1 + ...37c6b812c01c8c1f010796b8c04be6a802484.json | 1 + ...a70f378c9d415c5035289021fb1170bf2f4aa.json | 1 + ...f0ba84c0357ca364c55737c2874b78c0ab83d.json | 1 + ...f3b24646d77a3d703cbed81b4b2cf0d0193bb.json | 1 + ...858e2cb63805d2a2c4c3e9b4e81223e921edc.json | 1 + ...224ad27e51faa3df40d353377aaaa6a7ea12a.json | 1 + ...c2f38f0e0e93b4965da0c2d9c2c140eb23616.json | 1 + ...ebccee131f533288b8f497cd1dea2fa918171.json | 1 + ...21e5b76db7bd7eb34708474a94e91f5e7894f.json | 1 + ...287ce0ef8b28525b09c29dcfa8291f54e3007.json | 1 + ...0ee41444693efab397708a6d2705372ce5af8.json | 1 + ...c21651f25608a37e9613b797d15fb1504e0b0.json | 1 + ...1d1139e6dac363c574df68a5d5cfa77e1405f.json | 1 + ...93b2eff4d0e9e703fd9048e9e261ffa752e7f.json | 1 + ...4acd2c95a9cc7d2f686176ca671ddfe2f972b.json | 1 + ...9f753db314fa8682f4269ccfedaf4e98fe93f.json | 1 + ...ec71d2a631010b25d77a5e9f136a9e1cdecad.json | 1 + ...9b1a129fb8c5c7f18926d58f1431fd6442b4b.json | 1 + ...b0ff05d2d7e6094f09e98648341f452749532.json | 1 + ...06bd7f47576a85540570e1f223b6065bebfce.json | 1 + ...9370bc435d15e1fbbd72086f51bf65db34e40.json | 1 + ...1873f4b5bb65ecf127f44aa428485a8f85c3c.json | 1 + ...82b46c358f482ee5b54bdfb60e0099affce87.json | 1 + ...df0c56ca1b84add35698e4609147fdfb93682.json | 1 + ...da5021a2a7a7799c69656cdd39cdf1d88ec37.json | 1 + ...0188a4f027a5a6fdc21bb4267903896fe3d51.json | 1 + ...188cf7e95da29bd5299d52030f80aa9b688b5.json | 1 + ...269803714ba887b3c683880bf4d49891e66b5.json | 1 + ...da2830c5440da2867853bd9f9e7f0e2dbb466.json | 1 + ...19098d467042c2f013286983051a7ffac7274.json | 1 + ...c4f231d9423bfc268c7be0589fe599ddd8461.json | 1 + ...dd884890ae28f6895b74efa730be8c5838c5c.json | 1 + ...1daf6b92e3af1aeac756d94dc76a8a44b6841.json | 1 + ...cedf8a3b90d45728ec750262fcdeef9043257.json | 1 + ...93536cd31ba2d8c535faf405eac06fa7957d1.json | 1 + ...16b2b79acd36ae87b9c98cea67dabe487e9d5.json | 1 + ...44235ee68f8fd0e161f2faaa28e864085f70c.json | 1 + ...04dea1e10af9a5fc723ad6a9ca4cde4bf72c7.json | 1 + ...af630c3a29e226fcfb2589e71a242e5b9fe0b.json | 1 + ...394d1a69ba45069190a3bb42925b6a78fa125.json | 1 + ...ad6241c52979c140e7206f7e8ff6b8eebdb4e.json | 1 + ...ceae21e4dc426abc0fd3335da1ee7673afa77.json | 1 + ...598b1ab1169cba1eb22c370f99911fc066a3c.json | 1 + ...2e096535d6ae59e5791988dfa1825932016eb.json | 1 + ...46c0a95e4de3794359a176cae2cd9840c2bde.json | 1 + ...a7ad74004f3f0ff5a0cc85e8e0bf80e96fe61.json | 1 + ...ccdbd7b25e06a2b2ad27449bc2c20e87c0e15.json | 1 + ...9530154a3c4684b0c9797b9f94e2fa9b1fda6.json | 1 + ...55343fa4706719edd198ab05a18069161c9c1.json | 1 + ...d6da9cd6b937757dd01c46c9ce647df0d7c44.json | 1 + ...cce860c59f80865fb05aaa8b89fcde74b5163.json | 1 + ...e9879bfda5f3290a3ca1cd5da6f37d972b808.json | 1 + ...42569ac5268cd86d6e3008536ec97a7ad4dfc.json | 1 + ...4d80740ff383456b29aa8d8f7a4d140b7ee7f.json | 1 + ...f5d6a56be8afa1c3f4b530ea224dc66494931.json | 1 + ...c54ad9beaa596bda0f50de7bf90f8835d4588.json | 1 + ...b33653abd759b90ddca739ae3360c50179f1a.json | 1 + ...111c0e03559ea48e3e3f1f0001efa8e472af6.json | 1 + ...96921f3f1c26607f38633a7ce236f016bbed1.json | 1 + ...84ee0077d95cb3355750cbc4b1cccbea241f4.json | 1 + ...63bb31d1a3de855d2bc95f0eb730bbaf22231.json | 1 + ...07d7c051474fec9e50d2be76149770d7659a2.json | 1 + ...03c8f6c977c6abc657e2e400097e976aa3a03.json | 1 + ...82994c44cc4f8352886bf65dfd91aff21d1af.json | 1 + ...d708cea525bea66b89365f35dce3e02ca0afa.json | 1 + ...f67068afe368dddd1fc14597de09c3a372dc7.json | 1 + ...c8b1d5ddb5729f01a7259d8879412e43774ce.json | 1 + ...8e57181710b30ef746d6eee9d014a1e4444f6.json | 1 + ...0590041a00a99ad0b4e1286d447bde5d17a90.json | 1 + ...de8efd35b5bf90275ece0479b68d1c4ade5e5.json | 1 + ...d73f0d66f3a986312c7ce8199c90b54bd74f9.json | 1 + ...c50d03516474117eaaad42ee82ea56593e051.json | 1 + ...0b6d3a220bc2d4a76ba9541102610fa193e09.json | 1 + ...4a8cd7f709e99981f65ea511a4d41a092007f.json | 1 + ...bdad0694ef97e7dc842176254ffffb984d02b.json | 1 + ...5423d6cabf98db7fe1563f6dbaa43acdee728.json | 1 + ...064cc7621d1977abcc6db0981dbbd4e9ff408.json | 1 + ...714b94cbbfd6602cb6e2886ff19946fa77d92.json | 1 + ...a96adeb89b080ab1bd9f58fe072464fb44ae1.json | 1 + ...beec88481d2038094e0932c26061ca679295d.json | 1 + ...18ff9562e98b43ba8d4f83d7149d3b8b5933c.json | 1 + ...85ba6b9d96d75387a56ed75605e4a72e8eb91.json | 1 + ...d63ff30d55be451eeefa626c361a3cd551905.json | 1 + ...6860ddc403d7fccf6ca380868e4580fdbb552.json | 1 + ...f802639604563d31fab32f9a18b18fa2771bc.json | 1 + ...f89a27f853e9a9c045f44cf8eff97f4365e43.json | 1 + ...1ed9bc12716d0c98dc22ff28507df76418566.json | 1 + ...237b718cf3df0c9b551019abf9a7aa65ef1e3.json | 1 + ...627e7fb149612542a7606de62324d21e4bc1c.json | 1 + ...ded4d758638ba00f1b28b36cf07ff286a0698.json | 1 + ...ba96b031107bafc3194cdb290d8f27068a9d9.json | 1 + ...725ef88662e01ecf2c14514cd38b4bd06bfa2.json | 1 + ...74e4ba55b0d6eb7c427a12787ac839377cc5e.json | 1 + ...af80e0128358cac0a89c1da4741e6f49d034a.json | 1 + ...67bc891ec08ced7dc95b452a1f84471d3c23e.json | 1 + ...e19a755f5f28544aa58c2f79de9173aa923a2.json | 1 + ...d1e62c456d9028a954da4d5e28d3c6705ee05.json | 1 + ...c31b17fe78afc8f8996d6d745d48c6c1fd3da.json | 1 + ...dcbe13a591610311588b9886db8f1166f682c.json | 1 + ...356074e6379cdff51a1921a509931046de207.json | 1 + ...643a2fce831c869ee6abe9c29f5ea1798cea9.json | 1 + ...f7b9b599aaa26c9ccaab9db48896f7e02ca0a.json | 1 + ...eff69e8d42bf840b1c1cc16166115ecf64022.json | 1 + ...0cfdecc2d236c9e0ee174b7c6d6c4e2beca72.json | 1 + ...12eb3e5e6c62fea26712db6e08425f9516031.json | 1 + ...1010d4ede5a1ff8da4699c04ab5974d82fee9.json | 1 + ...df4f3d08bc920b7dcfd72deddb4eab75d659a.json | 1 + ...186332ae064f1bb22e7fb8b0988e4203059a6.json | 1 + ...2690fc032ebf27f93b0df88ddd5932317cf2e.json | 1 + ...0da638372d1884433b0bf64e23f421e72fe7d.json | 1 + ...25d14994e5ac041775332b139373381ec4625.json | 1 + ...bb8bd8fcf478bcc4feb0bf8ff4ac51c1aab3c.json | 1 + ...c74a4b04bb781c7943bf21f312de4cf6f7f46.json | 1 + ...879e5dfcaeca80f8c116c4e3d3e160da07f5a.json | 1 + ...d59ff792666b0b01ce9b1f028b0080502fb4e.json | 1 + ...7b41e1cbfa772161b00bcc365e2de732e2a74.json | 1 + ...4edb318f19c18e82eaebe25acc65f28c9101f.json | 1 + ...02df5a995d1ae3cf553b61bc7773bce033cec.json | 1 + ...5081d119aca259c2c0ea669cd90135fd81451.json | 1 + ...72832f04ce7bf391d726a20cc64cb633c77d5.json | 1 + ...a43731610ef099cdc0cce4dbe721e7ae9e272.json | 1 + ...3b94f91f5f58cac2ec05b2b7784e4d588cc15.json | 1 + ...005e4fc8c8d2628e26c4507fd00db2870524f.json | 1 + ...4bff642db962bca7412f68416c517c13ad44a.json | 1 + graphify-out/cache/stat-index.json | 1 + graphify-out/cost.json | 12 + graphify-out/graph.html | 307 + graphify-out/graph.json | 96093 ++++++++++++++++ graphify-out/manifest.json | 1212 + ...ƒ_requireroles_связывает_множество_контроллер.md | 23 + ...ектны_ли_inferred_связи_вокруг_schedulerule.md | 23 + graphify-out/reflections/LESSONS.md | 11 + resume/index.html | 407 + resume/script.js | 199 + resume/style.css | 1251 + 255 files changed, 110846 insertions(+), 22 deletions(-) create mode 100644 .agents/skills/graphify/.graphify_version create mode 100644 .agents/skills/graphify/SKILL.md create mode 100644 .agents/skills/graphify/references/add-watch.md create mode 100644 .agents/skills/graphify/references/exports.md create mode 100644 .agents/skills/graphify/references/extraction-spec.md create mode 100644 .agents/skills/graphify/references/github-and-merge.md create mode 100644 .agents/skills/graphify/references/hooks.md create mode 100644 .agents/skills/graphify/references/query.md create mode 100644 .agents/skills/graphify/references/transcribe.md create mode 100644 .agents/skills/graphify/references/update.md create mode 100644 .codex/graphify/.graphify_version create mode 100644 .codex/graphify/SKILL.md create mode 100644 .codex/graphify/references/add-watch.md create mode 100644 .codex/graphify/references/exports.md create mode 100644 .codex/graphify/references/extraction-spec.md create mode 100644 .codex/graphify/references/github-and-merge.md create mode 100644 .codex/graphify/references/hooks.md create mode 100644 .codex/graphify/references/query.md create mode 100644 .codex/graphify/references/transcribe.md create mode 100644 .codex/graphify/references/update.md create mode 100644 BUG_REPORT.md create mode 100644 graphify-out/.graphify_labels.json create mode 100644 graphify-out/.graphify_learning.json create mode 100644 graphify-out/.graphify_python create mode 100644 graphify-out/.graphify_root create mode 100644 graphify-out/.graphify_semantic_new.json create mode 100644 graphify-out/.graphify_uncached.txt create mode 100644 graphify-out/.vocab.txt create mode 100644 graphify-out/GRAPH_REPORT.md create mode 100644 graphify-out/cache/ast/v0.9.5/00e8de11bc0c6cd3b111cc5d23a2ab9d45f5ce85f3958e959fd0d7a6434042b8.json create mode 100644 graphify-out/cache/ast/v0.9.5/01d9ac60353eab5b8fd4841f4d6d5f3f82770e794b6ae283c577580dcc10c6aa.json create mode 100644 graphify-out/cache/ast/v0.9.5/03c20273155d83fcba886eee79a8f27e08517e30f5d342d352c408a0ea0e0a6e.json create mode 100644 graphify-out/cache/ast/v0.9.5/03eed484ebe217e695a18c94b18cb274b71aed05d9b8343d7b7c7ac4964a4e32.json create mode 100644 graphify-out/cache/ast/v0.9.5/057e3514c526f4cc6af4e30da4f8cd32f7f4ba09e25701c0780fff0aa3e66dee.json create mode 100644 graphify-out/cache/ast/v0.9.5/05c172c1c7f7a58a811a50375a1da580f2e0e51bf769258918ad51a75196a2de.json create mode 100644 graphify-out/cache/ast/v0.9.5/089c0f116ce32c7ce28586290192c4efd630fdf3421a9b9ed5140bb1f61ea811.json create mode 100644 graphify-out/cache/ast/v0.9.5/0cfd571b6f249e418ca9ec9a180954648216c4ef31dffab9c2e5988619859290.json create mode 100644 graphify-out/cache/ast/v0.9.5/0d9b338dacf75f1f6f0621354368a65d25b11663116210f41def5f50fb68de61.json create mode 100644 graphify-out/cache/ast/v0.9.5/0db665d6c6eca4782e69677b82d3d9f86742c0ffadb2de77c20fb30e3890917a.json create mode 100644 graphify-out/cache/ast/v0.9.5/0e999bd59b5d250c0bece30dd206e01cf20a5c0fe1b542d1038bf25507d8ab47.json create mode 100644 graphify-out/cache/ast/v0.9.5/0f5869ba55b9d0d5682a54a772394cc3de7a17898f37c7895cee16da9f89d5c5.json create mode 100644 graphify-out/cache/ast/v0.9.5/0f9efff6e0ade4f428d2c284060bb222a85dec4ba2d35a3ede28b3faab91de4f.json create mode 100644 graphify-out/cache/ast/v0.9.5/10ada20b4ba0b32024067451f1e4062ea4033d4a9308d84796cb08756b5aea50.json create mode 100644 graphify-out/cache/ast/v0.9.5/11030cfd22c4e67f17fed1d74f6e9b544e296008a83ac3ab64fef2684fdee86d.json create mode 100644 graphify-out/cache/ast/v0.9.5/11682a5717ad6bf6e2e7d6420920a2dd9de0fb74747b2f0e9fd79221f0d11c29.json create mode 100644 graphify-out/cache/ast/v0.9.5/1266e402e2a21e5b6702827a5e85902bec52eeb85a782b60772ace0169091776.json create mode 100644 graphify-out/cache/ast/v0.9.5/16767d94de4f4efa2e03785df6d91af0c4b858ed682dec012a87ca8aa09ca58c.json create mode 100644 graphify-out/cache/ast/v0.9.5/1a16672b8aa22ac47f48b946cd046d3efeed939ded371df696228e48e9122fb4.json create mode 100644 graphify-out/cache/ast/v0.9.5/1a7cdd080997208d5cfe554847b21c2a9ec9426167d9d5f29c5a7aa9fe0ccbb6.json create mode 100644 graphify-out/cache/ast/v0.9.5/1bea4c6dc64c6e76b9db1a813ccb1a88a4e63974f43156c4d2d76914de942d4e.json create mode 100644 graphify-out/cache/ast/v0.9.5/1c016b2e6724a54509d174964fd7285056735442da415d0cdc5494984060ae67.json create mode 100644 graphify-out/cache/ast/v0.9.5/1d59c074b4ef3295e98d261b0a00416a24e50a18fb08f615857ad03952bb5ddf.json create mode 100644 graphify-out/cache/ast/v0.9.5/1d99c8c855e34a234e8cc5e5ad8e080999d8e71d35685ebbc69d24dd2cde7f32.json create mode 100644 graphify-out/cache/ast/v0.9.5/2144f243b59a175b124c9a879dccf9b93e04ecb9f6b4c5ce47c7c44343f765cd.json create mode 100644 graphify-out/cache/ast/v0.9.5/23289c35f1a83692bf045f2011fca067b2cf0a02354475d99bc5a3a3d8d930a8.json create mode 100644 graphify-out/cache/ast/v0.9.5/2386d738714321a165d7e963ff04441317464a752c9353c22c012b3c5e8a7fb7.json create mode 100644 graphify-out/cache/ast/v0.9.5/25159b2e90f277736e32c9aa91411ada725d4d08b3ad0f59422a26dc6618bb0f.json create mode 100644 graphify-out/cache/ast/v0.9.5/25b25558d42f90bcb41fc388b4da3ff8479fd1cd402363311eb485e7740de83c.json create mode 100644 graphify-out/cache/ast/v0.9.5/265e8882226ba523ef0fbed53855eb1f447266da2c1cc9aabbfcfa600dd1708d.json create mode 100644 graphify-out/cache/ast/v0.9.5/26cfe58a92526814113d722c4e327325064fbb55454c5a96e2f22cfc5c6d6c3a.json create mode 100644 graphify-out/cache/ast/v0.9.5/286a291ec64bdf627ab35c0bc9102e08cc75ca8cdcad4fd33a9e7c60416ecd60.json create mode 100644 graphify-out/cache/ast/v0.9.5/287e722d1fe2973ff76ce34375777e50870fa8319bb09ee8794af9fc58754e7b.json create mode 100644 graphify-out/cache/ast/v0.9.5/28ba7d562e794df59b200d2e99b8d545164ce2c7481748835eac60e8d4722485.json create mode 100644 graphify-out/cache/ast/v0.9.5/2cb67d79d21668a671fd4429eface68b9b95cf0a8785e5e3720fcb469e94013e.json create mode 100644 graphify-out/cache/ast/v0.9.5/2ef9f466a55710d2bb8f525d28d2a08274c8392729be4740f84e7e953fa79b04.json create mode 100644 graphify-out/cache/ast/v0.9.5/30e0d7371208a0b2ff2b6590d9e1a9a873abab9dd8be29c27ebf6976ea3c2b02.json create mode 100644 graphify-out/cache/ast/v0.9.5/34c2662f7ecd86955d01c3b288826160272baf9939e24dda52422b128e9c9ac7.json create mode 100644 graphify-out/cache/ast/v0.9.5/36026b99fead0ca526cb10288628823c1b829e32ce3b304a5dcecfed1035cc77.json create mode 100644 graphify-out/cache/ast/v0.9.5/38f01279921dfa97f4b7140fa33b16f0864f2c6abda489c2de814252a1c7c2f1.json create mode 100644 graphify-out/cache/ast/v0.9.5/393627916badad02a78935fdc413f6b94d8aff45ad93693103f493812aaa3209.json create mode 100644 graphify-out/cache/ast/v0.9.5/39b85b44660c634b6a3a0554a659e9a047bb3029d120e1ababc02dcff0ed4eed.json create mode 100644 graphify-out/cache/ast/v0.9.5/39c830ee50866c6a59b6c3f45bd78b6b0fefd4df64133ac77ec6374610974201.json create mode 100644 graphify-out/cache/ast/v0.9.5/3b19eb3552131e5b548e9115de2c5fd3a05369987e8fef71c3299a365ae5883e.json create mode 100644 graphify-out/cache/ast/v0.9.5/3f5382455d54bacc0a443b73b98687a5a92c4735d276d696e9c2c23a99c41963.json create mode 100644 graphify-out/cache/ast/v0.9.5/40d4a4144f8397f24bc54c4c49b003524a7e603be5006f8381de30762361b5a1.json create mode 100644 graphify-out/cache/ast/v0.9.5/4118953ccde05732a1a8da9cfa48e92e8f30a0c79647c3975d9006f87a098daa.json create mode 100644 graphify-out/cache/ast/v0.9.5/42d267f52bf4650bbdf27d4d126aca688742962aea6fa341fa25d51142cb78f0.json create mode 100644 graphify-out/cache/ast/v0.9.5/44161c2f314305041961951286e809eff255ed97fbfb085ba8c76a88399add49.json create mode 100644 graphify-out/cache/ast/v0.9.5/48bec84b9c64abace6450c682f20b3088ea1668f667ab76fcc3c3db30609e464.json create mode 100644 graphify-out/cache/ast/v0.9.5/4957508b7abf013d3fc4442d63a5d0f63c6e8eecc704bee16d34e7d10fa011ed.json create mode 100644 graphify-out/cache/ast/v0.9.5/4a0b015e53d0471035ede7abc272344e3fb65624bac54dde2e0e3af02306afd5.json create mode 100644 graphify-out/cache/ast/v0.9.5/4b348d8dfbb5b02025bba15d599ad9eaf52e3515d3691620c0ab0e8c2ec016d1.json create mode 100644 graphify-out/cache/ast/v0.9.5/4b769a6e819b1ad546b2ffdb6ad8209b9d7423b9ac15d40ecd05846ce9a434b7.json create mode 100644 graphify-out/cache/ast/v0.9.5/4bc1fd931a220eb88c8c96d03ade862518c6c8360be75d1e4878626ca68ab2b4.json create mode 100644 graphify-out/cache/ast/v0.9.5/4f25a39ab97eeace71f1b2592240a62265e1922ce4f81ef7c24613ed5a2e8f9f.json create mode 100644 graphify-out/cache/ast/v0.9.5/50e1630b82a52ba814d45c241bd3d5bc583e8917b018561dc2ca86917efe42ff.json create mode 100644 graphify-out/cache/ast/v0.9.5/5182ef59450c1341546df9c6a101a4245b5a434a920b99ac12b573a71bbceaed.json create mode 100644 graphify-out/cache/ast/v0.9.5/53c1e6250ec2ad3fc4ac904bb7760adcb9ea16813e402426642d766a82e9a52a.json create mode 100644 graphify-out/cache/ast/v0.9.5/547edbbfd01dab052ccf1993a1bdeb86eec7fe934c014b419983b502c1368fec.json create mode 100644 graphify-out/cache/ast/v0.9.5/55ecfe3e7a1349b06309844be4feec3682157cc9def223de02fedbe4c6df738a.json create mode 100644 graphify-out/cache/ast/v0.9.5/59311a5b76a2fe30a70befcc102efb717b55781eea52a401286ad25d99c1a582.json create mode 100644 graphify-out/cache/ast/v0.9.5/5f0f0527f01153be5b9357670a8d007087a629ed52603e3fe0187059e7f903e2.json create mode 100644 graphify-out/cache/ast/v0.9.5/6547a0b78f8dbf1cbde5c1b6aef7bde174b5c01ceaf9c399eb05b5e1bac74ddd.json create mode 100644 graphify-out/cache/ast/v0.9.5/676d77671a8b80acbaf0ce3e22c67c56f408b90cb3ecc32013855fd56b7e2582.json create mode 100644 graphify-out/cache/ast/v0.9.5/6bfedbeef2e8e301e490a53364c0a9d1c6a85300d5e4d808170f3eaffd85bd70.json create mode 100644 graphify-out/cache/ast/v0.9.5/6d3d4c19048a0d015fbb7bcfce2d32336419f70fc89f48fed9b665f33561a913.json create mode 100644 graphify-out/cache/ast/v0.9.5/70bb21b1cb7dea8edbad217bf6305b6261a49ce5c81a41c78820e9315b899c64.json create mode 100644 graphify-out/cache/ast/v0.9.5/7478a9b9d307de997413b9cb7cb10697dc89bee2ea2687a706329ce59b8de678.json create mode 100644 graphify-out/cache/ast/v0.9.5/74c37a314146e6c69f7b84e526c9d33099e5ca779ada943e24e8c35a8247a9cd.json create mode 100644 graphify-out/cache/ast/v0.9.5/78c00b5cb43d8fa22d2feb0fa0d9b5211b8cbe442bebc4a340d8e565ce8948b1.json create mode 100644 graphify-out/cache/ast/v0.9.5/7b74a5e4c5813c385d0a032e78215d517a23b84548c3520f2dcbeef3c1cb2a71.json create mode 100644 graphify-out/cache/ast/v0.9.5/7bae527623bd4ee91f0d804ba7678d3080ce4138160e55670a2284a82bce2585.json create mode 100644 graphify-out/cache/ast/v0.9.5/7c20e6b22227e83ea48959d0db41a99cfea9e16c6a463fd44b2256d4b67e69e6.json create mode 100644 graphify-out/cache/ast/v0.9.5/7e7a69ed58f61b3f29394a9251f4964f99d2dcdaaf2bd02bcaffe5a0af80dac9.json create mode 100644 graphify-out/cache/ast/v0.9.5/80693ca800f2b820e42720530e52cf6eaa5cd020e2690a75d0ccf0cb4d6c23be.json create mode 100644 graphify-out/cache/ast/v0.9.5/82e38ae576fefa926edbbcd346d096ecaa0d8df9e419f3d068f8e9280cf923f3.json create mode 100644 graphify-out/cache/ast/v0.9.5/835b4f67d6e7d4be7ed949190f1e28ac9ace8d8b1e46838ff4da53dd2f0deace.json create mode 100644 graphify-out/cache/ast/v0.9.5/8607c4cafdfcf4fa0405efa4b186a4e7d74f148ef2fdd7a6ae48ebb2f9ffbdc2.json create mode 100644 graphify-out/cache/ast/v0.9.5/86432d09fd4e072147f125d971271298289a187b05deed370887df035bc6215e.json create mode 100644 graphify-out/cache/ast/v0.9.5/88a3f7b55ff957721d56dbb9303afdb73df99284f492261408c4c7ce7af5209a.json create mode 100644 graphify-out/cache/ast/v0.9.5/8922225fc0dbe262cc1dd7595a9dcc02b9cb6661b6315b19eca6897b7abdfbaf.json create mode 100644 graphify-out/cache/ast/v0.9.5/8af90083420ca5d8a3fea2fce3da05eb0d1a6724b1aeb40099d38fe695abfc58.json create mode 100644 graphify-out/cache/ast/v0.9.5/8bc030df9b291691f2cc470f0c15bf0495c0a0b204ab8e1880ce13e14344fbb2.json create mode 100644 graphify-out/cache/ast/v0.9.5/8caac7552948dc70f7ac2fd54032b9df6a7a5b8d8a9f4dad432092b2402b63e4.json create mode 100644 graphify-out/cache/ast/v0.9.5/8da9ecee1ec08c5bb553614a6ed0eda974ab54a99660514c5a07b8d9344e5ac6.json create mode 100644 graphify-out/cache/ast/v0.9.5/8ec23ac61eff33d020a3cb0f7f5721c0f40a9642fc4a845a9a76764ff443e856.json create mode 100644 graphify-out/cache/ast/v0.9.5/923d324b97db7c6400429fbf0e2fc0d3ab18d78230c94d020be545cc7bd43bec.json create mode 100644 graphify-out/cache/ast/v0.9.5/9478df3214f491838b7e9066acad39d734fdf523dfa941e8e71471546003ef4a.json create mode 100644 graphify-out/cache/ast/v0.9.5/95651757c3354557e9f9020ce9ed427ff58616d4b9472b2dc67d5d2881f2de03.json create mode 100644 graphify-out/cache/ast/v0.9.5/959e1381745900f960360d4b04937c6b812c01c8c1f010796b8c04be6a802484.json create mode 100644 graphify-out/cache/ast/v0.9.5/971c9f460dff5af36c7657f21d3a70f378c9d415c5035289021fb1170bf2f4aa.json create mode 100644 graphify-out/cache/ast/v0.9.5/9b0cf5a307b3ee53505953abd8ef0ba84c0357ca364c55737c2874b78c0ab83d.json create mode 100644 graphify-out/cache/ast/v0.9.5/9bbc927463b006a86722789bbbcf3b24646d77a3d703cbed81b4b2cf0d0193bb.json create mode 100644 graphify-out/cache/ast/v0.9.5/a30da6ed8f89d6ae54d16367c6a858e2cb63805d2a2c4c3e9b4e81223e921edc.json create mode 100644 graphify-out/cache/ast/v0.9.5/a490eeb4de5965ea87a969fc1d9224ad27e51faa3df40d353377aaaa6a7ea12a.json create mode 100644 graphify-out/cache/ast/v0.9.5/a56354c92e778ceacda1ed01facc2f38f0e0e93b4965da0c2d9c2c140eb23616.json create mode 100644 graphify-out/cache/ast/v0.9.5/a6b6fb3d678d1bc2c81884861b2ebccee131f533288b8f497cd1dea2fa918171.json create mode 100644 graphify-out/cache/ast/v0.9.5/a6fe5a669a29407387f4a470bf421e5b76db7bd7eb34708474a94e91f5e7894f.json create mode 100644 graphify-out/cache/ast/v0.9.5/a73eda6953d4bb6bdfded32ca69287ce0ef8b28525b09c29dcfa8291f54e3007.json create mode 100644 graphify-out/cache/ast/v0.9.5/a83fc0fa84b3fd73988cc2eebee0ee41444693efab397708a6d2705372ce5af8.json create mode 100644 graphify-out/cache/ast/v0.9.5/a9617d704b490595e0963de486fc21651f25608a37e9613b797d15fb1504e0b0.json create mode 100644 graphify-out/cache/ast/v0.9.5/aacc2599d9197ae3aa13be821741d1139e6dac363c574df68a5d5cfa77e1405f.json create mode 100644 graphify-out/cache/ast/v0.9.5/ab1975e88bebccd704a87c4ffff93b2eff4d0e9e703fd9048e9e261ffa752e7f.json create mode 100644 graphify-out/cache/ast/v0.9.5/ac34a2a98158b62313730d5d8b14acd2c95a9cc7d2f686176ca671ddfe2f972b.json create mode 100644 graphify-out/cache/ast/v0.9.5/ac68444e9cfedae3650952b82039f753db314fa8682f4269ccfedaf4e98fe93f.json create mode 100644 graphify-out/cache/ast/v0.9.5/ac8a3dab9e7e1fde4a8bbeaeb64ec71d2a631010b25d77a5e9f136a9e1cdecad.json create mode 100644 graphify-out/cache/ast/v0.9.5/b0af6daf86596dac582602616509b1a129fb8c5c7f18926d58f1431fd6442b4b.json create mode 100644 graphify-out/cache/ast/v0.9.5/b1968aea9603214305f7bb3e5e3b0ff05d2d7e6094f09e98648341f452749532.json create mode 100644 graphify-out/cache/ast/v0.9.5/b1b69f31bd2a1a9dba7926772b206bd7f47576a85540570e1f223b6065bebfce.json create mode 100644 graphify-out/cache/ast/v0.9.5/b284327f524071bc219daa3d0849370bc435d15e1fbbd72086f51bf65db34e40.json create mode 100644 graphify-out/cache/ast/v0.9.5/b34280a17941a1e66a16b4916811873f4b5bb65ecf127f44aa428485a8f85c3c.json create mode 100644 graphify-out/cache/ast/v0.9.5/b3688a3438336965040a4a8e29482b46c358f482ee5b54bdfb60e0099affce87.json create mode 100644 graphify-out/cache/ast/v0.9.5/b4ab949ae96d73acc8882efc60bdf0c56ca1b84add35698e4609147fdfb93682.json create mode 100644 graphify-out/cache/ast/v0.9.5/b4b483386882f50c054f21e8f8cda5021a2a7a7799c69656cdd39cdf1d88ec37.json create mode 100644 graphify-out/cache/ast/v0.9.5/b5bd4538cada8a2683b40996d2a0188a4f027a5a6fdc21bb4267903896fe3d51.json create mode 100644 graphify-out/cache/ast/v0.9.5/b8a22adcc580c23dec6a60b8ff0188cf7e95da29bd5299d52030f80aa9b688b5.json create mode 100644 graphify-out/cache/ast/v0.9.5/b9964788c4fa92cf94208d7af0d269803714ba887b3c683880bf4d49891e66b5.json create mode 100644 graphify-out/cache/ast/v0.9.5/b9c7865439db193a8a8dd698198da2830c5440da2867853bd9f9e7f0e2dbb466.json create mode 100644 graphify-out/cache/ast/v0.9.5/bd12d3db04c78d514ec10aaa2f919098d467042c2f013286983051a7ffac7274.json create mode 100644 graphify-out/cache/ast/v0.9.5/bf07ab2f446c732add756aea062c4f231d9423bfc268c7be0589fe599ddd8461.json create mode 100644 graphify-out/cache/ast/v0.9.5/bfe9c32ef2d10d80d38eed23b60dd884890ae28f6895b74efa730be8c5838c5c.json create mode 100644 graphify-out/cache/ast/v0.9.5/c11badd9f6abe4c8c89666e8bae1daf6b92e3af1aeac756d94dc76a8a44b6841.json create mode 100644 graphify-out/cache/ast/v0.9.5/c21b133c9613b7199787d1a1ddccedf8a3b90d45728ec750262fcdeef9043257.json create mode 100644 graphify-out/cache/ast/v0.9.5/c5e5292e47cd8aeebd8e91b1aef93536cd31ba2d8c535faf405eac06fa7957d1.json create mode 100644 graphify-out/cache/ast/v0.9.5/c9471440549598f2460dbb3359416b2b79acd36ae87b9c98cea67dabe487e9d5.json create mode 100644 graphify-out/cache/ast/v0.9.5/caf427b0a3d211bfe95579b4a2544235ee68f8fd0e161f2faaa28e864085f70c.json create mode 100644 graphify-out/cache/ast/v0.9.5/cc5d2d897bfda809ceb8d750b6c04dea1e10af9a5fc723ad6a9ca4cde4bf72c7.json create mode 100644 graphify-out/cache/ast/v0.9.5/cd226bd3d5bf0b6fbda2555676faf630c3a29e226fcfb2589e71a242e5b9fe0b.json create mode 100644 graphify-out/cache/ast/v0.9.5/ce58ebe0a2cf2329029fb5adae8394d1a69ba45069190a3bb42925b6a78fa125.json create mode 100644 graphify-out/cache/ast/v0.9.5/ceae897064e8c2e21f452f90273ad6241c52979c140e7206f7e8ff6b8eebdb4e.json create mode 100644 graphify-out/cache/ast/v0.9.5/cec1ec25f32d091d51d427c7a49ceae21e4dc426abc0fd3335da1ee7673afa77.json create mode 100644 graphify-out/cache/ast/v0.9.5/d089ed980c0c60fd352ddea7d30598b1ab1169cba1eb22c370f99911fc066a3c.json create mode 100644 graphify-out/cache/ast/v0.9.5/d0f69d372b91b6241ad38de003e2e096535d6ae59e5791988dfa1825932016eb.json create mode 100644 graphify-out/cache/ast/v0.9.5/d1a3c0544e8b7660e2c00fcf5a246c0a95e4de3794359a176cae2cd9840c2bde.json create mode 100644 graphify-out/cache/ast/v0.9.5/d1c1efee47504f84a1a34a1174fa7ad74004f3f0ff5a0cc85e8e0bf80e96fe61.json create mode 100644 graphify-out/cache/ast/v0.9.5/d319dc499991dcab92c9d0e0131ccdbd7b25e06a2b2ad27449bc2c20e87c0e15.json create mode 100644 graphify-out/cache/ast/v0.9.5/d3a0713b6c80856f0341e8eb0ce9530154a3c4684b0c9797b9f94e2fa9b1fda6.json create mode 100644 graphify-out/cache/ast/v0.9.5/d5a19f5d5aad38c53ea9130cf0755343fa4706719edd198ab05a18069161c9c1.json create mode 100644 graphify-out/cache/ast/v0.9.5/d60d317b6bb7e6d9b493499067dd6da9cd6b937757dd01c46c9ce647df0d7c44.json create mode 100644 graphify-out/cache/ast/v0.9.5/d703dd077feff0aa2c278dd7fddcce860c59f80865fb05aaa8b89fcde74b5163.json create mode 100644 graphify-out/cache/ast/v0.9.5/d9367be6b0af7d7af2384fddfc0e9879bfda5f3290a3ca1cd5da6f37d972b808.json create mode 100644 graphify-out/cache/ast/v0.9.5/db778026ef0b1a3424ac5b3f99a42569ac5268cd86d6e3008536ec97a7ad4dfc.json create mode 100644 graphify-out/cache/ast/v0.9.5/de045e07f8dee74796ba4fa28064d80740ff383456b29aa8d8f7a4d140b7ee7f.json create mode 100644 graphify-out/cache/ast/v0.9.5/de836e575475806685ba4f137b7f5d6a56be8afa1c3f4b530ea224dc66494931.json create mode 100644 graphify-out/cache/ast/v0.9.5/df9141b52f117a2b55e03a98af5c54ad9beaa596bda0f50de7bf90f8835d4588.json create mode 100644 graphify-out/cache/ast/v0.9.5/e08dafc17dc6fca4a01dacf9f8ab33653abd759b90ddca739ae3360c50179f1a.json create mode 100644 graphify-out/cache/ast/v0.9.5/e1646704403f9fa714c1e2c8133111c0e03559ea48e3e3f1f0001efa8e472af6.json create mode 100644 graphify-out/cache/ast/v0.9.5/e2788c00c62ec8dea26485571f596921f3f1c26607f38633a7ce236f016bbed1.json create mode 100644 graphify-out/cache/ast/v0.9.5/e3ba6f8ea997c75aff88d2da99984ee0077d95cb3355750cbc4b1cccbea241f4.json create mode 100644 graphify-out/cache/ast/v0.9.5/e5fb32ccd6b96c30b7ee8f6b5ad63bb31d1a3de855d2bc95f0eb730bbaf22231.json create mode 100644 graphify-out/cache/ast/v0.9.5/e85c89504dafbb0b863385b1cc507d7c051474fec9e50d2be76149770d7659a2.json create mode 100644 graphify-out/cache/ast/v0.9.5/e8d2b8511427830a9b574fdd45603c8f6c977c6abc657e2e400097e976aa3a03.json create mode 100644 graphify-out/cache/ast/v0.9.5/e9adf63725ace0ff0380cb4a13982994c44cc4f8352886bf65dfd91aff21d1af.json create mode 100644 graphify-out/cache/ast/v0.9.5/ea09fc348c675220c5720260a17d708cea525bea66b89365f35dce3e02ca0afa.json create mode 100644 graphify-out/cache/ast/v0.9.5/eaf1d03da73c5c0738658044f09f67068afe368dddd1fc14597de09c3a372dc7.json create mode 100644 graphify-out/cache/ast/v0.9.5/ebe1ebe0efd275c104dbdde1a72c8b1d5ddb5729f01a7259d8879412e43774ce.json create mode 100644 graphify-out/cache/ast/v0.9.5/f123890af1bd409b02d0dff44c18e57181710b30ef746d6eee9d014a1e4444f6.json create mode 100644 graphify-out/cache/ast/v0.9.5/f3c2e0a3d96a72e199821f0c1ed0590041a00a99ad0b4e1286d447bde5d17a90.json create mode 100644 graphify-out/cache/ast/v0.9.5/f520e9a8fa8cd7b3a2ea36ae0e2de8efd35b5bf90275ece0479b68d1c4ade5e5.json create mode 100644 graphify-out/cache/ast/v0.9.5/f5d40bd2d7b3a235a358c14eb1fd73f0d66f3a986312c7ce8199c90b54bd74f9.json create mode 100644 graphify-out/cache/ast/v0.9.5/f725738bee0191dbb098f835781c50d03516474117eaaad42ee82ea56593e051.json create mode 100644 graphify-out/cache/ast/v0.9.5/f780074f83ea0da3ffe0f31d4280b6d3a220bc2d4a76ba9541102610fa193e09.json create mode 100644 graphify-out/cache/ast/v0.9.5/f9f765f10868004c0a6ff2488b74a8cd7f709e99981f65ea511a4d41a092007f.json create mode 100644 graphify-out/cache/ast/v0.9.5/fb33a9b25cf6a2ab5b936660fa1bdad0694ef97e7dc842176254ffffb984d02b.json create mode 100644 graphify-out/cache/ast/v0.9.5/fc268b7d990d94fd110dad6d6975423d6cabf98db7fe1563f6dbaa43acdee728.json create mode 100644 graphify-out/cache/ast/v0.9.5/ff3851273041230b15d39b3122b064cc7621d1977abcc6db0981dbbd4e9ff408.json create mode 100644 graphify-out/cache/ast/v0.9.5/ffa074c174080e33f759e902458714b94cbbfd6602cb6e2886ff19946fa77d92.json create mode 100644 graphify-out/cache/semantic/03cb3b24fd230d64d15f36c5af1a96adeb89b080ab1bd9f58fe072464fb44ae1.json create mode 100644 graphify-out/cache/semantic/15a9d9065c1bb9bbbbadff87f1ebeec88481d2038094e0932c26061ca679295d.json create mode 100644 graphify-out/cache/semantic/173a76139b84ae48e45be7485c218ff9562e98b43ba8d4f83d7149d3b8b5933c.json create mode 100644 graphify-out/cache/semantic/1a20e690492ebe75e2010b6221d85ba6b9d96d75387a56ed75605e4a72e8eb91.json create mode 100644 graphify-out/cache/semantic/24b87c2c54b97822e5e74f04630d63ff30d55be451eeefa626c361a3cd551905.json create mode 100644 graphify-out/cache/semantic/33011a77448666247aa1746a8366860ddc403d7fccf6ca380868e4580fdbb552.json create mode 100644 graphify-out/cache/semantic/3413a0d0a09372987819d0bcf43f802639604563d31fab32f9a18b18fa2771bc.json create mode 100644 graphify-out/cache/semantic/4869a5ccf169032e9c15b6f1309f89a27f853e9a9c045f44cf8eff97f4365e43.json create mode 100644 graphify-out/cache/semantic/4b3431196d12bc8e7a5daac6ad11ed9bc12716d0c98dc22ff28507df76418566.json create mode 100644 graphify-out/cache/semantic/4d400563b1e9574d313773df7a7237b718cf3df0c9b551019abf9a7aa65ef1e3.json create mode 100644 graphify-out/cache/semantic/4d8a981d03c6584758a3b73a7cf627e7fb149612542a7606de62324d21e4bc1c.json create mode 100644 graphify-out/cache/semantic/5355390726e08345f7919f92703ded4d758638ba00f1b28b36cf07ff286a0698.json create mode 100644 graphify-out/cache/semantic/59109423780150add219ecad810ba96b031107bafc3194cdb290d8f27068a9d9.json create mode 100644 graphify-out/cache/semantic/5ca790c7c56079cd03f50229fa6725ef88662e01ecf2c14514cd38b4bd06bfa2.json create mode 100644 graphify-out/cache/semantic/60917d6ab3b7841b1270ddf0dd974e4ba55b0d6eb7c427a12787ac839377cc5e.json create mode 100644 graphify-out/cache/semantic/61bfeffa24fa77fea6208ef14daaf80e0128358cac0a89c1da4741e6f49d034a.json create mode 100644 graphify-out/cache/semantic/63bea36eac33009edd625210adb67bc891ec08ced7dc95b452a1f84471d3c23e.json create mode 100644 graphify-out/cache/semantic/87c3e71cd7bb465836bd53238f2e19a755f5f28544aa58c2f79de9173aa923a2.json create mode 100644 graphify-out/cache/semantic/89d881d5a2af905839681afcd82d1e62c456d9028a954da4d5e28d3c6705ee05.json create mode 100644 graphify-out/cache/semantic/8a24c26dee76ad948b77f02bd32c31b17fe78afc8f8996d6d745d48c6c1fd3da.json create mode 100644 graphify-out/cache/semantic/931b88c5ffe93ff26026fc36828dcbe13a591610311588b9886db8f1166f682c.json create mode 100644 graphify-out/cache/semantic/98a6c270ec5f6a8f06c7df05946356074e6379cdff51a1921a509931046de207.json create mode 100644 graphify-out/cache/semantic/9c3d33283424b07a83cd3191f3c643a2fce831c869ee6abe9c29f5ea1798cea9.json create mode 100644 graphify-out/cache/semantic/a6b42568da40f9bc47bb6935780f7b9b599aaa26c9ccaab9db48896f7e02ca0a.json create mode 100644 graphify-out/cache/semantic/a7aa3cd8a07df38deb64d6df843eff69e8d42bf840b1c1cc16166115ecf64022.json create mode 100644 graphify-out/cache/semantic/aaf739ac8899207e46a0074b4720cfdecc2d236c9e0ee174b7c6d6c4e2beca72.json create mode 100644 graphify-out/cache/semantic/af1ea61775a746d5b4dc2b7d2f812eb3e5e6c62fea26712db6e08425f9516031.json create mode 100644 graphify-out/cache/semantic/b5717d2b90d1b16d7477ae582a81010d4ede5a1ff8da4699c04ab5974d82fee9.json create mode 100644 graphify-out/cache/semantic/b69ef33646f7cf2557488304388df4f3d08bc920b7dcfd72deddb4eab75d659a.json create mode 100644 graphify-out/cache/semantic/b7dacf862e07335084136722148186332ae064f1bb22e7fb8b0988e4203059a6.json create mode 100644 graphify-out/cache/semantic/b8977d022748f50761df8cf99912690fc032ebf27f93b0df88ddd5932317cf2e.json create mode 100644 graphify-out/cache/semantic/bd75eb2d9a79b2e0b2644c207bd0da638372d1884433b0bf64e23f421e72fe7d.json create mode 100644 graphify-out/cache/semantic/c4cdcddcedd7401a0ff635c65a925d14994e5ac041775332b139373381ec4625.json create mode 100644 graphify-out/cache/semantic/ce615734115acd53c4e890d3513bb8bd8fcf478bcc4feb0bf8ff4ac51c1aab3c.json create mode 100644 graphify-out/cache/semantic/d032db5dfa1d6aa867e661e004bc74a4b04bb781c7943bf21f312de4cf6f7f46.json create mode 100644 graphify-out/cache/semantic/d97d60df564a6729fdacf1e8ff2879e5dfcaeca80f8c116c4e3d3e160da07f5a.json create mode 100644 graphify-out/cache/semantic/df73c720b4d9c911d9f747c5bf2d59ff792666b0b01ce9b1f028b0080502fb4e.json create mode 100644 graphify-out/cache/semantic/e0c5cad0c4a3a6378dabb4f827d7b41e1cbfa772161b00bcc365e2de732e2a74.json create mode 100644 graphify-out/cache/semantic/e272a8f70ac7fd99b9ebfd39f7d4edb318f19c18e82eaebe25acc65f28c9101f.json create mode 100644 graphify-out/cache/semantic/e3cad05cb5e6d7b60ae0356953c02df5a995d1ae3cf553b61bc7773bce033cec.json create mode 100644 graphify-out/cache/semantic/e4488f6e2b413860ef76d89c4ec5081d119aca259c2c0ea669cd90135fd81451.json create mode 100644 graphify-out/cache/semantic/ec1890719c6e211374fe9d1eef872832f04ce7bf391d726a20cc64cb633c77d5.json create mode 100644 graphify-out/cache/semantic/f8be56a7fdc945daecf9813c2cda43731610ef099cdc0cce4dbe721e7ae9e272.json create mode 100644 graphify-out/cache/semantic/fc48f4b9756d02b8a9ae0473e503b94f91f5f58cac2ec05b2b7784e4d588cc15.json create mode 100644 graphify-out/cache/semantic/fc9b6b123c914a3e309d6e0f649005e4fc8c8d2628e26c4507fd00db2870524f.json create mode 100644 graphify-out/cache/semantic/fdb7249b764178be2800b014d494bff642db962bca7412f68416c517c13ad44a.json create mode 100644 graphify-out/cache/stat-index.json create mode 100644 graphify-out/cost.json create mode 100644 graphify-out/graph.html create mode 100644 graphify-out/graph.json create mode 100644 graphify-out/manifest.json create mode 100644 graphify-out/memory/query_20260704_105757_почему_requireroles_связывает_множество_контроллер.md create mode 100644 graphify-out/memory/query_20260704_120728_корректны_ли_inferred_связи_вокруг_schedulerule.md create mode 100644 graphify-out/reflections/LESSONS.md create mode 100644 resume/index.html create mode 100644 resume/script.js create mode 100644 resume/style.css diff --git a/.agents/skills/graphify/.graphify_version b/.agents/skills/graphify/.graphify_version new file mode 100644 index 0000000..0383441 --- /dev/null +++ b/.agents/skills/graphify/.graphify_version @@ -0,0 +1 @@ +0.9.5 \ No newline at end of file diff --git a/.agents/skills/graphify/SKILL.md b/.agents/skills/graphify/SKILL.md new file mode 100644 index 0000000..e6e411e --- /dev/null +++ b/.agents/skills/graphify/SKILL.md @@ -0,0 +1,674 @@ +--- +name: graphify +description: "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools." +--- + +# /graphify + +Turn any folder of files into a navigable knowledge graph with community detection, an honest audit trail, and three outputs: interactive HTML, GraphRAG-ready JSON, and a plain-language GRAPH_REPORT.md. + +## Usage + +``` +/graphify # full pipeline on current directory → Obsidian vault +/graphify # full pipeline on specific path +/graphify https://github.com// # clone repo then run full pipeline on it +/graphify https://github.com// --branch # clone a specific branch +/graphify ... # clone multiple repos, build each, merge into one cross-repo graph +/graphify --mode deep # thorough extraction, richer INFERRED edges +/graphify --update # incremental - re-extract only new/changed files +/graphify --directed # build directed graph (preserves edge direction: source→target) +/graphify --whisper-model medium # use a larger Whisper model for better transcription accuracy +/graphify --cluster-only # rerun clustering on existing graph +/graphify --no-viz # skip visualization, just report + JSON +/graphify --html # (HTML is generated by default - this flag is a no-op) +/graphify --svg # also export graph.svg (embeds in Notion, GitHub) +/graphify --graphml # export graph.graphml (Gephi, yEd) +/graphify --neo4j # generate graphify-out/cypher.txt for Neo4j +/graphify --neo4j-push bolt://localhost:7687 # push directly to Neo4j +/graphify --falkordb # generate graphify-out/cypher.txt for FalkorDB +/graphify --falkordb-push falkordb://localhost:6379 # push directly to FalkorDB +/graphify --mcp # start MCP stdio server for agent access +/graphify --watch # watch folder, auto-rebuild on code changes (no LLM needed) +/graphify --wiki # build agent-crawlable wiki (index.md + one article per community) +/graphify --obsidian --obsidian-dir ~/vaults/my-project # write vault to custom path (e.g. existing vault) +/graphify add # fetch URL, save to ./raw, update graph +/graphify add --author "Name" # tag who wrote it +/graphify add --contributor "Name" # tag who added it to the corpus +/graphify query "" # BFS traversal - broad context +/graphify query "" --dfs # DFS - trace a specific path +/graphify query "" --budget 1500 # cap answer at N tokens +/graphify path "AuthModule" "Database" # shortest path between two concepts +/graphify explain "SwinTransformer" # plain-language explanation of a node +``` + +## What graphify is for + +Drop any folder of code, docs, papers, images, or video into graphify and get a queryable knowledge graph. Persistent across sessions, honest audit trail (EXTRACTED/INFERRED/AMBIGUOUS), community detection surfaces cross-document connections you wouldn't think to ask about. + +## What You Must Do When Invoked + +If the user invoked `/graphify --help` or `/graphify -h` (with no other arguments), print the contents of the `## Usage` section above verbatim and stop. Do not run any commands, do not detect files, do not default the path to `.`. Just print the Usage block and return. + +**Fast path — existing graph:** Before doing anything else, check whether `graphify-out/graph.json` exists. The expected location is `graphify-out/graph.json` relative to the **current working directory** (i.e. the project root where you are running commands). If it exists AND the user's request is a natural-language question about the codebase (e.g. "How does X work?", "What calls Y?", "Trace the data flow through Z") and NOT an explicit rebuild command (`--update`, `--cluster-only`, or a bare path/URL that implies fresh extraction): **skip Steps 1–5 entirely and jump straight to `## For /graphify query`.** Run `graphify query ""` immediately. Do not run detect. Do not check corpus size. Do not ask the user to narrow. The graph is already built — use it. + +If no path was given, use `.` (current directory). Do not ask the user for a path. + +If the path argument starts with `https://github.com/` or `http://github.com/`, treat it as a GitHub URL - run Step 0 before anything else, then continue with the resolved local path. + +Follow these steps in order. Do not skip steps. + +### Step 0 - GitHub repos and multi-path merge (only if a URL or several paths) + +Only when the path is one or more `https://github.com/...` URLs, or several local subfolders to merge. See `references/github-and-merge.md` for the clone, cross-repo merge, and monorepo flow, then continue with the resolved local path. A plain local path skips this step. + +### Step 1 - Ensure graphify is installed + +```bash +# Detect the correct Python interpreter (handles uv tool, pipx, venv, system installs) +PYTHON="" +GRAPHIFY_BIN=$(which graphify 2>/dev/null) +# 1. uv tool installs — most reliable on modern Mac/Linux +if [ -z "$PYTHON" ] && command -v uv >/dev/null 2>&1; then + _UV_PY=$(uv tool run graphifyy python -c "import sys; print(sys.executable)" 2>/dev/null) + if [ -n "$_UV_PY" ]; then PYTHON="$_UV_PY"; fi +fi +# 2. Read shebang from graphify binary (pipx and direct pip installs) +if [ -z "$PYTHON" ] && [ -n "$GRAPHIFY_BIN" ]; then + _SHEBANG=$(head -1 "$GRAPHIFY_BIN" | tr -d '#!') + case "$_SHEBANG" in + *[!a-zA-Z0-9/_.@-]*) ;; + *) "$_SHEBANG" -c "import graphify" 2>/dev/null && PYTHON="$_SHEBANG" ;; + esac +fi +# 3. Fall back to python3 +if [ -z "$PYTHON" ]; then PYTHON="python3"; fi +if ! "$PYTHON" -c "import graphify" 2>/dev/null; then + if command -v uv >/dev/null 2>&1; then + uv tool install --upgrade graphifyy -q 2>&1 | tail -3 + _UV_PY=$(uv tool run graphifyy python -c "import sys; print(sys.executable)" 2>/dev/null) + if [ -n "$_UV_PY" ]; then PYTHON="$_UV_PY"; fi + else + "$PYTHON" -m pip install graphifyy -q 2>/dev/null \ + || "$PYTHON" -m pip install graphifyy -q --break-system-packages 2>&1 | tail -3 + fi +fi +# Write interpreter path for all subsequent steps (persists across invocations) +mkdir -p graphify-out +"$PYTHON" -c "import sys; open('graphify-out/.graphify_python', 'w', encoding='utf-8').write(sys.executable)" +# Save scan root so `graphify update` (no args) knows where to look next time +echo "$(cd INPUT_PATH && pwd)" > graphify-out/.graphify_root +``` + +If the import succeeds, print nothing and move straight to Step 2. + +**In every subsequent bash block, replace `python3` with `$(cat graphify-out/.graphify_python)` to use the correct interpreter.** + +### Step 2 - Detect files + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from graphify.detect import detect +from pathlib import Path +result = detect(Path('INPUT_PATH')) +print(json.dumps(result, ensure_ascii=False)) +" > graphify-out/.graphify_detect.json +``` + +Replace INPUT_PATH with the actual path the user provided. Do NOT cat or print the JSON - read it silently and present a clean summary instead: + +``` +Corpus: X files · ~Y words + code: N files (.py .ts .go ...) + docs: N files (.md .txt ...) + papers: N files (.pdf ...) + images: N files + video: N files (.mp4 .mp3 ...) +``` + +Omit any category with 0 files from the summary. + +Then act on it: +- If `total_files` is 0: stop with "No supported files found in [path]." +- If `skipped_sensitive` is non-empty: mention file count skipped, not the file names. +- If `total_words` > 2,000,000 OR `total_files` > 500: show the warning. Then compute the top 5 first-level subdirectories by file count: + - Read `scan_root` from the detect JSON (always an absolute path to the resolved INPUT_PATH). + - Concatenate all file lists across all types (`code`, `document`, `paper`, `image`, `video`). + - Filter out any path that starts with `scan_root + "/graphify-out/"` to exclude converted sidecars. + - For each file, strip the `scan_root` prefix and take the first path component. Files directly in `scan_root` with no subdirectory count as `(root)`. + - If all files are in `(root)` with no subdirectories, do not ask to narrow — no subfolders exist. Instead suggest `--no-cluster` to skip the expensive clustering step and proceed. + - Otherwise rank by count, show the top 5 with file counts, then ask which subfolder to run on. Wait for the user's answer before proceeding. +- Otherwise: proceed directly to Step 2.5 if video files were detected, or Step 3 if not. + +### Step 2.5 - Video and audio (only if video files detected) + +Skip this step entirely if `detect` returned zero `video` files. When the corpus has video or audio, see `references/transcribe.md` to transcribe them to text first, then treat the transcripts as doc files in Step 3. + +### Step 3 - Extract entities and relationships + +**Before starting:** note whether `--mode deep` was given. You must pass `DEEP_MODE=true` to every subagent in Step B2 if it was. Track this from the original invocation - do not lose it. + +This step has two parts: **structural extraction** (deterministic, free) and **semantic extraction** (LLM, costs tokens). + +> **graphify needs no API key. Never ask the user for one, and never block on one.** Code is extracted structurally (AST) with no LLM and no key at all — a code-only corpus (the common `/graphify .` on a repo) skips semantic extraction entirely, so it needs nothing here: go straight to Part A and skip Part B. Semantic extraction (only for docs, papers, and images) uses Gemini **only if** `GEMINI_API_KEY`/`GOOGLE_API_KEY` is already set; otherwise the host agent itself is the LLM. graphify does **not** read `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or any other provider key. If you catch yourself about to prompt for, wait on, or stop because of a missing API key, that is a misread of this skill — proceed without one. + +**Before semantic extraction:** check whether `GEMINI_API_KEY` or `GOOGLE_API_KEY` is set. If neither is set, print this one-liner to the user: +> Tip: set `GEMINI_API_KEY` or `GOOGLE_API_KEY` to use Gemini for semantic extraction (`pip install 'graphifyy[gemini]'`). + +Print it once, then continue — do not wait for the user to supply a key. If `GEMINI_API_KEY` or `GOOGLE_API_KEY` IS set, use `graphify.llm.extract_corpus_parallel(files, backend="gemini")` for semantic extraction instead of dispatching subagents. The default Gemini model is `gemini-3-flash-preview`; set `GRAPHIFY_GEMINI_MODEL` or pass `--model` in headless CLI flows to override it. + +> **No other API keys are read.** When `GEMINI_API_KEY`/`GOOGLE_API_KEY` are unset, semantic extraction falls to the host agent itself — the running session is the LLM. On a host that dispatches subagents (e.g. Claude Code), dispatch them as written in Part B. On a host that runs the CLI directly in a terminal and cannot dispatch subagents, do not stall: a code-only corpus has no semantic work, so write the empty semantic file (Part B "Fast path") and continue to Part C; for a corpus with docs/papers/images, either set a Gemini key or extract those inline yourself, but in no case prompt for `ANTHROPIC_API_KEY` — that prompt is a misread of this skill. + +**Run Part A (AST) and Part B (semantic) in parallel. Dispatch all semantic subagents AND start AST extraction in the same message. Both can run simultaneously since they operate on different file types. Merge results in Part C as before.** + +Note: Parallelizing AST + semantic saves 5-15s on large corpora. AST is deterministic and fast; start it while subagents are processing docs/papers. + +#### Part A - Structural extraction for code files + +For any code files detected, run AST extraction in parallel with Part B subagents: + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from graphify.extract import collect_files, extract +from pathlib import Path +import json + +code_files = [] +detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +for f in detect.get('files', {}).get('code', []): + code_files.extend(collect_files(Path(f)) if Path(f).is_dir() else [Path(f)]) + +if code_files: + result = extract(code_files, cache_root=Path('INPUT_PATH')) + Path('graphify-out/.graphify_ast.json').write_text(json.dumps(result, indent=2, ensure_ascii=False), encoding=\"utf-8\") + print(f'AST: {len(result[\"nodes\"])} nodes, {len(result[\"edges\"])} edges') +else: + Path('graphify-out/.graphify_ast.json').write_text(json.dumps({'nodes':[],'edges':[],'input_tokens':0,'output_tokens':0}, ensure_ascii=False), encoding=\"utf-8\") + print('No code files - skipping AST extraction') +" +``` + +#### Part B - Semantic extraction (parallel subagents) + +**Fast path:** If detection found zero docs, papers, and images (code-only corpus), skip Part B entirely and go straight to Part C. AST handles code - there is nothing for semantic subagents to do. **First write an empty semantic file** so Part C's merge has its input (it reads `.graphify_semantic.json` unconditionally; without this a code-only run hits `FileNotFoundError`): + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +Path('graphify-out/.graphify_semantic.json').write_text(json.dumps({'nodes':[],'edges':[],'hyperedges':[],'input_tokens':0,'output_tokens':0}), encoding='utf-8') +" +``` + +**MANDATORY: You MUST use the Agent tool here. Reading files yourself one-by-one is forbidden - it is 5-10x slower. If you do not use the Agent tool you are doing this wrong.** + +Before dispatching subagents, print a timing estimate: +- Load `total_words` and file counts from `graphify-out/.graphify_detect.json` +- Estimate agents needed: `ceil(uncached_non_code_files / 22)` (chunk size is 20-25) +- Estimate time: ~45s per agent batch (they run in parallel, so total ≈ 45s × ceil(agents/parallel_limit)) +- Print: "Semantic extraction: ~N files → X agents, estimated ~Ys" + +**Step B0 - Check extraction cache first** + +Before dispatching any subagents, check which files already have cached extraction results: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from graphify.cache import check_semantic_cache +from pathlib import Path + +detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +# Only content files go to semantic extraction. Code is already covered structurally +# by the AST pass (Part A); flattening every category here makes subagents re-read +# every source file (#1392). Video is transcribed to a document in Step 2.5 first. +all_files = [f for cat in ('document', 'paper', 'image') for f in detect['files'].get(cat, [])] + +cached_nodes, cached_edges, cached_hyperedges, uncached = check_semantic_cache(all_files, root='INPUT_PATH') + +# Always (re)write the cache file: write hits, else DELETE any leftover from a prior +# run so Part C never merges a stale .graphify_cached.json (#1392). +if cached_nodes or cached_edges or cached_hyperedges: + Path('graphify-out/.graphify_cached.json').write_text(json.dumps({'nodes': cached_nodes, 'edges': cached_edges, 'hyperedges': cached_hyperedges}, ensure_ascii=False), encoding=\"utf-8\") +else: + Path('graphify-out/.graphify_cached.json').unlink(missing_ok=True) +Path('graphify-out/.graphify_uncached.txt').write_text('\n'.join(uncached), encoding=\"utf-8\") +print(f'Cache: {len(all_files)-len(uncached)} files hit, {len(uncached)} files need extraction') +" +``` + +Only dispatch subagents for files listed in `graphify-out/.graphify_uncached.txt`. If all files are cached, skip to Part C directly. + +**Step B1 - Split into chunks** + +Load files from `graphify-out/.graphify_uncached.txt`. Split into chunks of 20-25 files each. Each image gets its own chunk (vision needs separate context). When splitting, group files from the same directory together so related artifacts land in the same chunk and cross-file relationships are more likely to be extracted. + +**Step B2 - Dispatch ALL subagents in a single message (Codex)** + +> **Codex platform:** Uses `spawn_agent` + `wait_agent` + `close_agent` instead of the Agent tool. +> Requires `multi_agent = true` under `[features]` in `~/.codex/config.toml`. +> If `spawn_agent` is unavailable, tell the user to add that config and restart Codex. + +Call `spawn_agent` once per chunk — ALL in the same response so they run in parallel. Build the message by wrapping the extraction prompt in task-delegation framing: + +``` +spawn_agent(agent_type="worker", message="Your task is to perform the following. Follow the instructions below exactly.\n\n\n[extraction prompt, with FILE_LIST, CHUNK_NUM, TOTAL_CHUNKS, DEEP_MODE substituted]\n\n\nExecute this now. Output ONLY the structured JSON response.") +``` + +After all agents are dispatched, collect results sequentially in memory: +``` +result = wait_agent(handle); close_agent(handle) # repeat per handle +``` + +Parse each result as JSON. Accumulate nodes/edges/hyperedges across all results and write to `graphify-out/.graphify_semantic_new.json`. Codex collects in memory, so there are no per-chunk files on disk; the disk-based success checks in Step B3 do not apply — a chunk that returns invalid JSON is the failure signal instead. + +Subagent prompt template: + +See `references/extraction-spec.md` for the compact subagent prompt (rules, node-ID format, confidence rubric, hyperedge and vision rules, JSON schema). Load it only here, only when at least one chunk holds a doc, paper, or image; a pure-code corpus has skipped Part B and never reads it. Pass each agent that prompt verbatim with FILE_LIST, CHUNK_NUM, TOTAL_CHUNKS, and DEEP_MODE substituted, and have it return the JSON inline. + +**Step B3 - Collect, cache, and merge** + +Wait for all subagents. For each result: +- Check that `graphify-out/.graphify_chunk_NN.json` exists on disk — this is the success signal +- If the file exists and contains valid JSON with `nodes` and `edges`, include it and save to cache +- If the file is missing, the subagent was likely dispatched as read-only (Explore type) — print a warning: "chunk N missing from disk — subagent may have been read-only. Re-run with general-purpose agent." Do not silently skip. +- If a subagent failed or returned invalid JSON, print a warning and skip that chunk - do not abort + +If more than half the chunks failed or are missing, stop and tell the user to re-run and ensure `subagent_type="general-purpose"` is used. + +Merge all chunk files into `.graphify_semantic_new.json`. **After each Agent call completes, read the real token counts from the Agent tool result's `usage` field and write them back into the chunk JSON before merging** — the chunk JSON itself always has placeholder zeros. Then run: +```bash +$(cat graphify-out/.graphify_python) -c " +import json, glob +from pathlib import Path + +chunks = sorted(glob.glob('graphify-out/.graphify_chunk_*.json')) +all_nodes, all_edges, all_hyperedges = [], [], [] +total_in, total_out = 0, 0 +for c in chunks: + d = json.loads(Path(c).read_text(encoding=\"utf-8\")) + all_nodes += d.get('nodes', []) + all_edges += d.get('edges', []) + all_hyperedges += d.get('hyperedges', []) + total_in += d.get('input_tokens', 0) + total_out += d.get('output_tokens', 0) +Path('graphify-out/.graphify_semantic_new.json').write_text(json.dumps({ + 'nodes': all_nodes, 'edges': all_edges, 'hyperedges': all_hyperedges, + 'input_tokens': total_in, 'output_tokens': total_out, +}, indent=2, ensure_ascii=False), encoding=\"utf-8\") +print(f'Merged {len(chunks)} chunks: {total_in:,} in / {total_out:,} out tokens') +" +``` + +Save new results to cache: +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from graphify.cache import save_semantic_cache +from pathlib import Path + +new = json.loads(Path('graphify-out/.graphify_semantic_new.json').read_text(encoding=\"utf-8\")) if Path('graphify-out/.graphify_semantic_new.json').exists() else {'nodes':[],'edges':[],'hyperedges':[]} +saved = save_semantic_cache(new.get('nodes', []), new.get('edges', []), new.get('hyperedges', []), root='INPUT_PATH') +print(f'Cached {saved} files') +" +``` + +Merge cached + new results into `graphify-out/.graphify_semantic.json`: +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path + +cached = json.loads(Path('graphify-out/.graphify_cached.json').read_text(encoding=\"utf-8\")) if Path('graphify-out/.graphify_cached.json').exists() else {'nodes':[],'edges':[],'hyperedges':[]} +new = json.loads(Path('graphify-out/.graphify_semantic_new.json').read_text(encoding=\"utf-8\")) if Path('graphify-out/.graphify_semantic_new.json').exists() else {'nodes':[],'edges':[],'hyperedges':[]} + +all_nodes = cached['nodes'] + new.get('nodes', []) +all_edges = cached['edges'] + new.get('edges', []) +all_hyperedges = cached.get('hyperedges', []) + new.get('hyperedges', []) +seen = set() +deduped = [] +for n in all_nodes: + if n['id'] not in seen: + seen.add(n['id']) + deduped.append(n) + +merged = { + 'nodes': deduped, + 'edges': all_edges, + 'hyperedges': all_hyperedges, + 'input_tokens': new.get('input_tokens', 0), + 'output_tokens': new.get('output_tokens', 0), +} +Path('graphify-out/.graphify_semantic.json').write_text(json.dumps(merged, indent=2, ensure_ascii=False), encoding=\"utf-8\") +print(f'Extraction complete - {len(deduped)} nodes, {len(all_edges)} edges ({len(cached[\"nodes\"])} from cache, {len(new.get(\"nodes\",[]))} new)') +" +``` +Clean up temp files: `rm -f graphify-out/.graphify_cached.json graphify-out/.graphify_uncached.txt graphify-out/.graphify_semantic_new.json` + +#### Part C - Merge AST + semantic into final extraction + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from pathlib import Path + +ast = json.loads(Path('graphify-out/.graphify_ast.json').read_text(encoding=\"utf-8\")) +sem = json.loads(Path('graphify-out/.graphify_semantic.json').read_text(encoding=\"utf-8\")) + +# Merge: AST nodes first, semantic nodes deduplicated by id +seen = {n['id'] for n in ast['nodes']} +merged_nodes = list(ast['nodes']) +for n in sem['nodes']: + if n['id'] not in seen: + merged_nodes.append(n) + seen.add(n['id']) + +merged_edges = ast['edges'] + sem['edges'] +merged_hyperedges = sem.get('hyperedges', []) +merged = { + 'nodes': merged_nodes, + 'edges': merged_edges, + 'hyperedges': merged_hyperedges, + 'input_tokens': sem.get('input_tokens', 0), + 'output_tokens': sem.get('output_tokens', 0), +} +Path('graphify-out/.graphify_extract.json').write_text(json.dumps(merged, indent=2, ensure_ascii=False), encoding=\"utf-8\") +total = len(merged_nodes) +edges = len(merged_edges) +print(f'Merged: {total} nodes, {edges} edges ({len(ast[\"nodes\"])} AST + {len(sem[\"nodes\"])} semantic)') +" +``` + +### Step 4 - Build graph, cluster, analyze, generate outputs + +**Before starting:** the code blocks below pass `directed=IS_DIRECTED` to `build_from_json()`. Replace `IS_DIRECTED` with `True` if `--directed` was given (builds a `DiGraph` preserving edge direction source→target), otherwise `False` (the default undirected `Graph`). Substitute it the same way you substitute `INPUT_PATH` — do not leave the literal `IS_DIRECTED` in the code. + +```bash +mkdir -p graphify-out +$(cat graphify-out/.graphify_python) -c " +import sys, json +from graphify.build import build_from_json +from graphify.cluster import cluster, score_all +from graphify.analyze import god_nodes, surprising_connections, suggest_questions +from graphify.report import generate +from graphify.export import to_json +from pathlib import Path + +extraction = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +detection = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) + +# root= mirrors the --update runbook (#1361): relativize source_file to the same +# base so the full build and incremental --update never drift apart on re-extract. +G = build_from_json(extraction, root='INPUT_PATH', directed=IS_DIRECTED) +# Guard BEFORE any write: an empty extraction must not clobber a good graph.json / +# GRAPH_REPORT.md / analysis sidecar. Check immediately after build (#1392). +if G.number_of_nodes() == 0: + print('ERROR: Graph is empty - extraction produced no nodes.') + print('Possible causes: all files were skipped, binary-only corpus, or extraction failed.') + raise SystemExit(1) +communities = cluster(G) +cohesion = score_all(G, communities) +tokens = {'input': extraction.get('input_tokens', 0), 'output': extraction.get('output_tokens', 0)} +gods = god_nodes(G) +surprises = surprising_connections(G, communities) +labels = {cid: 'Community ' + str(cid) for cid in communities} +# Placeholder questions - regenerated with real labels in Step 5 +questions = suggest_questions(G, communities, labels) + +# Export FIRST and honor the #479 shrink-guard: to_json returns False (writing +# nothing) when the new graph is smaller than the existing graph.json. Only write +# GRAPH_REPORT.md + the analysis sidecar when the graph was actually written, so +# they never describe a graph that graph.json doesn't contain (#1392). +wrote = to_json(G, communities, 'graphify-out/graph.json') +if not wrote: + print('ERROR: refused to shrink graphify-out/graph.json (existing graph has more nodes; #479).') + print('If this shrink is intentional (you deleted files), re-run a full build with --force.') + raise SystemExit(1) +report = generate(G, communities, cohesion, labels, gods, surprises, detection, tokens, 'INPUT_PATH', suggested_questions=questions) +Path('graphify-out/GRAPH_REPORT.md').write_text(report, encoding=\"utf-8\") +analysis = { + 'communities': {str(k): v for k, v in communities.items()}, + 'cohesion': {str(k): v for k, v in cohesion.items()}, + 'gods': gods, + 'surprises': surprises, + 'questions': questions, +} +Path('graphify-out/.graphify_analysis.json').write_text(json.dumps(analysis, indent=2, ensure_ascii=False), encoding=\"utf-8\") +print(f'Graph: {G.number_of_nodes()} nodes, {G.number_of_edges()} edges, {len(communities)} communities') +" +``` + +If this step prints `ERROR: Graph is empty`, stop and tell the user what happened - do not proceed to labeling or visualization. + +Replace INPUT_PATH with the actual path. + +### Step 4.5 - Graph health check (read-only integrity gate) + +A non-destructive diagnostic on the extraction, before labeling. It surfaces edge collapse, dangling/missing endpoints, and self-loops — the silent-corruption modes of incremental updates and AST/LLM id mismatches. Read-only; never aborts. + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +from graphify.diagnostics import diagnose_extraction, format_diagnostic_report + +extraction = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +summary = diagnose_extraction(extraction, directed=IS_DIRECTED, root='INPUT_PATH') +print(format_diagnostic_report(summary)) +flags = [f'{summary[k]} {label}' for k, label in ( + ('dangling_endpoint_edges', 'dangling-endpoint edges'), + ('missing_endpoint_edges', 'missing-endpoint edges'), + ('self_loop_edges', 'self-loop edges'), + ('directed_same_endpoint_collapsed_edges', 'collapsed (directed) edges'), + ('undirected_same_endpoint_collapsed_edges', 'collapsed (undirected) edges'), +) if summary.get(k, 0)] +print('GRAPH HEALTH WARNING: ' + '; '.join(flags) + ' - graph may be incomplete/corrupt.' if flags else 'Graph health: OK (no dangling/missing/collapsed edges).') +" +``` + +Substitute `IS_DIRECTED` and `INPUT_PATH` as in Step 4. If a `GRAPH HEALTH WARNING` prints, surface it in the final summary (do not abort — the graph is still usable, but the integrity issue must be visible, per the Honesty Rules). + +### Step 5 - Label communities + +Read `graphify-out/.graphify_analysis.json`. For each community key, look at its node labels and write a 2-5 word plain-language name (e.g. "Attention Mechanism", "Training Pipeline", "Data Loading"). + +Then regenerate the report and save the labels for the visualizer: + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from graphify.build import build_from_json +from graphify.cluster import score_all +from graphify.analyze import god_nodes, surprising_connections, suggest_questions +from graphify.report import generate +from pathlib import Path + +extraction = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +detection = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +analysis = json.loads(Path('graphify-out/.graphify_analysis.json').read_text(encoding=\"utf-8\")) + +# root= as in Step 4 / the --update runbook (#1361) — same base for node-key parity. +G = build_from_json(extraction, root='INPUT_PATH', directed=IS_DIRECTED) +communities = {int(k): v for k, v in analysis['communities'].items()} +cohesion = {int(k): v for k, v in analysis['cohesion'].items()} +tokens = {'input': extraction.get('input_tokens', 0), 'output': extraction.get('output_tokens', 0)} + +# LABELS - replace these with the names you chose above +labels = LABELS_DICT + +# Regenerate questions with real community labels (labels affect question phrasing) +questions = suggest_questions(G, communities, labels) + +report = generate(G, communities, cohesion, labels, analysis['gods'], analysis['surprises'], detection, tokens, 'INPUT_PATH', suggested_questions=questions) +Path('graphify-out/GRAPH_REPORT.md').write_text(report, encoding=\"utf-8\") +Path('graphify-out/.graphify_labels.json').write_text(json.dumps({str(k): v for k, v in labels.items()}, ensure_ascii=False), encoding=\"utf-8\") +print('Report updated with community labels') +" +``` + +Replace `LABELS_DICT` with the actual dict you constructed (e.g. `{0: "Attention Mechanism", 1: "Training Pipeline"}`). +Replace INPUT_PATH with the actual path. + +### Step 6 - Generate Obsidian vault (opt-in) + HTML + +**Generate HTML always** (unless `--no-viz`). **Obsidian vault only if `--obsidian` was explicitly given** — skip it otherwise, it generates one file per node. + +If `--obsidian` was given: + +- If `--obsidian-dir ` was also given, pass it via `--dir`. Otherwise defaults to `graphify-out/obsidian`. + +```bash +graphify export obsidian +# or with custom dir: graphify export obsidian --dir ~/vaults/my-project +``` + +Generate the HTML graph (always, unless `--no-viz`): + +```bash +graphify export html # auto-aggregates to community view if graph > 5000 nodes +# or: graphify export html --no-viz +``` + +### Steps 6b-8 - Wiki, Neo4j, FalkorDB, SVG, GraphML, MCP, benchmark (only on their flags) + +These run only when their flag is present (`--wiki`, `--neo4j`/`--neo4j-push`, `--falkordb`/`--falkordb-push`, `--svg`, `--graphml`, `--mcp`) or, for the token-reduction benchmark, when `total_words` exceeds 5,000. A default run with no export flags skips all of them. See `references/exports.md` for each one. Run any `--wiki` export before Step 9 cleanup so `.graphify_labels.json` is still available. + +--- + +### Step 9 - Save manifest, update cost tracker, clean up, and report + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +from datetime import datetime, timezone +from graphify.detect import save_manifest + +# Save manifest for --update +detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +# In --update mode, 'all_files' carries the full corpus; 'files' is the changed +# subset. Full-rebuild mode populates only 'files', so the fallback handles that. +# root= relativizes the manifest keys to the scan root (same base as the build), +# so the on-disk manifest is portable across clones/machines and a later --update +# matches cached files instead of missing every one (#1417). +save_manifest(detect.get('all_files') or detect['files'], root='INPUT_PATH') + +# Update cumulative cost tracker +extract = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +input_tok = extract.get('input_tokens', 0) +output_tok = extract.get('output_tokens', 0) + +cost_path = Path('graphify-out/cost.json') +if cost_path.exists(): + cost = json.loads(cost_path.read_text(encoding=\"utf-8\")) +else: + cost = {'runs': [], 'total_input_tokens': 0, 'total_output_tokens': 0} + +cost['runs'].append({ + 'date': datetime.now(timezone.utc).isoformat(), + 'input_tokens': input_tok, + 'output_tokens': output_tok, + 'files': detect.get('total_files', 0), +}) +cost['total_input_tokens'] += input_tok +cost['total_output_tokens'] += output_tok +cost_path.write_text(json.dumps(cost, indent=2, ensure_ascii=False), encoding=\"utf-8\") + +print(f'This run: {input_tok:,} input tokens, {output_tok:,} output tokens') +print(f'All time: {cost[\"total_input_tokens\"]:,} input, {cost[\"total_output_tokens\"]:,} output ({len(cost[\"runs\"])} runs)') +" +rm -f graphify-out/.graphify_detect.json graphify-out/.graphify_extract.json graphify-out/.graphify_ast.json graphify-out/.graphify_semantic.json graphify-out/.graphify_analysis.json +find graphify-out -maxdepth 1 -name '.graphify_chunk_*.json' -delete 2>/dev/null +rm -f graphify-out/.needs_update 2>/dev/null || true +``` + +Replace INPUT_PATH with the actual path (same value used in Steps 4-5) so the manifest is relativized to the scan root. + +Tell the user (omit the obsidian line unless --obsidian was given): +``` +Graph complete. Outputs in PATH_TO_DIR/graphify-out/ + + graph.html - interactive graph, open in browser + GRAPH_REPORT.md - audit report + graph.json - raw graph data + obsidian/ - Obsidian vault (only if --obsidian was given) +``` + +If graphify saved you time, consider supporting it: https://github.com/sponsors/safishamsi + +Replace PATH_TO_DIR with the actual absolute path of the directory that was processed. + +Then paste these sections from GRAPH_REPORT.md directly into the chat: +- God Nodes +- Surprising Connections +- Suggested Questions + +Do NOT paste the full report - just those three sections. Keep it concise. + +Then immediately offer to explore. Pick the single most interesting suggested question from the report - the one that crosses the most community boundaries or has the most surprising bridge node - and ask: + +> "The most interesting question this graph can answer: **[question]**. Want me to trace it?" + +If the user says yes, run `/graphify query "[question]"` on the graph and walk them through the answer using the graph structure - which nodes connect, which community boundaries get crossed, what the path reveals. Keep going as long as they want to explore. Each answer should end with a natural follow-up ("this connects to X - want to go deeper?") so the session feels like navigation, not a one-shot report. + +The graph is the map. Your job after the pipeline is to be the guide. + +--- + +## Interpreter guard for subcommands + +Before running any subcommand below (`--update`, `--cluster-only`, `query`, `path`, `explain`, `add`), check that `.graphify_python` exists. If it's missing (e.g. user deleted `graphify-out/`), re-resolve the interpreter first: + +```bash +if [ ! -f graphify-out/.graphify_python ]; then + GRAPHIFY_BIN=$(which graphify 2>/dev/null) + if [ -n "$GRAPHIFY_BIN" ]; then + PYTHON=$(head -1 "$GRAPHIFY_BIN" | tr -d '#!') + case "$PYTHON" in *[!a-zA-Z0-9/_.@-]*) PYTHON="python3" ;; esac + else + PYTHON="python3" + fi + mkdir -p graphify-out + "$PYTHON" -c "import sys; open('graphify-out/.graphify_python', 'w', encoding='utf-8').write(sys.executable)" +fi +``` + +## For --update and --cluster-only + +Both are non-default subcommands. `--update` re-extracts only new or changed files; `--cluster-only` reruns clustering on the existing graph. See `references/update.md` for both flows. + +--- + +## For /graphify query + +When `graphify-out/graph.json` already exists and the user asks a question about the corpus, answer from the graph rather than rebuilding it: + +```bash +graphify query "" +``` + +Before traversal, expand the question against the graph's own vocabulary so a wording mismatch does not collapse the answer to noise. If the `graphify query` CLI is unavailable, fall back to an inline NetworkX traversal of `graphify-out/graph.json`. Answer using only what the graph output contains, and quote `source_location` when citing a specific fact. For that vocab-expansion step, the BFS/DFS traversal modes, the `--budget` cap, the NetworkX fallback, `save-result` feedback, and the `/graphify path` and `/graphify explain` flows, see `references/query.md`. + +--- + +## For /graphify add and --watch + +Neither is part of the default build. When the user runs `/graphify add ` to fetch a URL into the corpus, or passes `--watch` to auto-rebuild on file changes, see `references/add-watch.md`. + +--- + +## For the commit hook and native CLAUDE.md integration + +When the user asks to install the post-commit auto-rebuild hook or wire graphify into a project's CLAUDE.md, see `references/hooks.md`. + +--- + +## Honesty Rules + +- Never invent an edge. If unsure, use AMBIGUOUS. +- Never skip the corpus check warning. +- Always show token cost in the report. +- Never hide cohesion scores behind symbols - show the raw number. +- Never run HTML viz on a graph with more than 5,000 nodes without warning the user. diff --git a/.agents/skills/graphify/references/add-watch.md b/.agents/skills/graphify/references/add-watch.md new file mode 100644 index 0000000..7784434 --- /dev/null +++ b/.agents/skills/graphify/references/add-watch.md @@ -0,0 +1,56 @@ +# graphify reference: add a URL and watch a folder + +Load this when the user ran `/graphify add ` or passed `--watch`. Neither is part of the default build. + +## For /graphify add + +Fetch a URL and add it to the corpus, then update the graph. + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys +from graphify.ingest import ingest +from pathlib import Path + +try: + out = ingest('URL', Path('./raw'), author='AUTHOR', contributor='CONTRIBUTOR') + print(f'Saved to {out}') +except ValueError as e: + print(f'error: {e}', file=sys.stderr) + sys.exit(1) +except RuntimeError as e: + print(f'error: {e}', file=sys.stderr) + sys.exit(1) +" +``` + +Replace `URL` with the actual URL, `AUTHOR` with the user's name if provided, `CONTRIBUTOR` likewise. If the command exits with an error, tell the user what went wrong - do not silently continue. After a successful save, automatically run the `--update` pipeline on `./raw` to merge the new file into the existing graph. + +Supported URL types (auto-detected): +- YouTube / any video URL → audio downloaded via yt-dlp, transcribed to `.txt` on next run (requires `pip install 'graphifyy[video]'`) +- Twitter/X → fetched via oEmbed, saved as `.md` with tweet text and author +- arXiv → abstract + metadata saved as `.md` +- PDF → downloaded as `.pdf` +- Images (.png/.jpg/.webp) → downloaded, Claude vision extracts on next run +- Any webpage → converted to markdown via html2text + +--- + +## For --watch + +Start a background watcher that monitors a folder and auto-updates the graph when files change. + +```bash +$(cat graphify-out/.graphify_python) -m graphify.watch INPUT_PATH --debounce 3 +``` + +Replace INPUT_PATH with the folder to watch. Behavior depends on what changed: + +- **Code files only (.py, .ts, .go, etc.):** re-runs AST extraction + rebuild + cluster immediately, no LLM needed. `graph.json` and `GRAPH_REPORT.md` are updated automatically. +- **Docs, papers, or images:** writes a `graphify-out/needs_update` flag and prints a notification to run `/graphify --update` (LLM semantic re-extraction required). + +Debounce (default 3s): waits until file activity stops before triggering, so a wave of parallel agent writes doesn't trigger a rebuild per file. + +Press Ctrl+C to stop. + +For agentic workflows: run `--watch` in a background terminal. Code changes from agent waves are picked up automatically between waves. If agents are also writing docs or notes, you'll need a manual `/graphify --update` after those waves. diff --git a/.agents/skills/graphify/references/exports.md b/.agents/skills/graphify/references/exports.md new file mode 100644 index 0000000..242ff86 --- /dev/null +++ b/.agents/skills/graphify/references/exports.md @@ -0,0 +1,87 @@ +# graphify reference: extra exports and benchmark + +Load this when the user passed one of the export flags (`--wiki`, `--neo4j`, `--neo4j-push`, `--falkordb`, `--falkordb-push`, `--svg`, `--graphml`, `--mcp`), or when the corpus is large enough for the token-reduction benchmark. Each step runs only for its own flag. + +### Step 6b - Wiki (only if --wiki flag) + +**Only run this step if `--wiki` was explicitly given in the original command.** + +Run this before Step 9 (cleanup) so `.graphify_labels.json` is still available. + +```bash +graphify export wiki +``` + +### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag) + +**If `--neo4j`** - generate a Cypher file for manual import: + +```bash +graphify export neo4j +``` + +**If `--neo4j-push `** - push directly to a running Neo4j instance. Ask the user for credentials if not provided: + +```bash +graphify export neo4j --push bolt://localhost:7687 --user neo4j --password PASSWORD +``` + +Default URI is `bolt://localhost:7687`, default user is `neo4j`. Uses MERGE - safe to re-run without creating duplicates. + +### Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag) + +**If `--falkordb`** - generate a Cypher file. The statements are OpenCypher, but FalkorDB's `GRAPH.QUERY` runs one statement at a time (no bulk script import like Neo4j's `cypher-shell`), so prefer `--falkordb-push` to load a graph. Use this only when you want the portable `cypher.txt` artifact: + +```bash +graphify export falkordb +``` + +**If `--falkordb-push `** - push directly to a running FalkorDB instance. Credentials are optional; ask the user only if the instance requires auth: + +```bash +graphify export falkordb --push falkordb://localhost:6379 +``` + +Default URI is `falkordb://localhost:6379` (the scheme is informational - `redis://` or a bare `host:port` work too), auth is optional, and the target graph defaults to `graphify`. Uses MERGE - safe to re-run without creating duplicates. + +### Step 7b - SVG export (only if --svg flag) + +```bash +graphify export svg +``` + +### Step 7c - GraphML export (only if --graphml flag) + +```bash +graphify export graphml +``` + +### Step 7d - MCP server (only if --mcp flag) + +```bash +$(cat graphify-out/.graphify_python) -m graphify.serve graphify-out/graph.json +``` + +This starts a stdio MCP server that exposes tools: `query_graph`, `get_node`, `get_neighbors`, `get_community`, `god_nodes`, `graph_stats`, `shortest_path`. Add to Claude Desktop or any MCP-compatible agent orchestrator so other agents can query the graph live. + +To configure in Claude Desktop, add to `claude_desktop_config.json`. Claude Desktop can't run `$(...)`, and under `uv tool install` the system `python3` can't import graphify — so set `command` to the **absolute interpreter path** printed by `cat graphify-out/.graphify_python`: +```json +{ + "mcpServers": { + "graphify": { + "command": "", + "args": ["-m", "graphify.serve", "/absolute/path/to/graphify-out/graph.json"] + } + } +} +``` + +### Step 8 - Token reduction benchmark (only if total_words > 5000) + +If `total_words` from `graphify-out/.graphify_detect.json` is greater than 5,000, run: + +```bash +graphify benchmark +``` + +Print the output directly in chat. If `total_words <= 5000`, skip silently - the graph value is structural clarity, not token compression, for small corpora. diff --git a/.agents/skills/graphify/references/extraction-spec.md b/.agents/skills/graphify/references/extraction-spec.md new file mode 100644 index 0000000..4b278b2 --- /dev/null +++ b/.agents/skills/graphify/references/extraction-spec.md @@ -0,0 +1,31 @@ +# graphify reference: extraction subagent prompt (compact) + +Load this in Step 3 Part B when the corpus has at least one doc, paper, or image chunk. A pure-code corpus skips Part B and never reads this file. Each semantic subagent receives the prompt below verbatim (substitute FILE_LIST, CHUNK_NUM, TOTAL_CHUNKS, and DEEP_MODE). + +``` +You are a graphify extraction subagent. Read the files listed and extract a knowledge graph fragment. +Output ONLY valid JSON matching the schema below - no explanation, no markdown fences, no preamble. + +Files (chunk CHUNK_NUM of TOTAL_CHUNKS): +FILE_LIST + +Rules: +- EXTRACTED: relationship explicit in source (import, call, citation) +- INFERRED: reasonable inference (shared structure, implied dependency) +- AMBIGUOUS: uncertain — flag it, do not omit +- Code files: semantic edges AST cannot find. Do not re-extract imports. When adding `calls` edges: source is the caller, target is the callee, never reversed; keep `calls` within one language. +- Doc/paper files: named concepts, entities, citations. Store rationale (WHY decisions were made) as a `rationale` attribute on the relevant node, not as a separate node. Use `file_type:"rationale"` for concept-like nodes (ideas, principles, mechanisms) and `file_type:"concept"` for named concepts. `file_type` MUST be one of exactly these six values: `code`, `document`, `paper`, `image`, `rationale`, `concept`. Any other value is invalid and will be rejected. +- Image files: use vision — understand what the image IS, not just OCR +- DEEP_MODE (if --mode deep): be aggressive with INFERRED edges — indirect deps, shared assumptions, latent couplings. Mark uncertain ones AMBIGUOUS instead of omitting. +- Semantic similarity: if two concepts solve the same problem or represent the same idea without a structural link (no import, call, or citation), add a `semantically_similar_to` edge marked INFERRED with confidence_score 0.6-0.95. Non-obvious cross-file links only. +- Hyperedges: if 3+ nodes share a concept, flow, or pattern not captured by pairwise edges, add a hyperedge to a top-level `hyperedges` array. Use sparingly. Max 3 per chunk. +- If a file has YAML frontmatter (--- ... ---), copy source_url, captured_at, author, contributor onto every node from that file. +- confidence_score is REQUIRED on every edge — never omit it, never use 0.5 as a default. EXTRACTED = 1.0 always. INFERRED: pick exactly ONE of 0.95 (direct structural evidence), 0.85 (strong inference), 0.75 (reasonable inference), 0.65 (weak inference), 0.55 (speculative but plausible) — never 0.5; if none fit, mark the edge AMBIGUOUS. AMBIGUOUS = 0.1-0.3. + +Node ID format: lowercase, only `[a-z0-9_]`, no dots or slashes. Format `{stem}_{entity}` where stem is the full repo-relative path with the extension dropped, every segment joined with `_` (each lowercased with non-alphanumeric chars replaced by `_`) and entity is the symbol name similarly normalized. Use every directory level, not just the immediate parent. `src/auth/session.py` + `ValidateToken` → `src_auth_session_validatetoken`. Top-level files use just the filename stem. This must match the AST extractor's ID. Never append chunk or sequence suffixes — IDs must be deterministic from the label alone. + +Output exactly this JSON (no other text): +{"nodes":[{"id":"auth_session_validatetoken","label":"Human Readable Name","file_type":"code|document|paper|image|rationale|concept","source_file":"","source_location":null,"source_url":null,"captured_at":null,"author":null,"contributor":null}],"edges":[{"source":"node_id","target":"node_id","relation":"calls|implements|references|cites|conceptually_related_to|shares_data_with|semantically_similar_to|rationale_for","confidence":"EXTRACTED|INFERRED|AMBIGUOUS","confidence_score":1.0,"source_file":"","source_location":null,"weight":1.0}],"hyperedges":[{"id":"snake_case_id","label":"Human Readable Label","nodes":["node_id1","node_id2","node_id3"],"relation":"participate_in|implement|form","confidence":"EXTRACTED|INFERRED","confidence_score":0.75,"source_file":""}],"input_tokens":0,"output_tokens":0} + +source_file RULE: set source_file to the FILE_LIST path for that file VERBATIM (absolute, no shortening to basename, no re-relativizing, no separator change). Keeps full build and --update on one base so build_merge's replace matches instead of duplicating. +``` diff --git a/.agents/skills/graphify/references/github-and-merge.md b/.agents/skills/graphify/references/github-and-merge.md new file mode 100644 index 0000000..a41ea06 --- /dev/null +++ b/.agents/skills/graphify/references/github-and-merge.md @@ -0,0 +1,46 @@ +# graphify reference: GitHub clone and cross-repo merge + +Load this when the user passed one or more `https://github.com/...` URLs, or named several local subfolders to merge into one graph. + +### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given) + +**Single repo:** +```bash +LOCAL_PATH=$(graphify clone [--branch ]) +# Use LOCAL_PATH as the target for all subsequent steps +``` + +**Multiple repos (cross-repo graph):** +```bash +# Clone each repo, run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// +graphify clone # → ~/.graphify/repos// +# Run /graphify on each local path to produce their graph.json files +# Then merge: +graphify merge-graphs \ + ~/.graphify/repos///graphify-out/graph.json \ + ~/.graphify/repos///graphify-out/graph.json \ + --out graphify-out/cross-repo-graph.json +``` + +Graphify clones into `~/.graphify/repos//` and reuses existing clones on repeat runs. Each node in the merged graph carries a `repo` attribute so you can filter by origin. + +**Multiple local subfolders (monorepo or multi-service layout):** + +The skill pipeline writes all intermediate and final outputs to `graphify-out/` in the current working directory. Running the skill on each subfolder separately will clobber the same output dir. Instead, use the CLI directly for each subfolder — it places `graphify-out/` *inside* the scanned path: + +```bash +graphify extract ./core/ # → ./core/graphify-out/graph.json +graphify extract ./service/ # → ./service/graphify-out/graph.json +graphify extract ./platform/ # → ./platform/graphify-out/graph.json +# Add --backend gemini|kimi|openai|deepseek|claude-cli depending on which API key you have set + +# Then merge at the project root: +graphify merge-graphs \ + ./core/graphify-out/graph.json \ + ./service/graphify-out/graph.json \ + ./platform/graphify-out/graph.json \ + --out graphify-out/graph.json +``` + +Once `graphify-out/graph.json` exists, the fast path above takes over: any codebase question runs `graphify query` directly on the merged graph — no re-extraction, no size gate. diff --git a/.agents/skills/graphify/references/hooks.md b/.agents/skills/graphify/references/hooks.md new file mode 100644 index 0000000..438b8b1 --- /dev/null +++ b/.agents/skills/graphify/references/hooks.md @@ -0,0 +1,33 @@ +# graphify reference: commit hook and native CLAUDE.md integration + +Load this when the user asked to install the post-commit hook or wire graphify into a project's CLAUDE.md. + +## For git commit hook + +Install a post-commit hook that auto-rebuilds the graph after every commit. No background process needed - triggers once per commit, works with any editor. + +```bash +graphify hook install # install +graphify hook uninstall # remove +graphify hook status # check +``` + +After every `git commit`, the hook detects which code files changed (via `git diff HEAD~1`), re-runs AST extraction on those files, and rebuilds `graph.json` and `GRAPH_REPORT.md`. Doc/image changes are ignored by the hook - run `/graphify --update` manually for those. + +If a post-commit hook already exists, graphify appends to it rather than replacing it. + +--- + +## For native CLAUDE.md integration + +Run once per project to make graphify always-on in Claude Code sessions: + +```bash +graphify claude install +``` + +This writes a `## graphify` section to the local `CLAUDE.md` that instructs Claude to check the graph before answering codebase questions and rebuild it after code changes. No manual `/graphify` needed in future sessions. + +```bash +graphify claude uninstall # remove the section +``` diff --git a/.agents/skills/graphify/references/query.md b/.agents/skills/graphify/references/query.md new file mode 100644 index 0000000..52321f1 --- /dev/null +++ b/.agents/skills/graphify/references/query.md @@ -0,0 +1,311 @@ +# graphify reference: query, path, explain + +Load this when the user asks a question against an existing graph, or runs `/graphify path` or `/graphify explain`. The core's query stub points here for the full traversal flow. These flows use the `graphify query` CLI when it is available and fall back to an inline NetworkX traversal otherwise. + +Two traversal modes - choose based on the question: + +| Mode | Flag | Best for | +|------|------|----------| +| BFS (default) | _(none)_ | "What is X connected to?" - broad context, nearest neighbors first | +| DFS | `--dfs` | "How does X reach Y?" - trace a specific chain or dependency path | + +First check the graph exists: +```bash +$(cat graphify-out/.graphify_python) -c " +from pathlib import Path +if not Path('graphify-out/graph.json').exists(): + print('ERROR: No graph found. Run /graphify first to build the graph.') + raise SystemExit(1) +" +``` +If it fails, stop and tell the user to run `/graphify ` first. + +### Step 0 — Constrained query expansion (REQUIRED before traversal) + +graphify's `query` CLI matches nodes via case-folded substring + IDF — there is **no stemming, no synonyms, no cross-language match** inside the binary, and the inline fallback below matches the same way. If the user's question uses different language or different domain vocabulary than the graph's labels (user says "обработчик" / graph says "handler"; user says "authentication" / graph says "Guardian"), the literal matcher returns 0 hits and the answer collapses to noise. + +Fix this **without inventing tokens** by expanding the query against the actual graph vocabulary first: + +1. Extract the token vocabulary from node labels: +```bash +$(cat graphify-out/.graphify_python) -c " +import json, re +from pathlib import Path +data = json.loads(Path('graphify-out/graph.json').read_text()) +vocab = set() +for n in data['nodes']: + for c in re.findall(r'[^\W\d_]+', n.get('label','') or '', re.UNICODE): + parts = re.findall(r'[A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+', c) or [c] + for p in parts: + t = p.lower() + if 3 <= len(t) <= 30: + vocab.add(t) +Path('graphify-out/.vocab.txt').write_text('\n'.join(sorted(vocab))) +print(f'vocab: {len(vocab)} tokens') +" +``` + +2. Read `graphify-out/.vocab.txt`. Then for the user's question, select **up to 12 tokens from this exact list** that semantically match the query intent. Hard constraints: + - You MUST pick only tokens present in the vocabulary file. Do NOT invent tokens. + - If a query concept has no plausible token in the vocab, skip it — do not substitute a near-synonym from training memory. + - If **no** vocab tokens match the query at all, output an empty list and tell the user the corpus has no relevant vocabulary for this question. Do not fabricate a search. + - Translate cross-language: Russian "аутентификация" → look for `auth`, `credential`, `token`, `security` IFF present in vocab. + - Morphology: "handlers" maps to `handler` IFF present; "todos" maps to `todo` IFF present. + +3. Print the selection explicitly to the user before running the query, so the expansion is auditable: +``` +Query expanded to (from graph vocab, N tokens): [token1, token2, ...] +``` +If the list is empty, say so plainly and stop — do not proceed to traversal. + +### Step 1 — Traversal + +Build the **expanded query string** by joining the selected tokens with spaces. Use this string as `QUESTION` below — NOT the original user question. (The original question is preserved only for `save-result` at the end.) + +Prefer the CLI when it is installed: +```bash +graphify query "QUESTION" +# or: graphify query "QUESTION" --dfs --budget 3000 +``` + +If the CLI is unavailable, load `graphify-out/graph.json` and run the traversal inline: + +1. Find the 1-3 nodes whose label best matches the expanded tokens. +2. Run the appropriate traversal from each starting node. +3. Read the subgraph - node labels, edge relations, confidence tags, source locations. +4. Answer using **only** what the graph contains. Quote `source_location` when citing a specific fact. +5. If the graph lacks enough information, say so - do not hallucinate edges. + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from networkx.readwrite import json_graph +import networkx as nx +from pathlib import Path + +data = json.loads(Path('graphify-out/graph.json').read_text()) +G = json_graph.node_link_graph(data, edges='links') + +question = 'QUESTION' +mode = 'MODE' # 'bfs' or 'dfs' +terms = [t.lower() for t in question.split() if len(t) >= 3] # match the vocab threshold; keeps api/jwt/ios (#1392) + +# Find best-matching start nodes +scored = [] +for nid, ndata in G.nodes(data=True): + label = ndata.get('label', '').lower() + score = sum(1 for t in terms if t in label) + if score > 0: + scored.append((score, nid)) +scored.sort(reverse=True) +start_nodes = [nid for _, nid in scored[:3]] + +if not start_nodes: + print('No matching nodes found for query terms:', terms) + sys.exit(0) + +subgraph_nodes = set() +subgraph_edges = [] + +if mode == 'dfs': + # DFS: follow one path as deep as possible before backtracking. + # Depth-limited to 6 to avoid traversing the whole graph. + visited = set() + stack = [(n, 0) for n in reversed(start_nodes)] + while stack: + node, depth = stack.pop() + if node in visited or depth > 6: + continue + visited.add(node) + subgraph_nodes.add(node) + for neighbor in G.neighbors(node): + if neighbor not in visited: + stack.append((neighbor, depth + 1)) + subgraph_edges.append((node, neighbor)) +else: + # BFS: explore all neighbors layer by layer up to depth 3. + frontier = set(start_nodes) + subgraph_nodes = set(start_nodes) + for _ in range(3): + next_frontier = set() + for n in frontier: + for neighbor in G.neighbors(n): + if neighbor not in subgraph_nodes: + next_frontier.add(neighbor) + subgraph_edges.append((n, neighbor)) + subgraph_nodes.update(next_frontier) + frontier = next_frontier + +# Token-budget aware output: rank by relevance, cut at budget (~4 chars/token) +token_budget = BUDGET # default 2000 +char_budget = token_budget * 4 + +# Score each node by term overlap for ranked output +def relevance(nid): + label = G.nodes[nid].get('label', '').lower() + return sum(1 for t in terms if t in label) + +ranked_nodes = sorted(subgraph_nodes, key=relevance, reverse=True) + +lines = [f'Traversal: {mode.upper()} | Start: {[G.nodes[n].get(\"label\",n) for n in start_nodes]} | {len(subgraph_nodes)} nodes'] +for nid in ranked_nodes: + d = G.nodes[nid] + lines.append(f' NODE {d.get(\"label\", nid)} [src={d.get(\"source_file\",\"\")} loc={d.get(\"source_location\",\"\")}]') +for u, v in subgraph_edges: + if u in subgraph_nodes and v in subgraph_nodes: + _raw = G[u][v]; d = next(iter(_raw.values()), {}) if isinstance(G, nx.MultiGraph) else _raw + lines.append(f' EDGE {G.nodes[u].get(\"label\",u)} --{d.get(\"relation\",\"\")} [{d.get(\"confidence\",\"\")}]--> {G.nodes[v].get(\"label\",v)}') + +output = '\n'.join(lines) +if len(output) > char_budget: + output = output[:char_budget] + f'\n... (truncated at ~{token_budget} token budget - use --budget N for more)' +print(output) +" +``` + +Replace `QUESTION` with the **expanded** query string, `MODE` with `bfs` or `dfs`, and `BUDGET` with the token budget (default `2000`, or whatever `--budget N` specifies). Then answer based on the subgraph output above, using only what the graph contains. + +After writing the answer, save it back into the graph so it improves future queries. Include the expanded tokens inside the `--answer` text (e.g. `"Expanded from original query via vocab: [tokens]. Then traversed..."`) so the next `--update` extracts the expansion history as a graph node: + +```bash +$(cat graphify-out/.graphify_python) -m graphify save-result --question "ORIGINAL_QUESTION" --answer "ANSWER" --type query --nodes NODE1 NODE2 +``` + +Replace `ORIGINAL_QUESTION` with the user's verbatim question, `ANSWER` with your full answer text (containing the expanded-token trace), `NODE1 NODE2` with the list of node labels you cited. This closes the feedback loop: the next `--update` will extract this Q&A as a node in the graph. + +**Work memory (self-improving loop).** Add an `--outcome` so future sessions learn from this one — append `--outcome useful|dead_end|corrected` to the `save-result` command (and `--correction "the right answer"` when correcting): + +- `useful` — the cited nodes answered the question well (they become *preferred sources*). +- `dead_end` — the question/path led nowhere; don't re-derive it next time. +- `corrected` — the saved answer was wrong; `--correction` records what was right. + +At the **start** of graph work, refresh and read the lessons: run `graphify reflect --if-stale` (cheap, deterministic, no LLM; `--if-stale` makes it a no-op when `LESSONS.md` is already newer than every input, e.g. when the git hook just refreshed it), then read `graphify-out/reflections/LESSONS.md`. It lists **preferred sources** (start there), **known dead ends** (skip them), and prior **corrections**. Running `reflect` yourself keeps the lessons current even without the git hook installed; if the post-commit hook *is* installed, `--if-stale` means your session-start run costs almost nothing. + +--- + +## For /graphify path + +Find the shortest path between two named concepts in the graph. Prefer the CLI when installed: + +```bash +graphify path "NODE_A" "NODE_B" +``` + +If the CLI is unavailable, run it inline: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json, sys +import networkx as nx +from networkx.readwrite import json_graph +from pathlib import Path + +data = json.loads(Path('graphify-out/graph.json').read_text()) +G = json_graph.node_link_graph(data, edges='links') + +a_term = 'NODE_A' +b_term = 'NODE_B' + +def find_node(term): + term = term.lower() + scored = sorted( + [(sum(1 for w in term.split() if w in G.nodes[n].get('label','').lower()), n) + for n in G.nodes()], + reverse=True + ) + return scored[0][1] if scored and scored[0][0] > 0 else None + +src = find_node(a_term) +tgt = find_node(b_term) + +if not src or not tgt: + print(f'Could not find nodes matching: {a_term!r} or {b_term!r}') + sys.exit(0) + +try: + path = nx.shortest_path(G, src, tgt) + print(f'Shortest path ({len(path)-1} hops):') + for i, nid in enumerate(path): + label = G.nodes[nid].get('label', nid) + if i < len(path) - 1: + _raw = G[nid][path[i+1]]; edge = next(iter(_raw.values()), {}) if isinstance(G, nx.MultiGraph) else _raw + rel = edge.get('relation', '') + conf = edge.get('confidence', '') + print(f' {label} --{rel}--> [{conf}]') + else: + print(f' {label}') +except nx.NetworkXNoPath: + print(f'No path found between {a_term!r} and {b_term!r}') +except nx.NodeNotFound as e: + print(f'Node not found: {e}') +" +``` + +Replace `NODE_A` and `NODE_B` with the actual concept names from the user. Then explain the path in plain language - what each hop means, why it's significant. + +After writing the explanation, save it back: + +```bash +$(cat graphify-out/.graphify_python) -m graphify save-result --question "Path from NODE_A to NODE_B" --answer "ANSWER" --type path_query --nodes NODE_A NODE_B +``` + +--- + +## For /graphify explain + +Give a plain-language explanation of a single node - everything connected to it. Prefer the CLI when installed: + +```bash +graphify explain "NODE_NAME" +``` + +If the CLI is unavailable, run it inline: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json, sys +import networkx as nx +from networkx.readwrite import json_graph +from pathlib import Path + +data = json.loads(Path('graphify-out/graph.json').read_text()) +G = json_graph.node_link_graph(data, edges='links') + +term = 'NODE_NAME' +term_lower = term.lower() + +# Find best matching node +scored = sorted( + [(sum(1 for w in term_lower.split() if w in G.nodes[n].get('label','').lower()), n) + for n in G.nodes()], + reverse=True +) +if not scored or scored[0][0] == 0: + print(f'No node matching {term!r}') + sys.exit(0) + +nid = scored[0][1] +data_n = G.nodes[nid] +print(f'NODE: {data_n.get(\"label\", nid)}') +print(f' source: {data_n.get(\"source_file\",\"unknown\")}') +print(f' type: {data_n.get(\"file_type\",\"unknown\")}') +print(f' degree: {G.degree(nid)}') +print() +print('CONNECTIONS:') +for neighbor in G.neighbors(nid): + _raw = G[nid][neighbor]; edge = next(iter(_raw.values()), {}) if isinstance(G, nx.MultiGraph) else _raw + nlabel = G.nodes[neighbor].get('label', neighbor) + rel = edge.get('relation', '') + conf = edge.get('confidence', '') + src_file = G.nodes[neighbor].get('source_file', '') + print(f' --{rel}--> {nlabel} [{conf}] ({src_file})') +" +``` + +Replace `NODE_NAME` with the concept the user asked about. Then write a 3-5 sentence explanation of what this node is, what it connects to, and why those connections are significant. Use the source locations as citations. + +After writing the explanation, save it back: + +```bash +$(cat graphify-out/.graphify_python) -m graphify save-result --question "Explain NODE_NAME" --answer "ANSWER" --type explain --nodes NODE_NAME +``` diff --git a/.agents/skills/graphify/references/transcribe.md b/.agents/skills/graphify/references/transcribe.md new file mode 100644 index 0000000..b967f83 --- /dev/null +++ b/.agents/skills/graphify/references/transcribe.md @@ -0,0 +1,52 @@ +# graphify reference: transcribe video and audio + +Load this only when `detect` reported one or more `video` files. A corpus with no video never reads this. + +### Step 2.5 - Transcribe video / audio files (only if video files detected) + +Skip this step entirely if `detect` returned zero `video` files. + +Video and audio files cannot be read directly. Transcribe them to text first, then treat the transcripts as doc files in Step 3. + +**Strategy:** Read the god nodes from `graphify-out/.graphify_detect.json` (or the analysis file if it exists from a previous run). You are already a language model — write a one-sentence domain hint yourself from those labels. Then pass it to Whisper as the initial prompt. No separate API call needed. + +**However**, if the corpus has *only* video files and no other docs/code, use the generic fallback prompt: `"Use proper punctuation and paragraph breaks."` + +**Step 1 - Write the Whisper prompt yourself.** + +Read the top god node labels from detect output or analysis, then compose a short domain hint sentence, for example: + +- Labels: `transformer, attention, encoder, decoder` → `"Machine learning research on transformer architectures and attention mechanisms. Use proper punctuation and paragraph breaks."` +- Labels: `kubernetes, deployment, pod, helm` → `"DevOps discussion about Kubernetes deployments and Helm charts. Use proper punctuation and paragraph breaks."` + +**Export** it as `GRAPHIFY_WHISPER_PROMPT` (the exact name the transcriber reads — and it must be `export`ed so the child Python process sees it) for the next command. + +**Step 2 - Transcribe:** + +```bash +export GRAPHIFY_WHISPER_MODEL=base # or whatever --whisper-model the user passed (must be exported) +export GRAPHIFY_WHISPER_PROMPT="" +$(cat graphify-out/.graphify_python) -c " +import json, os, sys +from pathlib import Path +from graphify.transcribe import transcribe_all + +detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +video_files = detect.get('files', {}).get('video', []) +prompt = os.environ.get('GRAPHIFY_WHISPER_PROMPT', 'Use proper punctuation and paragraph breaks.') + +transcript_paths = transcribe_all(video_files, initial_prompt=prompt) +# Write the JSON from Python (NOT a shell '>' redirect): transcribe_all/Whisper +# print progress to stdout, which would otherwise corrupt the JSON file (#1392). +Path('graphify-out/.graphify_transcripts.json').write_text(json.dumps(transcript_paths, ensure_ascii=False), encoding=\"utf-8\") +print(f'Transcribed {len(transcript_paths)} file(s)', file=sys.stderr) +" +``` + +After transcription: +- Read the transcript paths from `graphify-out/.graphify_transcripts.json` +- Add them to the docs list before dispatching semantic subagents in Step 3B +- Print how many transcripts were created: `Transcribed N video file(s) -> treating as docs` +- If transcription fails for a file, print a warning and continue with the rest + +**Whisper model:** Default is `base`. If the user passed `--whisper-model `, `export GRAPHIFY_WHISPER_MODEL=` (it must be exported, not just assigned) before running the command above. diff --git a/.agents/skills/graphify/references/update.md b/.agents/skills/graphify/references/update.md new file mode 100644 index 0000000..fa26121 --- /dev/null +++ b/.agents/skills/graphify/references/update.md @@ -0,0 +1,192 @@ +# graphify reference: incremental update and cluster-only + +Load this only when the user passed `--update` or `--cluster-only`. A first-time full build never reads this file. + +## For --update (incremental re-extraction) + +Use when you've added or modified files since the last run. Only re-extracts changed files - saves tokens and time. + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from graphify.detect import detect_incremental, save_manifest +from pathlib import Path + +result = detect_incremental(Path('INPUT_PATH')) +new_total = result.get('new_total', 0) +print(json.dumps(result, indent=2, ensure_ascii=False)) +Path('graphify-out/.graphify_incremental.json').write_text(json.dumps(result, ensure_ascii=False), encoding=\"utf-8\") +deleted = list(result.get('deleted_files', [])) +if new_total == 0 and not deleted: + print('No files changed since last run. Nothing to update.') + raise SystemExit(0) +if deleted: + print(f'{len(deleted)} deleted file(s) to prune.') +if new_total > 0: + print(f'{new_total} new/changed file(s) to re-extract.') +" +``` + +Then populate `.graphify_detect.json` so Steps 3A–6 (which read it unconditionally) see the right state for an incremental run. `files` carries the changed subset (drives Step 3A AST + Step 3B0 cache check on only what changed); `all_files` carries the full corpus for any step that needs corpus-wide context: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +r = json.loads(Path('graphify-out/.graphify_incremental.json').read_text(encoding=\"utf-8\")) +Path('graphify-out/.graphify_detect.json').write_text(json.dumps({ + 'files': r.get('new_files', {}), + 'all_files': r.get('files', {}), + 'total_files': r.get('new_total', 0), + 'total_words': r.get('total_words', 0), + 'skipped_sensitive': r.get('skipped_sensitive', []), + 'needs_graph': True, +}, ensure_ascii=False), encoding=\"utf-8\") +" +``` + +If new files exist, first check whether all changed files are code files: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path + +result = json.loads(open('graphify-out/.graphify_incremental.json', encoding='utf-8').read()) if Path('graphify-out/.graphify_incremental.json').exists() else {} +code_exts = {'.py','.ts','.js','.go','.rs','.java','.cpp','.c','.rb','.swift','.kt','.cs','.scala','.php','.cc','.cxx','.hpp','.h','.kts','.lua','.toc','.f','.F','.f90','.F90','.f95','.F95','.f03','.F03','.f08','.F08'} +new_files = result.get('new_files', {}) +all_changed = [f for files in new_files.values() for f in files] +code_only = all(Path(f).suffix.lower() in code_exts for f in all_changed) +print('code_only:', code_only) +" +``` + +If `code_only` is True: print `[graphify update] Code-only changes detected - skipping semantic extraction (no LLM needed)`, run only Step 3A (AST) on the changed files, skip Step 3B entirely (no subagents), then go straight to merge and Steps 4–8. + +If `code_only` is False (any changed file is a doc/paper/image/video): **first, if any changed file is in `new_files['video']`, run `references/transcribe.md` (Step 2.5) on those files, then rewrite `.graphify_detect.json` to move the resulting transcript paths into `files['document']` and drop `files['video']`** — otherwise raw `.mp4/.mp3` paths are fed to semantic subagents as unreadable media (#1392). Then run the full Steps 3A–3C pipeline as normal. + + +If no new files exist (only deletions), create an empty extraction so the merge step can prune: + +```bash +if [ ! -f graphify-out/.graphify_extract.json ]; then + echo '[graphify update] Only deletions -- creating empty extraction for merge.' + $(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +Path('graphify-out/.graphify_extract.json').write_text(json.dumps({'nodes':[],'edges':[],'hyperedges':[],'input_tokens':0,'output_tokens':0}), encoding='utf-8') +" +fi +``` + + +Then: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +from graphify.build import build_merge +from graphify.detect import save_manifest + +# Load new extraction and incremental state +new_extraction = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +incremental = json.loads(Path('graphify-out/.graphify_incremental.json').read_text(encoding=\"utf-8\")) +deleted = list(incremental.get('deleted_files', [])) +# prune_sources is ONLY for genuinely DELETED files. Changed/re-extracted files are +# handled by build_merge's replace-on-re-extract (#1344): every source_file in +# new_chunks is dropped from the base before merge, so old/stale nodes don't survive. +# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same base +# as the freshly merged nodes and would DELETE the re-extracted content (#1178 is moot +# now that replace — not the dedup pass — reconciles changed files). +prune = list(deleted) or None + +# Use build_merge() — reads graph.json directly without NetworkX round-trip +# so edge direction (calls, implements, imports) is always preserved (#801). +# Pass root= so prune_sources (absolute paths from detect_incremental) are +# relativized to match the graph's relative source_file values; without it +# nothing is pruned and stale nodes accumulate on every update (#1361). +# directed=IS_DIRECTED: replace IS_DIRECTED with True if --directed was given, else +# False. Without it a --directed --update silently rebuilds undirected and collapses +# reciprocal A<->B edges (#1392). +G = build_merge( + [new_extraction], + graph_path='graphify-out/graph.json', + prune_sources=prune, + root='INPUT_PATH', + directed=IS_DIRECTED, +) +print(f'[graphify update] Merged: {G.number_of_nodes()} nodes, {G.number_of_edges()} edges') + +# Write merged result back to .graphify_extract.json so Step 4 sees the full graph +merged_out = { + 'nodes': [{'id': n, **d} for n, d in G.nodes(data=True)], + 'edges': [ + # Explicit source/target last so they win over any stale attrs in d. + {**{k: val for k, val in d.items() if k not in ('_src', '_tgt', 'source', 'target')}, + 'source': d.get('_src', u), 'target': d.get('_tgt', v)} + for u, v, d in G.edges(data=True) + ], + # G.graph["hyperedges"] holds hyperedges from both existing graph.json + # and new_extraction (build_merge combines them). Falling back to + # new_extraction only would silently drop prior-run hyperedges (#801). + 'hyperedges': list(G.graph.get('hyperedges', [])), + 'input_tokens': new_extraction.get('input_tokens', 0), + 'output_tokens': new_extraction.get('output_tokens', 0), +} +Path('graphify-out/.graphify_extract.json').write_text(json.dumps(merged_out, ensure_ascii=False), encoding=\"utf-8\") +print(f'[graphify update] Merged extraction written ({len(merged_out[\"nodes\"])} nodes, {len(merged_out[\"edges\"])} edges)') + +# Save manifest so next --update diffs against today's state, not the +# prior run's baseline (prevents ghost-node reports on subsequent updates). +# root= matches the build_merge call above so the manifest keys stay relative to +# the scan root — portable across clones/machines, so --update keeps matching +# cached files instead of missing every one after a move (#1417). +save_manifest(incremental['files'], root='INPUT_PATH') +print('[graphify update] Manifest saved.') +" +``` + +Then run Steps 4–8 on the merged graph as normal. + +After Step 4, show the graph diff: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from graphify.analyze import graph_diff +from graphify.build import build_from_json +from networkx.readwrite import json_graph +import networkx as nx +from pathlib import Path + +# Load old graph (before update) from backup written before merge +old_data = json.loads(Path('graphify-out/.graphify_old.json').read_text(encoding=\"utf-8\")) if Path('graphify-out/.graphify_old.json').exists() else None +new_extract = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +G_new = build_from_json(new_extract, directed=IS_DIRECTED) + +if old_data: + G_old = json_graph.node_link_graph(old_data, edges='links') + diff = graph_diff(G_old, G_new) + print(diff['summary']) + if diff['new_nodes']: + print('New nodes:', ', '.join(n['label'] for n in diff['new_nodes'][:5])) + if diff['new_edges']: + print('New edges:', len(diff['new_edges'])) +" +``` + +Before the merge step, save the old graph: `cp graphify-out/graph.json graphify-out/.graphify_old.json` +Clean up after: `rm -f graphify-out/.graphify_old.json` + +--- + +## For --cluster-only + +Skip Steps 1–3. Re-run clustering on the existing graph: + +```bash +graphify cluster-only . +``` + +`graphify cluster-only .` is **self-contained**: it re-clusters, names communities, and regenerates `GRAPH_REPORT.md`, `graph.json`, and `graph.html` from the existing graph. **Do not re-run Steps 5–9** — they read intermediate files (`.graphify_extract.json`, `.graphify_detect.json`, `.graphify_analysis.json`) that a prior build's cleanup (Step 9) already deleted, so they raise `FileNotFoundError` (#1392). When it finishes, present the refreshed `GRAPH_REPORT.md` summary as usual. diff --git a/.codex/graphify/.graphify_version b/.codex/graphify/.graphify_version new file mode 100644 index 0000000..0383441 --- /dev/null +++ b/.codex/graphify/.graphify_version @@ -0,0 +1 @@ +0.9.5 \ No newline at end of file diff --git a/.codex/graphify/SKILL.md b/.codex/graphify/SKILL.md new file mode 100644 index 0000000..e6e411e --- /dev/null +++ b/.codex/graphify/SKILL.md @@ -0,0 +1,674 @@ +--- +name: graphify +description: "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools." +--- + +# /graphify + +Turn any folder of files into a navigable knowledge graph with community detection, an honest audit trail, and three outputs: interactive HTML, GraphRAG-ready JSON, and a plain-language GRAPH_REPORT.md. + +## Usage + +``` +/graphify # full pipeline on current directory → Obsidian vault +/graphify # full pipeline on specific path +/graphify https://github.com// # clone repo then run full pipeline on it +/graphify https://github.com// --branch # clone a specific branch +/graphify ... # clone multiple repos, build each, merge into one cross-repo graph +/graphify --mode deep # thorough extraction, richer INFERRED edges +/graphify --update # incremental - re-extract only new/changed files +/graphify --directed # build directed graph (preserves edge direction: source→target) +/graphify --whisper-model medium # use a larger Whisper model for better transcription accuracy +/graphify --cluster-only # rerun clustering on existing graph +/graphify --no-viz # skip visualization, just report + JSON +/graphify --html # (HTML is generated by default - this flag is a no-op) +/graphify --svg # also export graph.svg (embeds in Notion, GitHub) +/graphify --graphml # export graph.graphml (Gephi, yEd) +/graphify --neo4j # generate graphify-out/cypher.txt for Neo4j +/graphify --neo4j-push bolt://localhost:7687 # push directly to Neo4j +/graphify --falkordb # generate graphify-out/cypher.txt for FalkorDB +/graphify --falkordb-push falkordb://localhost:6379 # push directly to FalkorDB +/graphify --mcp # start MCP stdio server for agent access +/graphify --watch # watch folder, auto-rebuild on code changes (no LLM needed) +/graphify --wiki # build agent-crawlable wiki (index.md + one article per community) +/graphify --obsidian --obsidian-dir ~/vaults/my-project # write vault to custom path (e.g. existing vault) +/graphify add # fetch URL, save to ./raw, update graph +/graphify add --author "Name" # tag who wrote it +/graphify add --contributor "Name" # tag who added it to the corpus +/graphify query "" # BFS traversal - broad context +/graphify query "" --dfs # DFS - trace a specific path +/graphify query "" --budget 1500 # cap answer at N tokens +/graphify path "AuthModule" "Database" # shortest path between two concepts +/graphify explain "SwinTransformer" # plain-language explanation of a node +``` + +## What graphify is for + +Drop any folder of code, docs, papers, images, or video into graphify and get a queryable knowledge graph. Persistent across sessions, honest audit trail (EXTRACTED/INFERRED/AMBIGUOUS), community detection surfaces cross-document connections you wouldn't think to ask about. + +## What You Must Do When Invoked + +If the user invoked `/graphify --help` or `/graphify -h` (with no other arguments), print the contents of the `## Usage` section above verbatim and stop. Do not run any commands, do not detect files, do not default the path to `.`. Just print the Usage block and return. + +**Fast path — existing graph:** Before doing anything else, check whether `graphify-out/graph.json` exists. The expected location is `graphify-out/graph.json` relative to the **current working directory** (i.e. the project root where you are running commands). If it exists AND the user's request is a natural-language question about the codebase (e.g. "How does X work?", "What calls Y?", "Trace the data flow through Z") and NOT an explicit rebuild command (`--update`, `--cluster-only`, or a bare path/URL that implies fresh extraction): **skip Steps 1–5 entirely and jump straight to `## For /graphify query`.** Run `graphify query ""` immediately. Do not run detect. Do not check corpus size. Do not ask the user to narrow. The graph is already built — use it. + +If no path was given, use `.` (current directory). Do not ask the user for a path. + +If the path argument starts with `https://github.com/` or `http://github.com/`, treat it as a GitHub URL - run Step 0 before anything else, then continue with the resolved local path. + +Follow these steps in order. Do not skip steps. + +### Step 0 - GitHub repos and multi-path merge (only if a URL or several paths) + +Only when the path is one or more `https://github.com/...` URLs, or several local subfolders to merge. See `references/github-and-merge.md` for the clone, cross-repo merge, and monorepo flow, then continue with the resolved local path. A plain local path skips this step. + +### Step 1 - Ensure graphify is installed + +```bash +# Detect the correct Python interpreter (handles uv tool, pipx, venv, system installs) +PYTHON="" +GRAPHIFY_BIN=$(which graphify 2>/dev/null) +# 1. uv tool installs — most reliable on modern Mac/Linux +if [ -z "$PYTHON" ] && command -v uv >/dev/null 2>&1; then + _UV_PY=$(uv tool run graphifyy python -c "import sys; print(sys.executable)" 2>/dev/null) + if [ -n "$_UV_PY" ]; then PYTHON="$_UV_PY"; fi +fi +# 2. Read shebang from graphify binary (pipx and direct pip installs) +if [ -z "$PYTHON" ] && [ -n "$GRAPHIFY_BIN" ]; then + _SHEBANG=$(head -1 "$GRAPHIFY_BIN" | tr -d '#!') + case "$_SHEBANG" in + *[!a-zA-Z0-9/_.@-]*) ;; + *) "$_SHEBANG" -c "import graphify" 2>/dev/null && PYTHON="$_SHEBANG" ;; + esac +fi +# 3. Fall back to python3 +if [ -z "$PYTHON" ]; then PYTHON="python3"; fi +if ! "$PYTHON" -c "import graphify" 2>/dev/null; then + if command -v uv >/dev/null 2>&1; then + uv tool install --upgrade graphifyy -q 2>&1 | tail -3 + _UV_PY=$(uv tool run graphifyy python -c "import sys; print(sys.executable)" 2>/dev/null) + if [ -n "$_UV_PY" ]; then PYTHON="$_UV_PY"; fi + else + "$PYTHON" -m pip install graphifyy -q 2>/dev/null \ + || "$PYTHON" -m pip install graphifyy -q --break-system-packages 2>&1 | tail -3 + fi +fi +# Write interpreter path for all subsequent steps (persists across invocations) +mkdir -p graphify-out +"$PYTHON" -c "import sys; open('graphify-out/.graphify_python', 'w', encoding='utf-8').write(sys.executable)" +# Save scan root so `graphify update` (no args) knows where to look next time +echo "$(cd INPUT_PATH && pwd)" > graphify-out/.graphify_root +``` + +If the import succeeds, print nothing and move straight to Step 2. + +**In every subsequent bash block, replace `python3` with `$(cat graphify-out/.graphify_python)` to use the correct interpreter.** + +### Step 2 - Detect files + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from graphify.detect import detect +from pathlib import Path +result = detect(Path('INPUT_PATH')) +print(json.dumps(result, ensure_ascii=False)) +" > graphify-out/.graphify_detect.json +``` + +Replace INPUT_PATH with the actual path the user provided. Do NOT cat or print the JSON - read it silently and present a clean summary instead: + +``` +Corpus: X files · ~Y words + code: N files (.py .ts .go ...) + docs: N files (.md .txt ...) + papers: N files (.pdf ...) + images: N files + video: N files (.mp4 .mp3 ...) +``` + +Omit any category with 0 files from the summary. + +Then act on it: +- If `total_files` is 0: stop with "No supported files found in [path]." +- If `skipped_sensitive` is non-empty: mention file count skipped, not the file names. +- If `total_words` > 2,000,000 OR `total_files` > 500: show the warning. Then compute the top 5 first-level subdirectories by file count: + - Read `scan_root` from the detect JSON (always an absolute path to the resolved INPUT_PATH). + - Concatenate all file lists across all types (`code`, `document`, `paper`, `image`, `video`). + - Filter out any path that starts with `scan_root + "/graphify-out/"` to exclude converted sidecars. + - For each file, strip the `scan_root` prefix and take the first path component. Files directly in `scan_root` with no subdirectory count as `(root)`. + - If all files are in `(root)` with no subdirectories, do not ask to narrow — no subfolders exist. Instead suggest `--no-cluster` to skip the expensive clustering step and proceed. + - Otherwise rank by count, show the top 5 with file counts, then ask which subfolder to run on. Wait for the user's answer before proceeding. +- Otherwise: proceed directly to Step 2.5 if video files were detected, or Step 3 if not. + +### Step 2.5 - Video and audio (only if video files detected) + +Skip this step entirely if `detect` returned zero `video` files. When the corpus has video or audio, see `references/transcribe.md` to transcribe them to text first, then treat the transcripts as doc files in Step 3. + +### Step 3 - Extract entities and relationships + +**Before starting:** note whether `--mode deep` was given. You must pass `DEEP_MODE=true` to every subagent in Step B2 if it was. Track this from the original invocation - do not lose it. + +This step has two parts: **structural extraction** (deterministic, free) and **semantic extraction** (LLM, costs tokens). + +> **graphify needs no API key. Never ask the user for one, and never block on one.** Code is extracted structurally (AST) with no LLM and no key at all — a code-only corpus (the common `/graphify .` on a repo) skips semantic extraction entirely, so it needs nothing here: go straight to Part A and skip Part B. Semantic extraction (only for docs, papers, and images) uses Gemini **only if** `GEMINI_API_KEY`/`GOOGLE_API_KEY` is already set; otherwise the host agent itself is the LLM. graphify does **not** read `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or any other provider key. If you catch yourself about to prompt for, wait on, or stop because of a missing API key, that is a misread of this skill — proceed without one. + +**Before semantic extraction:** check whether `GEMINI_API_KEY` or `GOOGLE_API_KEY` is set. If neither is set, print this one-liner to the user: +> Tip: set `GEMINI_API_KEY` or `GOOGLE_API_KEY` to use Gemini for semantic extraction (`pip install 'graphifyy[gemini]'`). + +Print it once, then continue — do not wait for the user to supply a key. If `GEMINI_API_KEY` or `GOOGLE_API_KEY` IS set, use `graphify.llm.extract_corpus_parallel(files, backend="gemini")` for semantic extraction instead of dispatching subagents. The default Gemini model is `gemini-3-flash-preview`; set `GRAPHIFY_GEMINI_MODEL` or pass `--model` in headless CLI flows to override it. + +> **No other API keys are read.** When `GEMINI_API_KEY`/`GOOGLE_API_KEY` are unset, semantic extraction falls to the host agent itself — the running session is the LLM. On a host that dispatches subagents (e.g. Claude Code), dispatch them as written in Part B. On a host that runs the CLI directly in a terminal and cannot dispatch subagents, do not stall: a code-only corpus has no semantic work, so write the empty semantic file (Part B "Fast path") and continue to Part C; for a corpus with docs/papers/images, either set a Gemini key or extract those inline yourself, but in no case prompt for `ANTHROPIC_API_KEY` — that prompt is a misread of this skill. + +**Run Part A (AST) and Part B (semantic) in parallel. Dispatch all semantic subagents AND start AST extraction in the same message. Both can run simultaneously since they operate on different file types. Merge results in Part C as before.** + +Note: Parallelizing AST + semantic saves 5-15s on large corpora. AST is deterministic and fast; start it while subagents are processing docs/papers. + +#### Part A - Structural extraction for code files + +For any code files detected, run AST extraction in parallel with Part B subagents: + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from graphify.extract import collect_files, extract +from pathlib import Path +import json + +code_files = [] +detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +for f in detect.get('files', {}).get('code', []): + code_files.extend(collect_files(Path(f)) if Path(f).is_dir() else [Path(f)]) + +if code_files: + result = extract(code_files, cache_root=Path('INPUT_PATH')) + Path('graphify-out/.graphify_ast.json').write_text(json.dumps(result, indent=2, ensure_ascii=False), encoding=\"utf-8\") + print(f'AST: {len(result[\"nodes\"])} nodes, {len(result[\"edges\"])} edges') +else: + Path('graphify-out/.graphify_ast.json').write_text(json.dumps({'nodes':[],'edges':[],'input_tokens':0,'output_tokens':0}, ensure_ascii=False), encoding=\"utf-8\") + print('No code files - skipping AST extraction') +" +``` + +#### Part B - Semantic extraction (parallel subagents) + +**Fast path:** If detection found zero docs, papers, and images (code-only corpus), skip Part B entirely and go straight to Part C. AST handles code - there is nothing for semantic subagents to do. **First write an empty semantic file** so Part C's merge has its input (it reads `.graphify_semantic.json` unconditionally; without this a code-only run hits `FileNotFoundError`): + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +Path('graphify-out/.graphify_semantic.json').write_text(json.dumps({'nodes':[],'edges':[],'hyperedges':[],'input_tokens':0,'output_tokens':0}), encoding='utf-8') +" +``` + +**MANDATORY: You MUST use the Agent tool here. Reading files yourself one-by-one is forbidden - it is 5-10x slower. If you do not use the Agent tool you are doing this wrong.** + +Before dispatching subagents, print a timing estimate: +- Load `total_words` and file counts from `graphify-out/.graphify_detect.json` +- Estimate agents needed: `ceil(uncached_non_code_files / 22)` (chunk size is 20-25) +- Estimate time: ~45s per agent batch (they run in parallel, so total ≈ 45s × ceil(agents/parallel_limit)) +- Print: "Semantic extraction: ~N files → X agents, estimated ~Ys" + +**Step B0 - Check extraction cache first** + +Before dispatching any subagents, check which files already have cached extraction results: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from graphify.cache import check_semantic_cache +from pathlib import Path + +detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +# Only content files go to semantic extraction. Code is already covered structurally +# by the AST pass (Part A); flattening every category here makes subagents re-read +# every source file (#1392). Video is transcribed to a document in Step 2.5 first. +all_files = [f for cat in ('document', 'paper', 'image') for f in detect['files'].get(cat, [])] + +cached_nodes, cached_edges, cached_hyperedges, uncached = check_semantic_cache(all_files, root='INPUT_PATH') + +# Always (re)write the cache file: write hits, else DELETE any leftover from a prior +# run so Part C never merges a stale .graphify_cached.json (#1392). +if cached_nodes or cached_edges or cached_hyperedges: + Path('graphify-out/.graphify_cached.json').write_text(json.dumps({'nodes': cached_nodes, 'edges': cached_edges, 'hyperedges': cached_hyperedges}, ensure_ascii=False), encoding=\"utf-8\") +else: + Path('graphify-out/.graphify_cached.json').unlink(missing_ok=True) +Path('graphify-out/.graphify_uncached.txt').write_text('\n'.join(uncached), encoding=\"utf-8\") +print(f'Cache: {len(all_files)-len(uncached)} files hit, {len(uncached)} files need extraction') +" +``` + +Only dispatch subagents for files listed in `graphify-out/.graphify_uncached.txt`. If all files are cached, skip to Part C directly. + +**Step B1 - Split into chunks** + +Load files from `graphify-out/.graphify_uncached.txt`. Split into chunks of 20-25 files each. Each image gets its own chunk (vision needs separate context). When splitting, group files from the same directory together so related artifacts land in the same chunk and cross-file relationships are more likely to be extracted. + +**Step B2 - Dispatch ALL subagents in a single message (Codex)** + +> **Codex platform:** Uses `spawn_agent` + `wait_agent` + `close_agent` instead of the Agent tool. +> Requires `multi_agent = true` under `[features]` in `~/.codex/config.toml`. +> If `spawn_agent` is unavailable, tell the user to add that config and restart Codex. + +Call `spawn_agent` once per chunk — ALL in the same response so they run in parallel. Build the message by wrapping the extraction prompt in task-delegation framing: + +``` +spawn_agent(agent_type="worker", message="Your task is to perform the following. Follow the instructions below exactly.\n\n\n[extraction prompt, with FILE_LIST, CHUNK_NUM, TOTAL_CHUNKS, DEEP_MODE substituted]\n\n\nExecute this now. Output ONLY the structured JSON response.") +``` + +After all agents are dispatched, collect results sequentially in memory: +``` +result = wait_agent(handle); close_agent(handle) # repeat per handle +``` + +Parse each result as JSON. Accumulate nodes/edges/hyperedges across all results and write to `graphify-out/.graphify_semantic_new.json`. Codex collects in memory, so there are no per-chunk files on disk; the disk-based success checks in Step B3 do not apply — a chunk that returns invalid JSON is the failure signal instead. + +Subagent prompt template: + +See `references/extraction-spec.md` for the compact subagent prompt (rules, node-ID format, confidence rubric, hyperedge and vision rules, JSON schema). Load it only here, only when at least one chunk holds a doc, paper, or image; a pure-code corpus has skipped Part B and never reads it. Pass each agent that prompt verbatim with FILE_LIST, CHUNK_NUM, TOTAL_CHUNKS, and DEEP_MODE substituted, and have it return the JSON inline. + +**Step B3 - Collect, cache, and merge** + +Wait for all subagents. For each result: +- Check that `graphify-out/.graphify_chunk_NN.json` exists on disk — this is the success signal +- If the file exists and contains valid JSON with `nodes` and `edges`, include it and save to cache +- If the file is missing, the subagent was likely dispatched as read-only (Explore type) — print a warning: "chunk N missing from disk — subagent may have been read-only. Re-run with general-purpose agent." Do not silently skip. +- If a subagent failed or returned invalid JSON, print a warning and skip that chunk - do not abort + +If more than half the chunks failed or are missing, stop and tell the user to re-run and ensure `subagent_type="general-purpose"` is used. + +Merge all chunk files into `.graphify_semantic_new.json`. **After each Agent call completes, read the real token counts from the Agent tool result's `usage` field and write them back into the chunk JSON before merging** — the chunk JSON itself always has placeholder zeros. Then run: +```bash +$(cat graphify-out/.graphify_python) -c " +import json, glob +from pathlib import Path + +chunks = sorted(glob.glob('graphify-out/.graphify_chunk_*.json')) +all_nodes, all_edges, all_hyperedges = [], [], [] +total_in, total_out = 0, 0 +for c in chunks: + d = json.loads(Path(c).read_text(encoding=\"utf-8\")) + all_nodes += d.get('nodes', []) + all_edges += d.get('edges', []) + all_hyperedges += d.get('hyperedges', []) + total_in += d.get('input_tokens', 0) + total_out += d.get('output_tokens', 0) +Path('graphify-out/.graphify_semantic_new.json').write_text(json.dumps({ + 'nodes': all_nodes, 'edges': all_edges, 'hyperedges': all_hyperedges, + 'input_tokens': total_in, 'output_tokens': total_out, +}, indent=2, ensure_ascii=False), encoding=\"utf-8\") +print(f'Merged {len(chunks)} chunks: {total_in:,} in / {total_out:,} out tokens') +" +``` + +Save new results to cache: +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from graphify.cache import save_semantic_cache +from pathlib import Path + +new = json.loads(Path('graphify-out/.graphify_semantic_new.json').read_text(encoding=\"utf-8\")) if Path('graphify-out/.graphify_semantic_new.json').exists() else {'nodes':[],'edges':[],'hyperedges':[]} +saved = save_semantic_cache(new.get('nodes', []), new.get('edges', []), new.get('hyperedges', []), root='INPUT_PATH') +print(f'Cached {saved} files') +" +``` + +Merge cached + new results into `graphify-out/.graphify_semantic.json`: +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path + +cached = json.loads(Path('graphify-out/.graphify_cached.json').read_text(encoding=\"utf-8\")) if Path('graphify-out/.graphify_cached.json').exists() else {'nodes':[],'edges':[],'hyperedges':[]} +new = json.loads(Path('graphify-out/.graphify_semantic_new.json').read_text(encoding=\"utf-8\")) if Path('graphify-out/.graphify_semantic_new.json').exists() else {'nodes':[],'edges':[],'hyperedges':[]} + +all_nodes = cached['nodes'] + new.get('nodes', []) +all_edges = cached['edges'] + new.get('edges', []) +all_hyperedges = cached.get('hyperedges', []) + new.get('hyperedges', []) +seen = set() +deduped = [] +for n in all_nodes: + if n['id'] not in seen: + seen.add(n['id']) + deduped.append(n) + +merged = { + 'nodes': deduped, + 'edges': all_edges, + 'hyperedges': all_hyperedges, + 'input_tokens': new.get('input_tokens', 0), + 'output_tokens': new.get('output_tokens', 0), +} +Path('graphify-out/.graphify_semantic.json').write_text(json.dumps(merged, indent=2, ensure_ascii=False), encoding=\"utf-8\") +print(f'Extraction complete - {len(deduped)} nodes, {len(all_edges)} edges ({len(cached[\"nodes\"])} from cache, {len(new.get(\"nodes\",[]))} new)') +" +``` +Clean up temp files: `rm -f graphify-out/.graphify_cached.json graphify-out/.graphify_uncached.txt graphify-out/.graphify_semantic_new.json` + +#### Part C - Merge AST + semantic into final extraction + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from pathlib import Path + +ast = json.loads(Path('graphify-out/.graphify_ast.json').read_text(encoding=\"utf-8\")) +sem = json.loads(Path('graphify-out/.graphify_semantic.json').read_text(encoding=\"utf-8\")) + +# Merge: AST nodes first, semantic nodes deduplicated by id +seen = {n['id'] for n in ast['nodes']} +merged_nodes = list(ast['nodes']) +for n in sem['nodes']: + if n['id'] not in seen: + merged_nodes.append(n) + seen.add(n['id']) + +merged_edges = ast['edges'] + sem['edges'] +merged_hyperedges = sem.get('hyperedges', []) +merged = { + 'nodes': merged_nodes, + 'edges': merged_edges, + 'hyperedges': merged_hyperedges, + 'input_tokens': sem.get('input_tokens', 0), + 'output_tokens': sem.get('output_tokens', 0), +} +Path('graphify-out/.graphify_extract.json').write_text(json.dumps(merged, indent=2, ensure_ascii=False), encoding=\"utf-8\") +total = len(merged_nodes) +edges = len(merged_edges) +print(f'Merged: {total} nodes, {edges} edges ({len(ast[\"nodes\"])} AST + {len(sem[\"nodes\"])} semantic)') +" +``` + +### Step 4 - Build graph, cluster, analyze, generate outputs + +**Before starting:** the code blocks below pass `directed=IS_DIRECTED` to `build_from_json()`. Replace `IS_DIRECTED` with `True` if `--directed` was given (builds a `DiGraph` preserving edge direction source→target), otherwise `False` (the default undirected `Graph`). Substitute it the same way you substitute `INPUT_PATH` — do not leave the literal `IS_DIRECTED` in the code. + +```bash +mkdir -p graphify-out +$(cat graphify-out/.graphify_python) -c " +import sys, json +from graphify.build import build_from_json +from graphify.cluster import cluster, score_all +from graphify.analyze import god_nodes, surprising_connections, suggest_questions +from graphify.report import generate +from graphify.export import to_json +from pathlib import Path + +extraction = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +detection = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) + +# root= mirrors the --update runbook (#1361): relativize source_file to the same +# base so the full build and incremental --update never drift apart on re-extract. +G = build_from_json(extraction, root='INPUT_PATH', directed=IS_DIRECTED) +# Guard BEFORE any write: an empty extraction must not clobber a good graph.json / +# GRAPH_REPORT.md / analysis sidecar. Check immediately after build (#1392). +if G.number_of_nodes() == 0: + print('ERROR: Graph is empty - extraction produced no nodes.') + print('Possible causes: all files were skipped, binary-only corpus, or extraction failed.') + raise SystemExit(1) +communities = cluster(G) +cohesion = score_all(G, communities) +tokens = {'input': extraction.get('input_tokens', 0), 'output': extraction.get('output_tokens', 0)} +gods = god_nodes(G) +surprises = surprising_connections(G, communities) +labels = {cid: 'Community ' + str(cid) for cid in communities} +# Placeholder questions - regenerated with real labels in Step 5 +questions = suggest_questions(G, communities, labels) + +# Export FIRST and honor the #479 shrink-guard: to_json returns False (writing +# nothing) when the new graph is smaller than the existing graph.json. Only write +# GRAPH_REPORT.md + the analysis sidecar when the graph was actually written, so +# they never describe a graph that graph.json doesn't contain (#1392). +wrote = to_json(G, communities, 'graphify-out/graph.json') +if not wrote: + print('ERROR: refused to shrink graphify-out/graph.json (existing graph has more nodes; #479).') + print('If this shrink is intentional (you deleted files), re-run a full build with --force.') + raise SystemExit(1) +report = generate(G, communities, cohesion, labels, gods, surprises, detection, tokens, 'INPUT_PATH', suggested_questions=questions) +Path('graphify-out/GRAPH_REPORT.md').write_text(report, encoding=\"utf-8\") +analysis = { + 'communities': {str(k): v for k, v in communities.items()}, + 'cohesion': {str(k): v for k, v in cohesion.items()}, + 'gods': gods, + 'surprises': surprises, + 'questions': questions, +} +Path('graphify-out/.graphify_analysis.json').write_text(json.dumps(analysis, indent=2, ensure_ascii=False), encoding=\"utf-8\") +print(f'Graph: {G.number_of_nodes()} nodes, {G.number_of_edges()} edges, {len(communities)} communities') +" +``` + +If this step prints `ERROR: Graph is empty`, stop and tell the user what happened - do not proceed to labeling or visualization. + +Replace INPUT_PATH with the actual path. + +### Step 4.5 - Graph health check (read-only integrity gate) + +A non-destructive diagnostic on the extraction, before labeling. It surfaces edge collapse, dangling/missing endpoints, and self-loops — the silent-corruption modes of incremental updates and AST/LLM id mismatches. Read-only; never aborts. + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +from graphify.diagnostics import diagnose_extraction, format_diagnostic_report + +extraction = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +summary = diagnose_extraction(extraction, directed=IS_DIRECTED, root='INPUT_PATH') +print(format_diagnostic_report(summary)) +flags = [f'{summary[k]} {label}' for k, label in ( + ('dangling_endpoint_edges', 'dangling-endpoint edges'), + ('missing_endpoint_edges', 'missing-endpoint edges'), + ('self_loop_edges', 'self-loop edges'), + ('directed_same_endpoint_collapsed_edges', 'collapsed (directed) edges'), + ('undirected_same_endpoint_collapsed_edges', 'collapsed (undirected) edges'), +) if summary.get(k, 0)] +print('GRAPH HEALTH WARNING: ' + '; '.join(flags) + ' - graph may be incomplete/corrupt.' if flags else 'Graph health: OK (no dangling/missing/collapsed edges).') +" +``` + +Substitute `IS_DIRECTED` and `INPUT_PATH` as in Step 4. If a `GRAPH HEALTH WARNING` prints, surface it in the final summary (do not abort — the graph is still usable, but the integrity issue must be visible, per the Honesty Rules). + +### Step 5 - Label communities + +Read `graphify-out/.graphify_analysis.json`. For each community key, look at its node labels and write a 2-5 word plain-language name (e.g. "Attention Mechanism", "Training Pipeline", "Data Loading"). + +Then regenerate the report and save the labels for the visualizer: + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from graphify.build import build_from_json +from graphify.cluster import score_all +from graphify.analyze import god_nodes, surprising_connections, suggest_questions +from graphify.report import generate +from pathlib import Path + +extraction = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +detection = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +analysis = json.loads(Path('graphify-out/.graphify_analysis.json').read_text(encoding=\"utf-8\")) + +# root= as in Step 4 / the --update runbook (#1361) — same base for node-key parity. +G = build_from_json(extraction, root='INPUT_PATH', directed=IS_DIRECTED) +communities = {int(k): v for k, v in analysis['communities'].items()} +cohesion = {int(k): v for k, v in analysis['cohesion'].items()} +tokens = {'input': extraction.get('input_tokens', 0), 'output': extraction.get('output_tokens', 0)} + +# LABELS - replace these with the names you chose above +labels = LABELS_DICT + +# Regenerate questions with real community labels (labels affect question phrasing) +questions = suggest_questions(G, communities, labels) + +report = generate(G, communities, cohesion, labels, analysis['gods'], analysis['surprises'], detection, tokens, 'INPUT_PATH', suggested_questions=questions) +Path('graphify-out/GRAPH_REPORT.md').write_text(report, encoding=\"utf-8\") +Path('graphify-out/.graphify_labels.json').write_text(json.dumps({str(k): v for k, v in labels.items()}, ensure_ascii=False), encoding=\"utf-8\") +print('Report updated with community labels') +" +``` + +Replace `LABELS_DICT` with the actual dict you constructed (e.g. `{0: "Attention Mechanism", 1: "Training Pipeline"}`). +Replace INPUT_PATH with the actual path. + +### Step 6 - Generate Obsidian vault (opt-in) + HTML + +**Generate HTML always** (unless `--no-viz`). **Obsidian vault only if `--obsidian` was explicitly given** — skip it otherwise, it generates one file per node. + +If `--obsidian` was given: + +- If `--obsidian-dir ` was also given, pass it via `--dir`. Otherwise defaults to `graphify-out/obsidian`. + +```bash +graphify export obsidian +# or with custom dir: graphify export obsidian --dir ~/vaults/my-project +``` + +Generate the HTML graph (always, unless `--no-viz`): + +```bash +graphify export html # auto-aggregates to community view if graph > 5000 nodes +# or: graphify export html --no-viz +``` + +### Steps 6b-8 - Wiki, Neo4j, FalkorDB, SVG, GraphML, MCP, benchmark (only on their flags) + +These run only when their flag is present (`--wiki`, `--neo4j`/`--neo4j-push`, `--falkordb`/`--falkordb-push`, `--svg`, `--graphml`, `--mcp`) or, for the token-reduction benchmark, when `total_words` exceeds 5,000. A default run with no export flags skips all of them. See `references/exports.md` for each one. Run any `--wiki` export before Step 9 cleanup so `.graphify_labels.json` is still available. + +--- + +### Step 9 - Save manifest, update cost tracker, clean up, and report + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +from datetime import datetime, timezone +from graphify.detect import save_manifest + +# Save manifest for --update +detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +# In --update mode, 'all_files' carries the full corpus; 'files' is the changed +# subset. Full-rebuild mode populates only 'files', so the fallback handles that. +# root= relativizes the manifest keys to the scan root (same base as the build), +# so the on-disk manifest is portable across clones/machines and a later --update +# matches cached files instead of missing every one (#1417). +save_manifest(detect.get('all_files') or detect['files'], root='INPUT_PATH') + +# Update cumulative cost tracker +extract = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +input_tok = extract.get('input_tokens', 0) +output_tok = extract.get('output_tokens', 0) + +cost_path = Path('graphify-out/cost.json') +if cost_path.exists(): + cost = json.loads(cost_path.read_text(encoding=\"utf-8\")) +else: + cost = {'runs': [], 'total_input_tokens': 0, 'total_output_tokens': 0} + +cost['runs'].append({ + 'date': datetime.now(timezone.utc).isoformat(), + 'input_tokens': input_tok, + 'output_tokens': output_tok, + 'files': detect.get('total_files', 0), +}) +cost['total_input_tokens'] += input_tok +cost['total_output_tokens'] += output_tok +cost_path.write_text(json.dumps(cost, indent=2, ensure_ascii=False), encoding=\"utf-8\") + +print(f'This run: {input_tok:,} input tokens, {output_tok:,} output tokens') +print(f'All time: {cost[\"total_input_tokens\"]:,} input, {cost[\"total_output_tokens\"]:,} output ({len(cost[\"runs\"])} runs)') +" +rm -f graphify-out/.graphify_detect.json graphify-out/.graphify_extract.json graphify-out/.graphify_ast.json graphify-out/.graphify_semantic.json graphify-out/.graphify_analysis.json +find graphify-out -maxdepth 1 -name '.graphify_chunk_*.json' -delete 2>/dev/null +rm -f graphify-out/.needs_update 2>/dev/null || true +``` + +Replace INPUT_PATH with the actual path (same value used in Steps 4-5) so the manifest is relativized to the scan root. + +Tell the user (omit the obsidian line unless --obsidian was given): +``` +Graph complete. Outputs in PATH_TO_DIR/graphify-out/ + + graph.html - interactive graph, open in browser + GRAPH_REPORT.md - audit report + graph.json - raw graph data + obsidian/ - Obsidian vault (only if --obsidian was given) +``` + +If graphify saved you time, consider supporting it: https://github.com/sponsors/safishamsi + +Replace PATH_TO_DIR with the actual absolute path of the directory that was processed. + +Then paste these sections from GRAPH_REPORT.md directly into the chat: +- God Nodes +- Surprising Connections +- Suggested Questions + +Do NOT paste the full report - just those three sections. Keep it concise. + +Then immediately offer to explore. Pick the single most interesting suggested question from the report - the one that crosses the most community boundaries or has the most surprising bridge node - and ask: + +> "The most interesting question this graph can answer: **[question]**. Want me to trace it?" + +If the user says yes, run `/graphify query "[question]"` on the graph and walk them through the answer using the graph structure - which nodes connect, which community boundaries get crossed, what the path reveals. Keep going as long as they want to explore. Each answer should end with a natural follow-up ("this connects to X - want to go deeper?") so the session feels like navigation, not a one-shot report. + +The graph is the map. Your job after the pipeline is to be the guide. + +--- + +## Interpreter guard for subcommands + +Before running any subcommand below (`--update`, `--cluster-only`, `query`, `path`, `explain`, `add`), check that `.graphify_python` exists. If it's missing (e.g. user deleted `graphify-out/`), re-resolve the interpreter first: + +```bash +if [ ! -f graphify-out/.graphify_python ]; then + GRAPHIFY_BIN=$(which graphify 2>/dev/null) + if [ -n "$GRAPHIFY_BIN" ]; then + PYTHON=$(head -1 "$GRAPHIFY_BIN" | tr -d '#!') + case "$PYTHON" in *[!a-zA-Z0-9/_.@-]*) PYTHON="python3" ;; esac + else + PYTHON="python3" + fi + mkdir -p graphify-out + "$PYTHON" -c "import sys; open('graphify-out/.graphify_python', 'w', encoding='utf-8').write(sys.executable)" +fi +``` + +## For --update and --cluster-only + +Both are non-default subcommands. `--update` re-extracts only new or changed files; `--cluster-only` reruns clustering on the existing graph. See `references/update.md` for both flows. + +--- + +## For /graphify query + +When `graphify-out/graph.json` already exists and the user asks a question about the corpus, answer from the graph rather than rebuilding it: + +```bash +graphify query "" +``` + +Before traversal, expand the question against the graph's own vocabulary so a wording mismatch does not collapse the answer to noise. If the `graphify query` CLI is unavailable, fall back to an inline NetworkX traversal of `graphify-out/graph.json`. Answer using only what the graph output contains, and quote `source_location` when citing a specific fact. For that vocab-expansion step, the BFS/DFS traversal modes, the `--budget` cap, the NetworkX fallback, `save-result` feedback, and the `/graphify path` and `/graphify explain` flows, see `references/query.md`. + +--- + +## For /graphify add and --watch + +Neither is part of the default build. When the user runs `/graphify add ` to fetch a URL into the corpus, or passes `--watch` to auto-rebuild on file changes, see `references/add-watch.md`. + +--- + +## For the commit hook and native CLAUDE.md integration + +When the user asks to install the post-commit auto-rebuild hook or wire graphify into a project's CLAUDE.md, see `references/hooks.md`. + +--- + +## Honesty Rules + +- Never invent an edge. If unsure, use AMBIGUOUS. +- Never skip the corpus check warning. +- Always show token cost in the report. +- Never hide cohesion scores behind symbols - show the raw number. +- Never run HTML viz on a graph with more than 5,000 nodes without warning the user. diff --git a/.codex/graphify/references/add-watch.md b/.codex/graphify/references/add-watch.md new file mode 100644 index 0000000..7784434 --- /dev/null +++ b/.codex/graphify/references/add-watch.md @@ -0,0 +1,56 @@ +# graphify reference: add a URL and watch a folder + +Load this when the user ran `/graphify add ` or passed `--watch`. Neither is part of the default build. + +## For /graphify add + +Fetch a URL and add it to the corpus, then update the graph. + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys +from graphify.ingest import ingest +from pathlib import Path + +try: + out = ingest('URL', Path('./raw'), author='AUTHOR', contributor='CONTRIBUTOR') + print(f'Saved to {out}') +except ValueError as e: + print(f'error: {e}', file=sys.stderr) + sys.exit(1) +except RuntimeError as e: + print(f'error: {e}', file=sys.stderr) + sys.exit(1) +" +``` + +Replace `URL` with the actual URL, `AUTHOR` with the user's name if provided, `CONTRIBUTOR` likewise. If the command exits with an error, tell the user what went wrong - do not silently continue. After a successful save, automatically run the `--update` pipeline on `./raw` to merge the new file into the existing graph. + +Supported URL types (auto-detected): +- YouTube / any video URL → audio downloaded via yt-dlp, transcribed to `.txt` on next run (requires `pip install 'graphifyy[video]'`) +- Twitter/X → fetched via oEmbed, saved as `.md` with tweet text and author +- arXiv → abstract + metadata saved as `.md` +- PDF → downloaded as `.pdf` +- Images (.png/.jpg/.webp) → downloaded, Claude vision extracts on next run +- Any webpage → converted to markdown via html2text + +--- + +## For --watch + +Start a background watcher that monitors a folder and auto-updates the graph when files change. + +```bash +$(cat graphify-out/.graphify_python) -m graphify.watch INPUT_PATH --debounce 3 +``` + +Replace INPUT_PATH with the folder to watch. Behavior depends on what changed: + +- **Code files only (.py, .ts, .go, etc.):** re-runs AST extraction + rebuild + cluster immediately, no LLM needed. `graph.json` and `GRAPH_REPORT.md` are updated automatically. +- **Docs, papers, or images:** writes a `graphify-out/needs_update` flag and prints a notification to run `/graphify --update` (LLM semantic re-extraction required). + +Debounce (default 3s): waits until file activity stops before triggering, so a wave of parallel agent writes doesn't trigger a rebuild per file. + +Press Ctrl+C to stop. + +For agentic workflows: run `--watch` in a background terminal. Code changes from agent waves are picked up automatically between waves. If agents are also writing docs or notes, you'll need a manual `/graphify --update` after those waves. diff --git a/.codex/graphify/references/exports.md b/.codex/graphify/references/exports.md new file mode 100644 index 0000000..242ff86 --- /dev/null +++ b/.codex/graphify/references/exports.md @@ -0,0 +1,87 @@ +# graphify reference: extra exports and benchmark + +Load this when the user passed one of the export flags (`--wiki`, `--neo4j`, `--neo4j-push`, `--falkordb`, `--falkordb-push`, `--svg`, `--graphml`, `--mcp`), or when the corpus is large enough for the token-reduction benchmark. Each step runs only for its own flag. + +### Step 6b - Wiki (only if --wiki flag) + +**Only run this step if `--wiki` was explicitly given in the original command.** + +Run this before Step 9 (cleanup) so `.graphify_labels.json` is still available. + +```bash +graphify export wiki +``` + +### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag) + +**If `--neo4j`** - generate a Cypher file for manual import: + +```bash +graphify export neo4j +``` + +**If `--neo4j-push `** - push directly to a running Neo4j instance. Ask the user for credentials if not provided: + +```bash +graphify export neo4j --push bolt://localhost:7687 --user neo4j --password PASSWORD +``` + +Default URI is `bolt://localhost:7687`, default user is `neo4j`. Uses MERGE - safe to re-run without creating duplicates. + +### Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag) + +**If `--falkordb`** - generate a Cypher file. The statements are OpenCypher, but FalkorDB's `GRAPH.QUERY` runs one statement at a time (no bulk script import like Neo4j's `cypher-shell`), so prefer `--falkordb-push` to load a graph. Use this only when you want the portable `cypher.txt` artifact: + +```bash +graphify export falkordb +``` + +**If `--falkordb-push `** - push directly to a running FalkorDB instance. Credentials are optional; ask the user only if the instance requires auth: + +```bash +graphify export falkordb --push falkordb://localhost:6379 +``` + +Default URI is `falkordb://localhost:6379` (the scheme is informational - `redis://` or a bare `host:port` work too), auth is optional, and the target graph defaults to `graphify`. Uses MERGE - safe to re-run without creating duplicates. + +### Step 7b - SVG export (only if --svg flag) + +```bash +graphify export svg +``` + +### Step 7c - GraphML export (only if --graphml flag) + +```bash +graphify export graphml +``` + +### Step 7d - MCP server (only if --mcp flag) + +```bash +$(cat graphify-out/.graphify_python) -m graphify.serve graphify-out/graph.json +``` + +This starts a stdio MCP server that exposes tools: `query_graph`, `get_node`, `get_neighbors`, `get_community`, `god_nodes`, `graph_stats`, `shortest_path`. Add to Claude Desktop or any MCP-compatible agent orchestrator so other agents can query the graph live. + +To configure in Claude Desktop, add to `claude_desktop_config.json`. Claude Desktop can't run `$(...)`, and under `uv tool install` the system `python3` can't import graphify — so set `command` to the **absolute interpreter path** printed by `cat graphify-out/.graphify_python`: +```json +{ + "mcpServers": { + "graphify": { + "command": "", + "args": ["-m", "graphify.serve", "/absolute/path/to/graphify-out/graph.json"] + } + } +} +``` + +### Step 8 - Token reduction benchmark (only if total_words > 5000) + +If `total_words` from `graphify-out/.graphify_detect.json` is greater than 5,000, run: + +```bash +graphify benchmark +``` + +Print the output directly in chat. If `total_words <= 5000`, skip silently - the graph value is structural clarity, not token compression, for small corpora. diff --git a/.codex/graphify/references/extraction-spec.md b/.codex/graphify/references/extraction-spec.md new file mode 100644 index 0000000..4b278b2 --- /dev/null +++ b/.codex/graphify/references/extraction-spec.md @@ -0,0 +1,31 @@ +# graphify reference: extraction subagent prompt (compact) + +Load this in Step 3 Part B when the corpus has at least one doc, paper, or image chunk. A pure-code corpus skips Part B and never reads this file. Each semantic subagent receives the prompt below verbatim (substitute FILE_LIST, CHUNK_NUM, TOTAL_CHUNKS, and DEEP_MODE). + +``` +You are a graphify extraction subagent. Read the files listed and extract a knowledge graph fragment. +Output ONLY valid JSON matching the schema below - no explanation, no markdown fences, no preamble. + +Files (chunk CHUNK_NUM of TOTAL_CHUNKS): +FILE_LIST + +Rules: +- EXTRACTED: relationship explicit in source (import, call, citation) +- INFERRED: reasonable inference (shared structure, implied dependency) +- AMBIGUOUS: uncertain — flag it, do not omit +- Code files: semantic edges AST cannot find. Do not re-extract imports. When adding `calls` edges: source is the caller, target is the callee, never reversed; keep `calls` within one language. +- Doc/paper files: named concepts, entities, citations. Store rationale (WHY decisions were made) as a `rationale` attribute on the relevant node, not as a separate node. Use `file_type:"rationale"` for concept-like nodes (ideas, principles, mechanisms) and `file_type:"concept"` for named concepts. `file_type` MUST be one of exactly these six values: `code`, `document`, `paper`, `image`, `rationale`, `concept`. Any other value is invalid and will be rejected. +- Image files: use vision — understand what the image IS, not just OCR +- DEEP_MODE (if --mode deep): be aggressive with INFERRED edges — indirect deps, shared assumptions, latent couplings. Mark uncertain ones AMBIGUOUS instead of omitting. +- Semantic similarity: if two concepts solve the same problem or represent the same idea without a structural link (no import, call, or citation), add a `semantically_similar_to` edge marked INFERRED with confidence_score 0.6-0.95. Non-obvious cross-file links only. +- Hyperedges: if 3+ nodes share a concept, flow, or pattern not captured by pairwise edges, add a hyperedge to a top-level `hyperedges` array. Use sparingly. Max 3 per chunk. +- If a file has YAML frontmatter (--- ... ---), copy source_url, captured_at, author, contributor onto every node from that file. +- confidence_score is REQUIRED on every edge — never omit it, never use 0.5 as a default. EXTRACTED = 1.0 always. INFERRED: pick exactly ONE of 0.95 (direct structural evidence), 0.85 (strong inference), 0.75 (reasonable inference), 0.65 (weak inference), 0.55 (speculative but plausible) — never 0.5; if none fit, mark the edge AMBIGUOUS. AMBIGUOUS = 0.1-0.3. + +Node ID format: lowercase, only `[a-z0-9_]`, no dots or slashes. Format `{stem}_{entity}` where stem is the full repo-relative path with the extension dropped, every segment joined with `_` (each lowercased with non-alphanumeric chars replaced by `_`) and entity is the symbol name similarly normalized. Use every directory level, not just the immediate parent. `src/auth/session.py` + `ValidateToken` → `src_auth_session_validatetoken`. Top-level files use just the filename stem. This must match the AST extractor's ID. Never append chunk or sequence suffixes — IDs must be deterministic from the label alone. + +Output exactly this JSON (no other text): +{"nodes":[{"id":"auth_session_validatetoken","label":"Human Readable Name","file_type":"code|document|paper|image|rationale|concept","source_file":"","source_location":null,"source_url":null,"captured_at":null,"author":null,"contributor":null}],"edges":[{"source":"node_id","target":"node_id","relation":"calls|implements|references|cites|conceptually_related_to|shares_data_with|semantically_similar_to|rationale_for","confidence":"EXTRACTED|INFERRED|AMBIGUOUS","confidence_score":1.0,"source_file":"","source_location":null,"weight":1.0}],"hyperedges":[{"id":"snake_case_id","label":"Human Readable Label","nodes":["node_id1","node_id2","node_id3"],"relation":"participate_in|implement|form","confidence":"EXTRACTED|INFERRED","confidence_score":0.75,"source_file":""}],"input_tokens":0,"output_tokens":0} + +source_file RULE: set source_file to the FILE_LIST path for that file VERBATIM (absolute, no shortening to basename, no re-relativizing, no separator change). Keeps full build and --update on one base so build_merge's replace matches instead of duplicating. +``` diff --git a/.codex/graphify/references/github-and-merge.md b/.codex/graphify/references/github-and-merge.md new file mode 100644 index 0000000..a41ea06 --- /dev/null +++ b/.codex/graphify/references/github-and-merge.md @@ -0,0 +1,46 @@ +# graphify reference: GitHub clone and cross-repo merge + +Load this when the user passed one or more `https://github.com/...` URLs, or named several local subfolders to merge into one graph. + +### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given) + +**Single repo:** +```bash +LOCAL_PATH=$(graphify clone [--branch ]) +# Use LOCAL_PATH as the target for all subsequent steps +``` + +**Multiple repos (cross-repo graph):** +```bash +# Clone each repo, run the full pipeline on each, then merge +graphify clone # → ~/.graphify/repos// +graphify clone # → ~/.graphify/repos// +# Run /graphify on each local path to produce their graph.json files +# Then merge: +graphify merge-graphs \ + ~/.graphify/repos///graphify-out/graph.json \ + ~/.graphify/repos///graphify-out/graph.json \ + --out graphify-out/cross-repo-graph.json +``` + +Graphify clones into `~/.graphify/repos//` and reuses existing clones on repeat runs. Each node in the merged graph carries a `repo` attribute so you can filter by origin. + +**Multiple local subfolders (monorepo or multi-service layout):** + +The skill pipeline writes all intermediate and final outputs to `graphify-out/` in the current working directory. Running the skill on each subfolder separately will clobber the same output dir. Instead, use the CLI directly for each subfolder — it places `graphify-out/` *inside* the scanned path: + +```bash +graphify extract ./core/ # → ./core/graphify-out/graph.json +graphify extract ./service/ # → ./service/graphify-out/graph.json +graphify extract ./platform/ # → ./platform/graphify-out/graph.json +# Add --backend gemini|kimi|openai|deepseek|claude-cli depending on which API key you have set + +# Then merge at the project root: +graphify merge-graphs \ + ./core/graphify-out/graph.json \ + ./service/graphify-out/graph.json \ + ./platform/graphify-out/graph.json \ + --out graphify-out/graph.json +``` + +Once `graphify-out/graph.json` exists, the fast path above takes over: any codebase question runs `graphify query` directly on the merged graph — no re-extraction, no size gate. diff --git a/.codex/graphify/references/hooks.md b/.codex/graphify/references/hooks.md new file mode 100644 index 0000000..438b8b1 --- /dev/null +++ b/.codex/graphify/references/hooks.md @@ -0,0 +1,33 @@ +# graphify reference: commit hook and native CLAUDE.md integration + +Load this when the user asked to install the post-commit hook or wire graphify into a project's CLAUDE.md. + +## For git commit hook + +Install a post-commit hook that auto-rebuilds the graph after every commit. No background process needed - triggers once per commit, works with any editor. + +```bash +graphify hook install # install +graphify hook uninstall # remove +graphify hook status # check +``` + +After every `git commit`, the hook detects which code files changed (via `git diff HEAD~1`), re-runs AST extraction on those files, and rebuilds `graph.json` and `GRAPH_REPORT.md`. Doc/image changes are ignored by the hook - run `/graphify --update` manually for those. + +If a post-commit hook already exists, graphify appends to it rather than replacing it. + +--- + +## For native CLAUDE.md integration + +Run once per project to make graphify always-on in Claude Code sessions: + +```bash +graphify claude install +``` + +This writes a `## graphify` section to the local `CLAUDE.md` that instructs Claude to check the graph before answering codebase questions and rebuild it after code changes. No manual `/graphify` needed in future sessions. + +```bash +graphify claude uninstall # remove the section +``` diff --git a/.codex/graphify/references/query.md b/.codex/graphify/references/query.md new file mode 100644 index 0000000..52321f1 --- /dev/null +++ b/.codex/graphify/references/query.md @@ -0,0 +1,311 @@ +# graphify reference: query, path, explain + +Load this when the user asks a question against an existing graph, or runs `/graphify path` or `/graphify explain`. The core's query stub points here for the full traversal flow. These flows use the `graphify query` CLI when it is available and fall back to an inline NetworkX traversal otherwise. + +Two traversal modes - choose based on the question: + +| Mode | Flag | Best for | +|------|------|----------| +| BFS (default) | _(none)_ | "What is X connected to?" - broad context, nearest neighbors first | +| DFS | `--dfs` | "How does X reach Y?" - trace a specific chain or dependency path | + +First check the graph exists: +```bash +$(cat graphify-out/.graphify_python) -c " +from pathlib import Path +if not Path('graphify-out/graph.json').exists(): + print('ERROR: No graph found. Run /graphify first to build the graph.') + raise SystemExit(1) +" +``` +If it fails, stop and tell the user to run `/graphify ` first. + +### Step 0 — Constrained query expansion (REQUIRED before traversal) + +graphify's `query` CLI matches nodes via case-folded substring + IDF — there is **no stemming, no synonyms, no cross-language match** inside the binary, and the inline fallback below matches the same way. If the user's question uses different language or different domain vocabulary than the graph's labels (user says "обработчик" / graph says "handler"; user says "authentication" / graph says "Guardian"), the literal matcher returns 0 hits and the answer collapses to noise. + +Fix this **without inventing tokens** by expanding the query against the actual graph vocabulary first: + +1. Extract the token vocabulary from node labels: +```bash +$(cat graphify-out/.graphify_python) -c " +import json, re +from pathlib import Path +data = json.loads(Path('graphify-out/graph.json').read_text()) +vocab = set() +for n in data['nodes']: + for c in re.findall(r'[^\W\d_]+', n.get('label','') or '', re.UNICODE): + parts = re.findall(r'[A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+', c) or [c] + for p in parts: + t = p.lower() + if 3 <= len(t) <= 30: + vocab.add(t) +Path('graphify-out/.vocab.txt').write_text('\n'.join(sorted(vocab))) +print(f'vocab: {len(vocab)} tokens') +" +``` + +2. Read `graphify-out/.vocab.txt`. Then for the user's question, select **up to 12 tokens from this exact list** that semantically match the query intent. Hard constraints: + - You MUST pick only tokens present in the vocabulary file. Do NOT invent tokens. + - If a query concept has no plausible token in the vocab, skip it — do not substitute a near-synonym from training memory. + - If **no** vocab tokens match the query at all, output an empty list and tell the user the corpus has no relevant vocabulary for this question. Do not fabricate a search. + - Translate cross-language: Russian "аутентификация" → look for `auth`, `credential`, `token`, `security` IFF present in vocab. + - Morphology: "handlers" maps to `handler` IFF present; "todos" maps to `todo` IFF present. + +3. Print the selection explicitly to the user before running the query, so the expansion is auditable: +``` +Query expanded to (from graph vocab, N tokens): [token1, token2, ...] +``` +If the list is empty, say so plainly and stop — do not proceed to traversal. + +### Step 1 — Traversal + +Build the **expanded query string** by joining the selected tokens with spaces. Use this string as `QUESTION` below — NOT the original user question. (The original question is preserved only for `save-result` at the end.) + +Prefer the CLI when it is installed: +```bash +graphify query "QUESTION" +# or: graphify query "QUESTION" --dfs --budget 3000 +``` + +If the CLI is unavailable, load `graphify-out/graph.json` and run the traversal inline: + +1. Find the 1-3 nodes whose label best matches the expanded tokens. +2. Run the appropriate traversal from each starting node. +3. Read the subgraph - node labels, edge relations, confidence tags, source locations. +4. Answer using **only** what the graph contains. Quote `source_location` when citing a specific fact. +5. If the graph lacks enough information, say so - do not hallucinate edges. + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from networkx.readwrite import json_graph +import networkx as nx +from pathlib import Path + +data = json.loads(Path('graphify-out/graph.json').read_text()) +G = json_graph.node_link_graph(data, edges='links') + +question = 'QUESTION' +mode = 'MODE' # 'bfs' or 'dfs' +terms = [t.lower() for t in question.split() if len(t) >= 3] # match the vocab threshold; keeps api/jwt/ios (#1392) + +# Find best-matching start nodes +scored = [] +for nid, ndata in G.nodes(data=True): + label = ndata.get('label', '').lower() + score = sum(1 for t in terms if t in label) + if score > 0: + scored.append((score, nid)) +scored.sort(reverse=True) +start_nodes = [nid for _, nid in scored[:3]] + +if not start_nodes: + print('No matching nodes found for query terms:', terms) + sys.exit(0) + +subgraph_nodes = set() +subgraph_edges = [] + +if mode == 'dfs': + # DFS: follow one path as deep as possible before backtracking. + # Depth-limited to 6 to avoid traversing the whole graph. + visited = set() + stack = [(n, 0) for n in reversed(start_nodes)] + while stack: + node, depth = stack.pop() + if node in visited or depth > 6: + continue + visited.add(node) + subgraph_nodes.add(node) + for neighbor in G.neighbors(node): + if neighbor not in visited: + stack.append((neighbor, depth + 1)) + subgraph_edges.append((node, neighbor)) +else: + # BFS: explore all neighbors layer by layer up to depth 3. + frontier = set(start_nodes) + subgraph_nodes = set(start_nodes) + for _ in range(3): + next_frontier = set() + for n in frontier: + for neighbor in G.neighbors(n): + if neighbor not in subgraph_nodes: + next_frontier.add(neighbor) + subgraph_edges.append((n, neighbor)) + subgraph_nodes.update(next_frontier) + frontier = next_frontier + +# Token-budget aware output: rank by relevance, cut at budget (~4 chars/token) +token_budget = BUDGET # default 2000 +char_budget = token_budget * 4 + +# Score each node by term overlap for ranked output +def relevance(nid): + label = G.nodes[nid].get('label', '').lower() + return sum(1 for t in terms if t in label) + +ranked_nodes = sorted(subgraph_nodes, key=relevance, reverse=True) + +lines = [f'Traversal: {mode.upper()} | Start: {[G.nodes[n].get(\"label\",n) for n in start_nodes]} | {len(subgraph_nodes)} nodes'] +for nid in ranked_nodes: + d = G.nodes[nid] + lines.append(f' NODE {d.get(\"label\", nid)} [src={d.get(\"source_file\",\"\")} loc={d.get(\"source_location\",\"\")}]') +for u, v in subgraph_edges: + if u in subgraph_nodes and v in subgraph_nodes: + _raw = G[u][v]; d = next(iter(_raw.values()), {}) if isinstance(G, nx.MultiGraph) else _raw + lines.append(f' EDGE {G.nodes[u].get(\"label\",u)} --{d.get(\"relation\",\"\")} [{d.get(\"confidence\",\"\")}]--> {G.nodes[v].get(\"label\",v)}') + +output = '\n'.join(lines) +if len(output) > char_budget: + output = output[:char_budget] + f'\n... (truncated at ~{token_budget} token budget - use --budget N for more)' +print(output) +" +``` + +Replace `QUESTION` with the **expanded** query string, `MODE` with `bfs` or `dfs`, and `BUDGET` with the token budget (default `2000`, or whatever `--budget N` specifies). Then answer based on the subgraph output above, using only what the graph contains. + +After writing the answer, save it back into the graph so it improves future queries. Include the expanded tokens inside the `--answer` text (e.g. `"Expanded from original query via vocab: [tokens]. Then traversed..."`) so the next `--update` extracts the expansion history as a graph node: + +```bash +$(cat graphify-out/.graphify_python) -m graphify save-result --question "ORIGINAL_QUESTION" --answer "ANSWER" --type query --nodes NODE1 NODE2 +``` + +Replace `ORIGINAL_QUESTION` with the user's verbatim question, `ANSWER` with your full answer text (containing the expanded-token trace), `NODE1 NODE2` with the list of node labels you cited. This closes the feedback loop: the next `--update` will extract this Q&A as a node in the graph. + +**Work memory (self-improving loop).** Add an `--outcome` so future sessions learn from this one — append `--outcome useful|dead_end|corrected` to the `save-result` command (and `--correction "the right answer"` when correcting): + +- `useful` — the cited nodes answered the question well (they become *preferred sources*). +- `dead_end` — the question/path led nowhere; don't re-derive it next time. +- `corrected` — the saved answer was wrong; `--correction` records what was right. + +At the **start** of graph work, refresh and read the lessons: run `graphify reflect --if-stale` (cheap, deterministic, no LLM; `--if-stale` makes it a no-op when `LESSONS.md` is already newer than every input, e.g. when the git hook just refreshed it), then read `graphify-out/reflections/LESSONS.md`. It lists **preferred sources** (start there), **known dead ends** (skip them), and prior **corrections**. Running `reflect` yourself keeps the lessons current even without the git hook installed; if the post-commit hook *is* installed, `--if-stale` means your session-start run costs almost nothing. + +--- + +## For /graphify path + +Find the shortest path between two named concepts in the graph. Prefer the CLI when installed: + +```bash +graphify path "NODE_A" "NODE_B" +``` + +If the CLI is unavailable, run it inline: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json, sys +import networkx as nx +from networkx.readwrite import json_graph +from pathlib import Path + +data = json.loads(Path('graphify-out/graph.json').read_text()) +G = json_graph.node_link_graph(data, edges='links') + +a_term = 'NODE_A' +b_term = 'NODE_B' + +def find_node(term): + term = term.lower() + scored = sorted( + [(sum(1 for w in term.split() if w in G.nodes[n].get('label','').lower()), n) + for n in G.nodes()], + reverse=True + ) + return scored[0][1] if scored and scored[0][0] > 0 else None + +src = find_node(a_term) +tgt = find_node(b_term) + +if not src or not tgt: + print(f'Could not find nodes matching: {a_term!r} or {b_term!r}') + sys.exit(0) + +try: + path = nx.shortest_path(G, src, tgt) + print(f'Shortest path ({len(path)-1} hops):') + for i, nid in enumerate(path): + label = G.nodes[nid].get('label', nid) + if i < len(path) - 1: + _raw = G[nid][path[i+1]]; edge = next(iter(_raw.values()), {}) if isinstance(G, nx.MultiGraph) else _raw + rel = edge.get('relation', '') + conf = edge.get('confidence', '') + print(f' {label} --{rel}--> [{conf}]') + else: + print(f' {label}') +except nx.NetworkXNoPath: + print(f'No path found between {a_term!r} and {b_term!r}') +except nx.NodeNotFound as e: + print(f'Node not found: {e}') +" +``` + +Replace `NODE_A` and `NODE_B` with the actual concept names from the user. Then explain the path in plain language - what each hop means, why it's significant. + +After writing the explanation, save it back: + +```bash +$(cat graphify-out/.graphify_python) -m graphify save-result --question "Path from NODE_A to NODE_B" --answer "ANSWER" --type path_query --nodes NODE_A NODE_B +``` + +--- + +## For /graphify explain + +Give a plain-language explanation of a single node - everything connected to it. Prefer the CLI when installed: + +```bash +graphify explain "NODE_NAME" +``` + +If the CLI is unavailable, run it inline: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json, sys +import networkx as nx +from networkx.readwrite import json_graph +from pathlib import Path + +data = json.loads(Path('graphify-out/graph.json').read_text()) +G = json_graph.node_link_graph(data, edges='links') + +term = 'NODE_NAME' +term_lower = term.lower() + +# Find best matching node +scored = sorted( + [(sum(1 for w in term_lower.split() if w in G.nodes[n].get('label','').lower()), n) + for n in G.nodes()], + reverse=True +) +if not scored or scored[0][0] == 0: + print(f'No node matching {term!r}') + sys.exit(0) + +nid = scored[0][1] +data_n = G.nodes[nid] +print(f'NODE: {data_n.get(\"label\", nid)}') +print(f' source: {data_n.get(\"source_file\",\"unknown\")}') +print(f' type: {data_n.get(\"file_type\",\"unknown\")}') +print(f' degree: {G.degree(nid)}') +print() +print('CONNECTIONS:') +for neighbor in G.neighbors(nid): + _raw = G[nid][neighbor]; edge = next(iter(_raw.values()), {}) if isinstance(G, nx.MultiGraph) else _raw + nlabel = G.nodes[neighbor].get('label', neighbor) + rel = edge.get('relation', '') + conf = edge.get('confidence', '') + src_file = G.nodes[neighbor].get('source_file', '') + print(f' --{rel}--> {nlabel} [{conf}] ({src_file})') +" +``` + +Replace `NODE_NAME` with the concept the user asked about. Then write a 3-5 sentence explanation of what this node is, what it connects to, and why those connections are significant. Use the source locations as citations. + +After writing the explanation, save it back: + +```bash +$(cat graphify-out/.graphify_python) -m graphify save-result --question "Explain NODE_NAME" --answer "ANSWER" --type explain --nodes NODE_NAME +``` diff --git a/.codex/graphify/references/transcribe.md b/.codex/graphify/references/transcribe.md new file mode 100644 index 0000000..b967f83 --- /dev/null +++ b/.codex/graphify/references/transcribe.md @@ -0,0 +1,52 @@ +# graphify reference: transcribe video and audio + +Load this only when `detect` reported one or more `video` files. A corpus with no video never reads this. + +### Step 2.5 - Transcribe video / audio files (only if video files detected) + +Skip this step entirely if `detect` returned zero `video` files. + +Video and audio files cannot be read directly. Transcribe them to text first, then treat the transcripts as doc files in Step 3. + +**Strategy:** Read the god nodes from `graphify-out/.graphify_detect.json` (or the analysis file if it exists from a previous run). You are already a language model — write a one-sentence domain hint yourself from those labels. Then pass it to Whisper as the initial prompt. No separate API call needed. + +**However**, if the corpus has *only* video files and no other docs/code, use the generic fallback prompt: `"Use proper punctuation and paragraph breaks."` + +**Step 1 - Write the Whisper prompt yourself.** + +Read the top god node labels from detect output or analysis, then compose a short domain hint sentence, for example: + +- Labels: `transformer, attention, encoder, decoder` → `"Machine learning research on transformer architectures and attention mechanisms. Use proper punctuation and paragraph breaks."` +- Labels: `kubernetes, deployment, pod, helm` → `"DevOps discussion about Kubernetes deployments and Helm charts. Use proper punctuation and paragraph breaks."` + +**Export** it as `GRAPHIFY_WHISPER_PROMPT` (the exact name the transcriber reads — and it must be `export`ed so the child Python process sees it) for the next command. + +**Step 2 - Transcribe:** + +```bash +export GRAPHIFY_WHISPER_MODEL=base # or whatever --whisper-model the user passed (must be exported) +export GRAPHIFY_WHISPER_PROMPT="" +$(cat graphify-out/.graphify_python) -c " +import json, os, sys +from pathlib import Path +from graphify.transcribe import transcribe_all + +detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\")) +video_files = detect.get('files', {}).get('video', []) +prompt = os.environ.get('GRAPHIFY_WHISPER_PROMPT', 'Use proper punctuation and paragraph breaks.') + +transcript_paths = transcribe_all(video_files, initial_prompt=prompt) +# Write the JSON from Python (NOT a shell '>' redirect): transcribe_all/Whisper +# print progress to stdout, which would otherwise corrupt the JSON file (#1392). +Path('graphify-out/.graphify_transcripts.json').write_text(json.dumps(transcript_paths, ensure_ascii=False), encoding=\"utf-8\") +print(f'Transcribed {len(transcript_paths)} file(s)', file=sys.stderr) +" +``` + +After transcription: +- Read the transcript paths from `graphify-out/.graphify_transcripts.json` +- Add them to the docs list before dispatching semantic subagents in Step 3B +- Print how many transcripts were created: `Transcribed N video file(s) -> treating as docs` +- If transcription fails for a file, print a warning and continue with the rest + +**Whisper model:** Default is `base`. If the user passed `--whisper-model `, `export GRAPHIFY_WHISPER_MODEL=` (it must be exported, not just assigned) before running the command above. diff --git a/.codex/graphify/references/update.md b/.codex/graphify/references/update.md new file mode 100644 index 0000000..fa26121 --- /dev/null +++ b/.codex/graphify/references/update.md @@ -0,0 +1,192 @@ +# graphify reference: incremental update and cluster-only + +Load this only when the user passed `--update` or `--cluster-only`. A first-time full build never reads this file. + +## For --update (incremental re-extraction) + +Use when you've added or modified files since the last run. Only re-extracts changed files - saves tokens and time. + +```bash +$(cat graphify-out/.graphify_python) -c " +import sys, json +from graphify.detect import detect_incremental, save_manifest +from pathlib import Path + +result = detect_incremental(Path('INPUT_PATH')) +new_total = result.get('new_total', 0) +print(json.dumps(result, indent=2, ensure_ascii=False)) +Path('graphify-out/.graphify_incremental.json').write_text(json.dumps(result, ensure_ascii=False), encoding=\"utf-8\") +deleted = list(result.get('deleted_files', [])) +if new_total == 0 and not deleted: + print('No files changed since last run. Nothing to update.') + raise SystemExit(0) +if deleted: + print(f'{len(deleted)} deleted file(s) to prune.') +if new_total > 0: + print(f'{new_total} new/changed file(s) to re-extract.') +" +``` + +Then populate `.graphify_detect.json` so Steps 3A–6 (which read it unconditionally) see the right state for an incremental run. `files` carries the changed subset (drives Step 3A AST + Step 3B0 cache check on only what changed); `all_files` carries the full corpus for any step that needs corpus-wide context: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +r = json.loads(Path('graphify-out/.graphify_incremental.json').read_text(encoding=\"utf-8\")) +Path('graphify-out/.graphify_detect.json').write_text(json.dumps({ + 'files': r.get('new_files', {}), + 'all_files': r.get('files', {}), + 'total_files': r.get('new_total', 0), + 'total_words': r.get('total_words', 0), + 'skipped_sensitive': r.get('skipped_sensitive', []), + 'needs_graph': True, +}, ensure_ascii=False), encoding=\"utf-8\") +" +``` + +If new files exist, first check whether all changed files are code files: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path + +result = json.loads(open('graphify-out/.graphify_incremental.json', encoding='utf-8').read()) if Path('graphify-out/.graphify_incremental.json').exists() else {} +code_exts = {'.py','.ts','.js','.go','.rs','.java','.cpp','.c','.rb','.swift','.kt','.cs','.scala','.php','.cc','.cxx','.hpp','.h','.kts','.lua','.toc','.f','.F','.f90','.F90','.f95','.F95','.f03','.F03','.f08','.F08'} +new_files = result.get('new_files', {}) +all_changed = [f for files in new_files.values() for f in files] +code_only = all(Path(f).suffix.lower() in code_exts for f in all_changed) +print('code_only:', code_only) +" +``` + +If `code_only` is True: print `[graphify update] Code-only changes detected - skipping semantic extraction (no LLM needed)`, run only Step 3A (AST) on the changed files, skip Step 3B entirely (no subagents), then go straight to merge and Steps 4–8. + +If `code_only` is False (any changed file is a doc/paper/image/video): **first, if any changed file is in `new_files['video']`, run `references/transcribe.md` (Step 2.5) on those files, then rewrite `.graphify_detect.json` to move the resulting transcript paths into `files['document']` and drop `files['video']`** — otherwise raw `.mp4/.mp3` paths are fed to semantic subagents as unreadable media (#1392). Then run the full Steps 3A–3C pipeline as normal. + + +If no new files exist (only deletions), create an empty extraction so the merge step can prune: + +```bash +if [ ! -f graphify-out/.graphify_extract.json ]; then + echo '[graphify update] Only deletions -- creating empty extraction for merge.' + $(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +Path('graphify-out/.graphify_extract.json').write_text(json.dumps({'nodes':[],'edges':[],'hyperedges':[],'input_tokens':0,'output_tokens':0}), encoding='utf-8') +" +fi +``` + + +Then: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from pathlib import Path +from graphify.build import build_merge +from graphify.detect import save_manifest + +# Load new extraction and incremental state +new_extraction = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +incremental = json.loads(Path('graphify-out/.graphify_incremental.json').read_text(encoding=\"utf-8\")) +deleted = list(incremental.get('deleted_files', [])) +# prune_sources is ONLY for genuinely DELETED files. Changed/re-extracted files are +# handled by build_merge's replace-on-re-extract (#1344): every source_file in +# new_chunks is dropped from the base before merge, so old/stale nodes don't survive. +# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same base +# as the freshly merged nodes and would DELETE the re-extracted content (#1178 is moot +# now that replace — not the dedup pass — reconciles changed files). +prune = list(deleted) or None + +# Use build_merge() — reads graph.json directly without NetworkX round-trip +# so edge direction (calls, implements, imports) is always preserved (#801). +# Pass root= so prune_sources (absolute paths from detect_incremental) are +# relativized to match the graph's relative source_file values; without it +# nothing is pruned and stale nodes accumulate on every update (#1361). +# directed=IS_DIRECTED: replace IS_DIRECTED with True if --directed was given, else +# False. Without it a --directed --update silently rebuilds undirected and collapses +# reciprocal A<->B edges (#1392). +G = build_merge( + [new_extraction], + graph_path='graphify-out/graph.json', + prune_sources=prune, + root='INPUT_PATH', + directed=IS_DIRECTED, +) +print(f'[graphify update] Merged: {G.number_of_nodes()} nodes, {G.number_of_edges()} edges') + +# Write merged result back to .graphify_extract.json so Step 4 sees the full graph +merged_out = { + 'nodes': [{'id': n, **d} for n, d in G.nodes(data=True)], + 'edges': [ + # Explicit source/target last so they win over any stale attrs in d. + {**{k: val for k, val in d.items() if k not in ('_src', '_tgt', 'source', 'target')}, + 'source': d.get('_src', u), 'target': d.get('_tgt', v)} + for u, v, d in G.edges(data=True) + ], + # G.graph["hyperedges"] holds hyperedges from both existing graph.json + # and new_extraction (build_merge combines them). Falling back to + # new_extraction only would silently drop prior-run hyperedges (#801). + 'hyperedges': list(G.graph.get('hyperedges', [])), + 'input_tokens': new_extraction.get('input_tokens', 0), + 'output_tokens': new_extraction.get('output_tokens', 0), +} +Path('graphify-out/.graphify_extract.json').write_text(json.dumps(merged_out, ensure_ascii=False), encoding=\"utf-8\") +print(f'[graphify update] Merged extraction written ({len(merged_out[\"nodes\"])} nodes, {len(merged_out[\"edges\"])} edges)') + +# Save manifest so next --update diffs against today's state, not the +# prior run's baseline (prevents ghost-node reports on subsequent updates). +# root= matches the build_merge call above so the manifest keys stay relative to +# the scan root — portable across clones/machines, so --update keeps matching +# cached files instead of missing every one after a move (#1417). +save_manifest(incremental['files'], root='INPUT_PATH') +print('[graphify update] Manifest saved.') +" +``` + +Then run Steps 4–8 on the merged graph as normal. + +After Step 4, show the graph diff: + +```bash +$(cat graphify-out/.graphify_python) -c " +import json +from graphify.analyze import graph_diff +from graphify.build import build_from_json +from networkx.readwrite import json_graph +import networkx as nx +from pathlib import Path + +# Load old graph (before update) from backup written before merge +old_data = json.loads(Path('graphify-out/.graphify_old.json').read_text(encoding=\"utf-8\")) if Path('graphify-out/.graphify_old.json').exists() else None +new_extract = json.loads(Path('graphify-out/.graphify_extract.json').read_text(encoding=\"utf-8\")) +G_new = build_from_json(new_extract, directed=IS_DIRECTED) + +if old_data: + G_old = json_graph.node_link_graph(old_data, edges='links') + diff = graph_diff(G_old, G_new) + print(diff['summary']) + if diff['new_nodes']: + print('New nodes:', ', '.join(n['label'] for n in diff['new_nodes'][:5])) + if diff['new_edges']: + print('New edges:', len(diff['new_edges'])) +" +``` + +Before the merge step, save the old graph: `cp graphify-out/graph.json graphify-out/.graphify_old.json` +Clean up after: `rm -f graphify-out/.graphify_old.json` + +--- + +## For --cluster-only + +Skip Steps 1–3. Re-run clustering on the existing graph: + +```bash +graphify cluster-only . +``` + +`graphify cluster-only .` is **self-contained**: it re-clusters, names communities, and regenerates `GRAPH_REPORT.md`, `graph.json`, and `graph.html` from the existing graph. **Do not re-run Steps 5–9** — they read intermediate files (`.graphify_extract.json`, `.graphify_detect.json`, `.graphify_analysis.json`) that a prior build's cleanup (Step 9) already deleted, so they raise `FileNotFoundError` (#1392). When it finishes, present the refreshed `GRAPH_REPORT.md` summary as usual. diff --git a/BUG_REPORT.md b/BUG_REPORT.md new file mode 100644 index 0000000..041768a --- /dev/null +++ b/BUG_REPORT.md @@ -0,0 +1,219 @@ +# Отчёт по ошибкам и рискам проекта Magistr + +Дата проверки: 2026-07-03 + +Проверено вручную: backend Spring Boot, мультитенантность, авторизация, генерация расписания, основные frontend JS-файлы. Автотесты не запущены: в окружении нет `mvn` и `./mvnw`. + +## Нужно исправить в первую очередь + +### 1. Высокая — JWT имеет небезопасные production-дефолты + +**Файлы:** +- `backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java:13-17` +- `backend/src/main/resources/application.properties:18-22` +- `backend/src/main/java/com/magistr/app/controller/AuthController.java:162-168` + +**Проблема:** если на проде не задан `JWT_SECRET`, приложение использует известный дефолтный секрет `dev-only-change-this-jwt-secret-32-bytes-minimum`. При этом `JWT_REFRESH_COOKIE_SECURE` по умолчанию `false`, и refresh-cookie может уходить без флага `Secure`. + +**Риск:** подделка access-токенов при известном секрете; утечка refresh-cookie при ошибочной HTTP/прокси-конфигурации. + +**Как исправить:** +- На production-профиле падать при отсутствии `JWT_SECRET` и при секрете короче требуемой длины. +- Для production сделать `app.jwt.refresh-cookie-secure=true` обязательным. +- Разделить dev/prod профили: дефолтный секрет оставить только в `application-dev.properties`. + +--- + +### 2. Высокая — race condition при ротации refresh-токена + +**Файл:** `backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java:50-78` + +**Проблема:** `rotate()` читает refresh-токен через `findByTokenHash()`, проверяет активность, затем отзывает старый и создаёт новый. Нет блокировки строки или атомарного `UPDATE ... WHERE revoked_at IS NULL`. Два параллельных запроса с одним refresh-токеном могут оба пройти проверку и создать две активные сессии. + +**Риск:** повторное использование одного refresh-токена, раздвоение сессий, некорректная ротация `rotatedToTokenHash`. + +**Как исправить:** +- Добавить pessimistic lock в репозиторий (`@Lock(PESSIMISTIC_WRITE)` для поиска по `tokenHash`) внутри транзакции. +- Либо сделать атомарное обновление: `UPDATE auth_refresh_tokens SET revoked_at = now, rotated_to_token_hash = :newHash WHERE token_hash = :hash AND revoked_at IS NULL AND expires_at > now` и создавать новый токен только если обновлена 1 строка. +- Добавить тест на два параллельных refresh-запроса. + +--- + +### 3. Высокая — `AuthContext` может протечь между запросами при `403` + +**Файл:** `backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java:35-49` + +**Проблема:** пользователь кладётся в `AuthContext` на строке 45, а при нехватке роли метод возвращает `false` на строке 49. В таком сценарии `afterCompletion()` текущего interceptor'а может не выполниться, и `ThreadLocal` останется в потоке до следующей очистки. + +**Риск:** утечка контекста пользователя между запросами в servlet thread pool. Сейчас это в основном риск безопасности и будущих багов, но его лучше устранить сразу. + +**Как исправить:** перед каждым `return false` после `AuthContext.setCurrentUser(user)` вызывать `AuthContext.clear()`. Ещё лучше — не устанавливать `AuthContext`, пока не пройдена ролевая проверка, или обернуть обработку отказов в безопасный helper. + +--- + +### 4. Высокая — точечные изменения расписания не проверяются на конфликты + +**Файл:** `backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java:71-127` + +**Проблема:** при `MOVE`/`REPLACE` валидируется только существование нового преподавателя, аудитории и слота. Не проверяется, свободны ли преподаватель/аудитория/группа в выбранную дату и пару. + +**Риск:** учебный отдел может создать override, который назначит преподавателя или аудиторию на две пары одновременно. Основные правила расписания конфликты проверяют, а override — нет. + +**Как исправить:** +- Перед сохранением override построить расписание на `lessonDate` и проверить занятость нового `timeSlot`, `teacher`, `classroom`, групп/подгрупп базового слота. +- Переиспользовать/вынести конфликтную логику из `ScheduleRuleAdminController` в сервис. +- Вернуть `409 Conflict` с описанием конфликтующего занятия. + +--- + +### 5. Средняя/высокая — расписание преподавателя не показывает пары, где он назначен через override + +**Файлы:** +- `backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java:47-58` +- `backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java:36-54` + +**Проблема:** если поиск выполняется только по `teacherId`, сервис строит расписание через `buildScheduleForTeacher(teacherId)`, то есть берёт только базовые правила, где преподаватель указан в слоте. Если override заменил преподавателя на этого teacherId, базовое правило в выборку не попадёт, и после `applyOverrides()` такая пара не появится. + +**Риск:** преподаватель не увидит замену/переназначенную ему пару в своём расписании. + +**Как исправить:** +- При поиске по `teacherId` дополнительно учитывать overrides с `newTeacher.id = teacherId` за период. +- Либо строить расписание по группам для затронутых override-слотов и после применения override фильтровать по преподавателю. +- Добавить тест: базовый преподаватель A, override `newTeacher=B`, поиск по `teacherId=B` должен вернуть пару. + +--- + +### 6. Средняя — обновление существующего тенанта может удалить рабочее подключение и сохранить нерабочее + +**Файлы:** +- `backend/src/main/java/com/magistr/app/controller/DatabaseController.java:104-116` +- `backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java:135-148` +- `backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java:147-158` + +**Проблема:** при добавлении тенанта с уже существующим доменом старый DataSource сначала удаляется и закрывается (`removeTenant()`), затем добавляется новый. Hikari настроен с `setInitializationFailTimeout(-1)`, поэтому невалидная БД может быть добавлена без ошибки. `initDatabaseForTenant()` ловит исключения Flyway и не пробрасывает их наружу, поэтому API может вернуть успех и записать нерабочий конфиг. + +**Риск:** админ одной ошибкой в JDBC URL/пароле может выключить рабочий tenant и разнести нерабочую конфигурацию через ConfigMap. + +**Как исправить:** +- Сначала создать и проверить новый DataSource во временном объекте (`testConnection`, Flyway migrate) и только после успеха атомарно заменить старый. +- `initDatabaseForTenant()` должен возвращать результат или бросать исключение, чтобы `DatabaseController` не писал невалидный ConfigMap. +- При ошибке оставлять старое подключение активным. + +--- + +### 7. Средняя — watcher не применяет изменения URL/логина/пароля существующего тенанта + +**Файл:** `backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java:102-125` + +**Проблема:** `syncTenants()` добавляет только новые домены и удаляет исчезнувшие. Если в `tenants.json` изменились `url`, `username` или `password` для уже существующего `domain`, текущий DataSource не заменяется. + +**Риск:** после обновления ConfigMap часть pod'ов продолжит ходить в старую БД/со старыми credentials до рестарта. + +**Как исправить:** сравнивать весь `TenantConfig` для существующих доменов. При отличии — безопасно пересоздавать DataSource после успешной проверки нового подключения. + +--- + +### 8. Средняя — отключена проверка TLS-сертификата Kubernetes API + +**Файл:** `backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java:74-76,104-119` + +**Проблема:** `createInsecureClient()` доверяет любому сертификату (`checkServerTrusted` пустой). Комментарий объясняет это self-signed CA, но в Kubernetes правильный CA доступен в serviceaccount volume. + +**Риск:** MITM внутри сети кластера может подменить Kubernetes API и получить serviceaccount token/подменить ConfigMap. + +**Как исправить:** использовать CA из `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` и стандартную проверку hostname/cert chain. Не использовать trust-all клиент. + +--- + +### 9. Средняя — кабинет кафедры может перезаписать дисциплину другой кафедры при импорте + +**Файл:** `backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java:80-90` + +**Проблема:** импорт ищет дисциплину только по глобальному имени (`findByName`) и затем без проверки меняет `departmentId` на кафедру текущего пользователя. Если дисциплина с таким названием уже принадлежит другой кафедре, она будет переназначена. + +**Риск:** потеря принадлежности дисциплины и связей расписания/календарей у другой кафедры. + +**Как исправить:** +- Не менять `departmentId` существующей дисциплины другой кафедры. +- Сделать уникальность по `(department_id, lower(name))`, если одинаковые названия допустимы у разных кафедр. +- При конфликте возвращать понятную ошибку или создавать отдельную запись в рамках кафедры. + +--- + +### 10. Средняя — кафедра может смотреть workload по чужим кафедрам + +**Файл:** `backend/src/main/java/com/magistr/app/controller/WorkloadController.java:43-130` + +**Проблема:** endpoints `/api/workload/*` доступны роли `DEPARTMENT` и принимают произвольный `departmentId`, но не сверяют его с `AuthContext.departmentId`. Также при `departmentId` отсутствующем запрос строится по всем группам/кафедрам. + +**Риск:** оператор кафедры может получить загруженность преподавателей/аудиторий/кафедр за другие подразделения, если это не было задумано бизнес-правилами. + +**Как исправить:** для роли `DEPARTMENT` принудительно использовать `AuthContext.getCurrentUser().departmentId()` и игнорировать/запрещать чужой `departmentId`. Аналогично проверить `ScheduleSearchController`, если расписание не должно быть глобально видимым. + +--- + +### 11. Средняя — семестры можно создать вне учебного года или с пересечениями + +**Файлы:** +- `backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java:95-129,201-211` +- `backend/src/main/java/com/magistr/app/service/AcademicDateService.java:32-34` +- `backend/src/main/java/com/magistr/app/repository/SemesterRepository.java:13` + +**Проблема:** при создании/обновлении семестра проверяется только `endDate >= startDate`. Нет проверки, что семестр лежит внутри своего учебного года и не пересекается с другим семестром. При этом расписание ищет `findFirstByStartDateLessThanEqualAndEndDateGreaterThanEqual()`, то есть при пересечении дата будет сопоставляться с произвольным первым семестром. + +**Риск:** генерация расписания и чётность недель будут работать некорректно на пересекающихся датах. + +**Как исправить:** +- Валидировать границы семестра относительно `AcademicYear.startDate/endDate`. +- Запрещать пересечение семестров в рамках учебного года. +- Желательно добавить DB-level exclusion constraint/range constraint или хотя бы сервисную проверку и тест. + +--- + +### 12. Низкая/средняя — access-токен хранится в `localStorage` + +**Файл:** `frontend/admin/js/api.js:5-7,155-163` + +**Проблема:** access JWT хранится в `localStorage`, откуда его может украсть любой XSS в админке. Refresh-токен уже вынесен в HttpOnly cookie, но access-токен остаётся доступным JS. + +**Риск:** при XSS злоумышленник получает Bearer token и может выполнять API-запросы до истечения TTL. + +**Как исправить:** +- По возможности держать access token в памяти и обновлять через HttpOnly refresh cookie. +- Усилить CSP (`script-src` без inline), запретить небезопасные вставки HTML. +- Провести отдельный XSS-аудит всех `innerHTML`. + +--- + +### 13. Низкая — frontend местами вставляет текст ошибки через `innerHTML` без экранирования + +**Файл:** `frontend/admin/settings/js/views/database.js:37-49` + +**Проблема:** `e.message` вставляется в `innerHTML` без `escapeHtml()`. Сейчас большинство серверных ошибок фиксированные, но часть ошибок может включать текст из внешних систем/драйверов. + +**Риск:** потенциальный XSS в настройках БД при попадании HTML в сообщение ошибки. + +**Как исправить:** заменить на `textContent` или оборачивать `escapeHtml(e.message)`. + +--- + +### 14. Низкая — backend image скачивает OpenTelemetry javaagent по `latest` + +**Файл:** `backend/Dockerfile:7` + +**Проблема:** сборка всегда скачивает `latest` javaagent с GitHub без pin версии/checksum. + +**Риск:** невоспроизводимые сборки; внезапные несовместимости; supply-chain риск. + +**Как исправить:** закрепить конкретную версию javaagent и проверять checksum. + +## Дополнительно проверить после исправлений + +1. Добавить Maven Wrapper (`mvnw`), чтобы проверки запускались одинаково в CI и локально. +2. Прогнать `mvn test` и добавить тесты на: + - параллельную ротацию refresh-токена; + - override с конфликтом преподавателя/аудитории; + - расписание преподавателя, назначенного через override; + - обновление существующего tenant config; + - запрет чужого `departmentId` для роли `DEPARTMENT`. +3. Не изменять существующие Flyway-миграции. Если нужны DB constraints/indexes — добавлять новую миграцию `V3__...sql`. diff --git a/DEVOPS.md b/DEVOPS.md index 0a35470..4ce8624 100644 --- a/DEVOPS.md +++ b/DEVOPS.md @@ -98,8 +98,9 @@ graph TD * Для связи с Ingress настроен ClusterIP-сервис на порту 8080. * **Ingress (`ingress.yaml`)**: - * В роли Ingress-контроллера выступает стандартный для K3s **Traefik**. - * Мной настроены строгие правила маршрутизации по доменным именам (например, `magistr.zuev.company` для тестового окружения, `n8n.zuev.company` и т.д.). Маршрутизация по путям разделяет трафик: запросы к API (`/api`) проксируются на бэкенд-сервис, а запросы к статическим ресурсам и страницам (`/`) — на фронтенд-сервис. + * В роли Ingress-контроллера выступает встроенный **Traefik** (`kube-system/traefik`). + * Он доступен извне через Klipper Service LoadBalancer (DaemonSet), который прокидывает порты 80/443 (hostPort) на внешние IP адреса нод кластера (`192.168.1.104`, `192.168.1.105`, `192.168.1.106`). + * Мной настроены строгие правила маршрутизации по доменным именам (например, `magistr.zuev.company` и `n8n.zuev.company`). Запросы к API (`/api`) проксируются на бэкенд, а к корню (`/`) — на фронтенд. ### 3.2 Реализация динамической мультитенантности через K8s API Одним из наиболее сложных этапов проектирования стала организация бесшовного добавления новых университетов без перезапуска бэкенда и изменения исходного кода приложения. @@ -199,19 +200,16 @@ graph TD 4. **Build & Push**: Параллельная сборка Docker-образов для бэкенда и фронтенда с тегом `latest` и отправка их в приватный реестр. ### 5.2 Доставка в кластер (CD) -Для авторизации нод K3s в приватном реестре Gitea мной был создан секрет типа `docker-registry` в пространстве имен `magistr`: +Для авторизации нод K3s в приватном реестре Gitea мной был создан секрет `gitea-registry` типа `docker-registry` в пространстве имен `magistr`. Этот секрет ассоциирован со спецификациями деплоев через директиву `imagePullSecrets`. + +Непосредственно Gitea Actions Runner работает как демон `act_runner` внутри изолированного LXC контейнера (CTID 107). В пайплайне шаг развертывания (`deploy-to-k8s`) динамически генерирует `kubeconfig` из секрета, устанавливает утилиту `kubectl` и выполняет императивное обновление релизов без использования тяжеловесных GitOps операторов: + ```bash -kubectl create secret docker-registry gitea-registry \ - --docker-server=gitea.zuev.company \ - --docker-username=Zuev \ - --docker-password=${ZUEV_TOKEN} \ - --namespace=magistr -``` -Этот секрет ассоциирован со спецификациями деплоев в `backend.yaml` и `frontend.yaml` через директиву `imagePullSecrets`. Обновление приложений в кластере после завершения сборки образов выполняется путем контролируемого перезапуска подов: -```bash -kubectl rollout restart deployment backend -n magistr -kubectl rollout restart deployment frontend -n magistr +kubectl rollout restart deployment backend frontend -n magistr +kubectl rollout status deployment/frontend -n magistr --timeout=120s +kubectl rollout status deployment/backend -n magistr --timeout=300s ``` +Поскольку манифесты используют `imagePullPolicy: Always` и тег `:main`, поды автоматически скачивают свежие слои собранных образов. --- @@ -226,23 +224,35 @@ kubectl rollout restart deployment frontend -n magistr * Полноценной поддержке протокола HTTP/3 «из коробки». ### 6.2 Конфигурация балансировки -Внешний Caddy-сервер принимает запросы ко всем поддоменам `*.zuev.company` и перенаправляет их на ноды кластера K3s, выполняя роль внешнего балансировщика нагрузки (L4/L7 Load Balancer): +Внешний Caddy-сервер развернут в изолированном LXC контейнере (CTID 101) и обрабатывает запросы ко всем поддоменам проекта. Он перенаправляет их на ноды кластера K3s, выполняя роль внешнего балансировщика, а также проксирует телеметрию с фронтенда напрямую в сборщик OTel: + ```caddyfile -*.zuev.company { - reverse_proxy 192.168.1.104:80 192.168.1.105:80 192.168.1.106:80 { - lb_policy round_robin - lb_try_duration 5s - lb_try_interval 250ms - } +(otel_proxy) { + handle_path /otel/* { reverse_proxy 192.168.1.100:4318 } } + +(k8s_nodes) { + handle { + reverse_proxy 192.168.1.104:80 192.168.1.105:80 192.168.1.106:80 { + lb_policy round_robin + lb_try_duration 5s + lb_try_interval 250ms + } + } +} + +magistr.zuev.company { import otel_proxy; import k8s_nodes } +n8n.zuev.company { import otel_proxy; import k8s_nodes } ``` -Сетевые запросы распределяются по нодам K3s по алгоритму Round-Robin. В случае недоступности одной из нод, Caddy временно исключает ее из пула, обеспечивая отказоустойчивость инфраструктуры на сетевом уровне. +Сетевые запросы к приложениям распределяются по 3 физическим нодам K3s. Благодаря сниппетам, добавление нового тенанта в инфраструктуре Caddy требует всего двух строчек конфигурации. --- ## РАЗДЕЛ 7. СКВОЗНОЙ МОНИТОРИНГ И ОБСЕРВАБИЛИТИ (SigNoz + OpenTelemetry) -Для контроля здоровья системы и оперативного выявления аномалий мной была спроектирована и внедрена централизованная система мониторинга на базе APM-платформы **SigNoz** и стандартов **OpenTelemetry (OTel)**. +Для контроля здоровья системы и оперативного выявления аномалий мной была спроектирована и внедрена централизованная система мониторинга на базе APM-платформы **SigNoz** (с хранилищем **ClickHouse**) и стандартов **OpenTelemetry (OTel)**. + +Платформа SigNoz вынесена в отдельный LXC контейнер (CTID 100) по адресу `192.168.1.100` и развернута через `docker-compose`. Данные ClickHouse и SQLite метаданные персистентно хранятся в Docker volumes хоста для обеспечения сохранности при рестартах. ### 7.1 Сбор телеметрии Backend Java-приложение бэкенда запускается с подключением агента OpenTelemetry (`opentelemetry-javaagent.jar`). Это позволяет без изменения кода собирать: diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json new file mode 100644 index 0000000..672e893 --- /dev/null +++ b/graphify-out/.graphify_labels.json @@ -0,0 +1 @@ +{"0": "Модель расписание override", "1": "Сервис расписание Query", "2": "Модель преподаватели создание", "3": "Контроллер расписание правила Админ", "4": "Модель дисциплины комментарии", "5": "Модель Авторизация refresh токены", "6": "Модель расписание правила", "7": "Контроллер преподаватели дисциплины", "8": "Контроллер подгруппы", "9": "расписание экран", "10": "Модель пользователи", "11": "Конфигурация Авторизация Interceptor", "12": "Контроллер пользователи", "13": "Сервис расписание Generator", "14": "расписание", "15": "Контроллер Учебный календарь Админ", "16": "Модель занятия Type", "17": "Модель преподаватели кафедры Assignment", "18": "Модель студенты группы", "19": "Контроллер Учебный календарь", "20": "Модель Учебный календарь дисциплины", "21": "Контроллер Speciality", "22": "Контроллер кафедры кабинет", "23": "Контроллер Авторизация", "24": "Модель кафедры", "25": "Контроллер группы", "26": "Контроллер аудитории", "27": "Модель Lifecycle сущность", "28": "кафедры кабинет контроллер Test", "29": "Контроллер Education формы", "30": "DTO аудитории", "31": "DTO группы", "32": "main", "33": "Модель специальности профили", "34": "Модель время слоты Scope", "35": "Модель Semester", "36": "Модель Speciality", "37": "Модель аудитории", "38": "Сервис студенты группы Lifecycle", "39": "JWT токены сервис Test", "40": "Модель Учебный календарь Activity", "41": "Контроллер время слоты Админ", "42": "Модель время слоты Date", "43": "Модель Учебный Year", "44": "Модель студенты группы календарь", "45": "DTO Create кафедры", "46": "DTO Create группы", "47": "Конфигурация тенанты конфигурация", "48": "Контроллер Global Exception Handler", "49": "Модель Учебный календарь Day", "50": "Контроллер расписание правила Админ", "51": "Контроллер БД", "52": "Модель время слоты", "53": "DTO аудитории", "54": "Конфигурация тенанты конфигурация Watcher", "55": "DTO Login", "56": "main", "57": "DTO пользователи", "58": "Утилиты Course And Semester", "59": "DTO Create пользователи", "60": "SCHEDULE TASKS", "61": "Конфигурация JWT Properties", "62": "Контроллер дисциплины", "63": "Контроллер время слоты Админ", "64": "DTO Review преподаватели создание", "65": "Модель Учебный календарь", "66": "API", "67": "Конфигурация тенанты Context", "68": "Конфигурация тенанты данные источник", "69": "DevOps инфраструктура", "70": "ACADEMIC CALENDAR", "71": "кафедры кабинет", "72": "Конфигурация тенанты Routing данные", "73": "Репозиторий время слоты Scope", "74": "DTO Create преподаватели создание", "75": "Модель подгруппы", "76": "Репозиторий Учебный календарь Day", "77": "index", "78": "кафедры кабинет", "79": "index", "80": "Проектные навыки", "81": "Конфигурация конфигурация Updater", "82": "Модель оборудование", "83": "DTO Create дисциплины", "84": "Аудит рисков", "85": "UI COMPONENTS", "86": "Контроллер аудитории", "87": "Контроллер расписание правила Админ", "88": "Модель Education формы", "89": "аудитории нагрузка", "90": "вуз структура", "91": "Контроллер Учебный календарь Админ", "92": "DTO группы календарь Assignment", "93": "DTO кафедры", "94": "Сервис Учебный Date", "95": "Репозиторий Учебный календарь Activity", "96": "DTO Speciality", "97": "Репозиторий расписание правила", "98": "Репозиторий время слоты", "99": "index", "100": "script", "101": "Проектный регламент", "102": "Контроллер Учебный календарь", "103": "DTO дисциплины", "104": "DTO преподаватели дисциплины", "105": "Модель преподаватели дисциплины Id", "106": "Репозиторий Учебный календарь", "107": "dropdown", "108": "index", "109": "FRONTEND", "110": "CI/CD workflow", "111": "DTO Create Speciality", "112": "DTO Login", "113": "index", "114": "index", "115": "Контроллер время слоты Админ", "116": "тенанты конфигурация Watcher Test", "117": "Аудит рисков", "118": "время слоты", "119": "script", "120": "Конфигурация App конфигурация", "121": "нагрузка контроллер Test", "122": "Docker Compose", "123": "дашборд", "124": "index", "125": "Проектные навыки", "126": "index", "127": "index", "128": "Конфигурация refresh токены Rotation", "129": "Аудит рисков", "130": "otel", "131": "Аудит рисков", "132": "theme toggle", "133": "DevOps инфраструктура", "134": "pom"} \ No newline at end of file diff --git a/graphify-out/.graphify_learning.json b/graphify-out/.graphify_learning.json new file mode 100644 index 0000000..6da639c --- /dev/null +++ b/graphify-out/.graphify_learning.json @@ -0,0 +1,5 @@ +{ + "generated_at": "2026-07-04T10:57:14.633512+00:00", + "nodes": {}, + "version": 1 +} diff --git a/graphify-out/.graphify_python b/graphify-out/.graphify_python new file mode 100644 index 0000000..e102a71 --- /dev/null +++ b/graphify-out/.graphify_python @@ -0,0 +1 @@ +/home/zuev/.local/share/uv/tools/graphifyy/bin/python \ No newline at end of file diff --git a/graphify-out/.graphify_root b/graphify-out/.graphify_root new file mode 100644 index 0000000..f9460d2 --- /dev/null +++ b/graphify-out/.graphify_root @@ -0,0 +1 @@ +/mnt/HDD/ProjectMagistr/magistr diff --git a/graphify-out/.graphify_semantic_new.json b/graphify-out/.graphify_semantic_new.json new file mode 100644 index 0000000..9269b0b --- /dev/null +++ b/graphify-out/.graphify_semantic_new.json @@ -0,0 +1,6222 @@ +{ + "nodes": [ + { + "id": "agents_project_regulation", + "label": "Проектный регламент AGENTS.md", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "agents_magistr_system", + "label": "Система университетского расписания Магистр", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "agents_flyway_migration_rule", + "label": "Правило неизменяемости Flyway-миграций", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "agents_russian_language_rule", + "label": "Правило русского языка", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "agents_project_docs_index", + "label": "Индекс проектной документации", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_project_risk_audit", + "label": "Аудит рисков проекта", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_jwt_insecure_production_defaults", + "label": "Небезопасные production-defaults JWT", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_refresh_token_rotation_race_condition", + "label": "Гонка ротации refresh-токенов", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_authcontext_threadlocal_leak", + "label": "Утечка ThreadLocal AuthContext", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_schedule_override_conflict_gap", + "label": "Пробел проверки конфликтов override расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_teacher_schedule_override_visibility_gap", + "label": "Пробел видимости override для преподавателей", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_tenant_datasource_replacement_risk", + "label": "Риск замены DataSource тенанта", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_tenant_config_watcher_update_gap", + "label": "Пробел обновления watcher конфигурации тенантов", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_kubernetes_tls_trust_all_risk", + "label": "Риск Kubernetes TLS trust-all", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_department_import_subject_ownership_risk", + "label": "Риск владения дисциплинами при импорте кафедры", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_workload_department_scope_risk", + "label": "Риск области видимости нагрузки кафедры", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_semester_boundary_overlap_risk", + "label": "Риск пересечения границ семестров", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_localstorage_access_token_risk", + "label": "Риск access token в localStorage", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_innerhtml_error_xss_risk", + "label": "Риск XSS через innerHTML ошибок", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "bug_report_opentelemetry_latest_supply_chain_risk", + "label": "Риск latest-тега OpenTelemetry", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_resilient_multitenant_infrastructure", + "label": "Отказоустойчивая мультитенантная инфраструктура", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_database_per_tenant_pattern", + "label": "Паттерн database-per-tenant", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_fz_152_data_isolation_rationale", + "label": "Обоснование изоляции данных по ФЗ-152", + "file_type": "rationale", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_k3s_cluster", + "label": "K3s-кластер", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_configmap_dynamic_tenant_management", + "label": "Динамическое управление тенантами через ConfigMap", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_h2_hikaricp_resiliency", + "label": "Устойчивость H2 и HikariCP", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_ansible_database_hosts", + "label": "Ansible-хосты баз данных", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_gitea_actions_cicd", + "label": "CI/CD через Gitea Actions", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_caddy_proxy", + "label": "Caddy proxy", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_signoz_opentelemetry_observability", + "label": "Наблюдаемость SigNoz и OpenTelemetry", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "devops_proxmox_database_vms", + "label": "ВМ баз данных в Proxmox", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "compose_backend_service", + "label": "Backend-сервис Docker Compose", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "compose_frontend_service", + "label": "Frontend-сервис Docker Compose", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "compose_db_service", + "label": "PostgreSQL-сервис Docker Compose", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "compose_proxy_network", + "label": "Внешняя proxy-сеть Docker", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "compose_postgres_password_required", + "label": "Обязательная переменная POSTGRES_PASSWORD", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_agents_skills_autoupdatedocs_autoupdatedocs_skill", + "label": "Навык AutoUpdateDocs", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_agents_skills_autoupdatedocs_file_to_docs_map", + "label": "Карта файлов к документации", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_agents_skills_auto_update_docs_skill_autoupdatedocs_skill", + "label": "SKILL.md AutoUpdateDocs", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/auto-update-docs/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_agents_skills_auto_update_docs_skill_frontend_settings_docs_map", + "label": "Карта документации настроек фронтенда", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/auto-update-docs/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_agents_skills_frontend_design_skill_frontend_design_skill", + "label": "Навык frontend-design", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_agents_skills_frontend_design_skill_design_thinking", + "label": "Дизайн-мышление интерфейса", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_agents_skills_frontend_design_skill_no_ai_aesthetic_rule", + "label": "Правило против AI-эстетики", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_gitea_workflows_docker_build_build_and_push_docker_images", + "label": "Workflow сборки и публикации Docker-образов", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_gitea_workflows_docker_build_backend_image_pipeline", + "label": "Pipeline backend-образа", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_gitea_workflows_docker_build_frontend_image_pipeline", + "label": "Pipeline frontend-образа", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_gitea_workflows_docker_build_deploy_to_k8s", + "label": "Job деплоя в Kubernetes", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_gitea_workflows_docker_build_zuev_token_secret", + "label": "Secret ZUEV_TOKEN", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "_gitea_workflows_docker_build_kubeconfig_secret", + "label": "Secret KUBECONFIG_DATA", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_readme_magistr_overview", + "label": "Обзор документации Магистр", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_architecture_system_architecture", + "label": "Архитектура системы", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_architecture_multitenant_architecture", + "label": "Мультитенантная архитектура", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_architecture_authentication", + "label": "Архитектура аутентификации", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_business_logic_role_model", + "label": "Ролевая модель", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_business_logic_dynamic_schedule_model", + "label": "Модель динамического расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_business_logic_schedule_validation", + "label": "Валидация расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_business_logic_lifecycle_archiving", + "label": "Архивация жизненного цикла", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_business_logic_teacher_department_assignments", + "label": "Привязки преподавателей к кафедрам", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_academic_calendar_calendar_model", + "label": "Модель учебного календаря", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_academic_calendar_activity_codes", + "label": "Коды активностей учебного календаря", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_academic_calendar_schedule_generation_filter", + "label": "Фильтр генерации расписания по календарю", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_rest_api", + "label": "REST API", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_authentication_endpoints", + "label": "Эндпоинты аутентификации", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_role_permissions", + "label": "Права ролей API", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_dynamic_schedule_endpoints", + "label": "Эндпоинты динамического расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_schedule_rules_endpoints", + "label": "Эндпоинты правил расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_schedule_overrides_endpoints", + "label": "Эндпоинты override расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_department_workspace_endpoints", + "label": "Эндпоинты кабинета кафедры", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_tenant_database_endpoints", + "label": "Эндпоинты БД тенантов", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_workload_endpoints", + "label": "Эндпоинты нагрузки", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_api_group_calendar_assignments", + "label": "API назначения календаря группе", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_database_database_schema", + "label": "Схема базы данных", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_database_er_relationships", + "label": "ER-связи", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_database_dynamic_schedule_tables", + "label": "Таблицы динамического расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_database_academic_calendar_tables", + "label": "Таблицы учебного календаря", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_database_auth_refresh_tokens", + "label": "Таблица refresh-токенов", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_database_flyway_migrations", + "label": "Flyway-миграции", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_development_developer_guide", + "label": "Руководство разработчика", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_development_code_style", + "label": "Code style", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_development_new_endpoint_flow", + "label": "Порядок создания нового эндпоинта", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_development_flyway_rules", + "label": "Правила Flyway в разработке", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_frontend_frontend_architecture", + "label": "Frontend-архитектура", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_frontend_admin_spa_routing", + "label": "Роутинг admin SPA", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_frontend_api_client_refresh_flow", + "label": "Refresh-flow API-клиента", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_frontend_role_based_navigation", + "label": "Ролевая навигация", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_frontend_schedule_views", + "label": "Frontend-представления расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_frontend_settings_spa", + "label": "SPA настроек администратора", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_frontend_css_architecture", + "label": "CSS-архитектура", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_frontend_opentelemetry_client", + "label": "Frontend OpenTelemetry-клиент", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_infrastructure_docker_compose", + "label": "Docker Compose инфраструктура", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_infrastructure_kubernetes_production", + "label": "Production-инфраструктура Kubernetes", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_infrastructure_jwt_secret_policy", + "label": "Политика JWT-секрета", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_infrastructure_tenants_configmap", + "label": "Tenants ConfigMap", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_infrastructure_caddy_proxy", + "label": "Caddy proxy инфраструктуры", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_infrastructure_gitea_actions_cicd", + "label": "CI/CD Gitea Actions в инфраструктуре", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_infrastructure_signoz_opentelemetry", + "label": "SigNoz и OpenTelemetry в инфраструктуре", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_logging_logging_stack", + "label": "Стек логирования", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/LOGGING.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_logging_tenant_mdc_context", + "label": "MDC-контекст тенанта", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/LOGGING.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_logging_otlp_signoz_export", + "label": "OTLP экспорт в SigNoz", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/LOGGING.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "label": "Реализация динамического расписания", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_dynamic_schedule_implementation_schedule_generator_service", + "label": "ScheduleGeneratorService", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_proposal_dynamic_schedule_concept", + "label": "Концепция динамического расписания", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_proposal_calendar_layer", + "label": "Календарный слой", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_proposal_schedule_rules_layer", + "label": "Слой правил расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_dynamic_schedule_tasks", + "label": "Задачи динамического расписания", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_daily_academic_calendar_grid", + "label": "Дневная сетка учебного календаря", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_group_calendar_assignment", + "label": "Назначение календаря группе", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_academicdateservice", + "label": "AcademicDateService", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_schedulegeneratorservice", + "label": "ScheduleGeneratorService", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_activity_codes", + "label": "Коды активностей Excel-графика", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_laboratory_subgroups", + "label": "Подгруппы лабораторных слотов", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_schedule_api_endpoint", + "label": "GET /api/schedule", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_schedule_tasks_rule_conflict_validation", + "label": "Проверка конфликтов правил расписания", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_ui_components_document", + "label": "Документация UI-компонентов", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_custom_select_wrapper", + "label": "Обертка кастомного select", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_global_mutationobserver", + "label": "Глобальный MutationObserver для select", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_frontend_admin_js_dropdown_js", + "label": "frontend/admin/js/dropdown.js", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_customselect", + "label": "CustomSelect", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_native_select", + "label": "Нативный select", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_multi_select", + "label": "Multi-select с чекбоксами", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_utils_initmultiselect", + "label": "initMultiSelect из utils.js", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_checkbox_item_checkmark", + "label": "checkbox-item и checkmark", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_browser_option_styling_limit", + "label": "Ограничения стилизации option", + "file_type": "rationale", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "docs_ui_components_dynamic_options_sync", + "label": "Автоматическая синхронизация option", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_index_login_page", + "label": "Страница авторизации", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_index_login_form", + "label": "Форма входа", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_index_theme_toggle_script", + "label": "theme-toggle.js на странице входа", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_index_login_script", + "label": "script.js страницы входа", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_index_admin_spa_shell", + "label": "Оболочка админ-панели", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_index_sidebar_navigation", + "label": "Навигация админ-панели", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_index_settings_menu", + "label": "Меню настроек и выхода", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_index_teacher_request_badge", + "label": "Индикатор заявок преподавателей", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_index_settings_spa_shell", + "label": "Оболочка SPA настроек", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_index_settings_navigation", + "label": "Навигация настроек", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_index_admin_back_link", + "label": "Возврат в админ-панель", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_views_database_tenant_connection_management", + "label": "Управление подключениями тенантов", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/database.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_views_database_tenants_table", + "label": "Таблица подключенных университетов", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/database.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_views_edu_forms_education_forms_management", + "label": "Управление формами обучения", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/edu-forms.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_views_general_general_settings_placeholder", + "label": "Заглушка общих настроек", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/general.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_views_time_slots_time_slots_settings", + "label": "Настройки временных слотов", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/time-slots.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_views_time_slots_time_slot_scope", + "label": "Область действия временной сетки", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/time-slots.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_settings_views_time_slots_manual_time_grid_modal", + "label": "Модальное окно ручной сетки времени", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/time-slots.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_dashboard_dashboard_view", + "label": "Дашборд администратора", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_dashboard_realtime_monitoring", + "label": "Мониторинг текущих пар", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_dashboard_conflict_center", + "label": "Центр предупреждений Red Zone", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_dashboard_quick_navigation", + "label": "Быстрый переход дашборда", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_academic_calendar_academic_calendar_view", + "label": "Календарный учебный график", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_academic_calendar_academic_year_management", + "label": "Управление учебными годами", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_academic_calendar_semester_management", + "label": "Управление семестрами", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_academic_calendar_calendar_grid_editor", + "label": "Редактор годового графика", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_academic_calendar_calendar_subject_bindings", + "label": "Привязки дисциплин графика", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_academic_calendar_calendar_day_dialog", + "label": "Диалог ячейки календарного графика", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_auditorium_workload_workload_view", + "label": "Просмотр загруженности", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/auditorium-workload.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_auditorium_workload_workload_filters", + "label": "Фильтры загруженности", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/auditorium-workload.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_classrooms_classroom_management", + "label": "Управление аудиторным фондом", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_classrooms_equipment_dictionary", + "label": "Справочник оборудования", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_classrooms_equipment_multi_select", + "label": "Мультиселект оборудования аудитории", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_department_workspace_department_workspace_view", + "label": "Рабочая область кафедры", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_department_workspace_department_subject_import", + "label": "Загрузка дисциплин кафедры", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_department_workspace_teacher_assignment", + "label": "Привязка преподавателя к кафедре", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_department_workspace_teacher_request_form", + "label": "Заявка кафедры на преподавателя", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_department_workspace_department_comments", + "label": "Комментарии кафедры по дисциплинам", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_groups_group_management", + "label": "Управление группами обучения", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_groups_group_filters", + "label": "Фильтр групп по форме обучения", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_groups_subgroup_management", + "label": "Управление подгруппами группы", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_groups_group_calendar_assignment", + "label": "Назначение календарного графика группе", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_schedule_view_schedule_view_shell", + "label": "Просмотр расписаний", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_schedule_view_target_filters", + "label": "Фильтры просмотра расписаний", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_schedule_view_schedule_results", + "label": "Результаты просмотра расписаний", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_schedule_schedule_rule_constructor", + "label": "Конструктор правил расписания", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_schedule_schedule_hours_start_weeks", + "label": "Часы и недели начала занятий", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_schedule_schedule_group_multiselect", + "label": "Мультиселект групп правила расписания", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", + "label": "Разрешение конфликта слота расписания", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_schedule_schedule_visual_drawer", + "label": "Визуальное расписание групп", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_subjects_subject_management", + "label": "Управление дисциплинами", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/subjects.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_subjects_teacher_subject_binding", + "label": "Привязка преподавателей к дисциплине", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/subjects.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "label": "Администрирование заявок на преподавателей", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/teacher-requests.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_university_structure_university_structure_view", + "label": "Структура вуза", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_university_structure_department_management", + "label": "Управление кафедрами", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_university_structure_specialty_management", + "label": "Управление специальностями", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_university_structure_profile_management", + "label": "Управление профилями обучения", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_users_user_management", + "label": "Управление пользователями", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/users.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_admin_views_users_role_selector", + "label": "Выбор роли пользователя", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/users.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_department_index_department_redirect", + "label": "Редирект в кабинет кафедры", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/department/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_edu_office_index_edu_office_redirect_page", + "label": "Редирект учебного отдела", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/edu-office/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_edu_office_index_admin_schedule_view_route", + "label": "Маршрут /admin/#schedule-view", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/edu-office/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_student_schedule_page", + "label": "Страница расписания студента", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_group_selection", + "label": "Выбор группы студента", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_week_navigation", + "label": "Недельная навигация студента", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_schedule_grid", + "label": "Сетка расписания студента", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_loadgroups", + "label": "loadGroups", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_loadschedule", + "label": "loadSchedule", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_renderweek", + "label": "renderWeek", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_renderemptyweek", + "label": "renderEmptyWeek", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_renderday", + "label": "renderDay", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_renderlesson", + "label": "renderLesson", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_fetchjson", + "label": "fetchJson", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_refreshaccesstoken", + "label": "refreshAccessToken", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_logout", + "label": "logout", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_storeauthstate", + "label": "storeAuthState", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_clearauthstate", + "label": "clearAuthState", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_student_auth_state", + "label": "Состояние авторизации студента", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_api_groups_endpoint", + "label": "GET /api/groups", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_api_schedule_group_endpoint", + "label": "GET /api/schedule по groupId", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_api_auth_refresh_endpoint", + "label": "POST /api/auth/refresh", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_student_index_api_auth_logout_endpoint", + "label": "POST /api/auth/logout", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_teacher_schedule_page", + "label": "Страница расписания преподавателя", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_teacher_identity", + "label": "Идентификатор преподавателя из userId", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_week_navigation", + "label": "Недельная навигация преподавателя", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_schedule_grid", + "label": "Сетка расписания преподавателя", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_responsive_schedule_layout", + "label": "Адаптивная раскладка расписания преподавателя", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_loadschedule", + "label": "loadSchedule", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_renderweek", + "label": "renderWeek", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_rendermobileweek", + "label": "renderMobileWeek", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_renderemptyweek", + "label": "renderEmptyWeek", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_renderhead", + "label": "renderHead", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_rendercell", + "label": "renderCell", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_renderlesson", + "label": "renderLesson", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_collectslots", + "label": "collectSlots", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_fetchjson", + "label": "fetchJson", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_refreshaccesstoken", + "label": "refreshAccessToken", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_logout", + "label": "logout", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_storeauthstate", + "label": "storeAuthState", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_clearauthstate", + "label": "clearAuthState", + "file_type": "code", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_teacher_auth_state", + "label": "Состояние авторизации преподавателя", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_api_schedule_teacher_endpoint", + "label": "GET /api/schedule по teacherId", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_api_auth_refresh_endpoint", + "label": "POST /api/auth/refresh", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "frontend_teacher_index_api_auth_logout_endpoint", + "label": "POST /api/auth/logout", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_devops_resume_page", + "label": "Резюме DevOps-инженера", + "file_type": "document", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_zuev_egor_alekseevich", + "label": "Зуев Егор Алексеевич", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_junior_devops_infrastructure_engineer", + "label": "Junior DevOps / Infrastructure Engineer", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_smart_schedule_startup", + "label": "Стартап Умное расписание", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_database_per_tenant", + "label": "Database-per-Tenant", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_kubernetes_k3s_delivery", + "label": "Доставка в Kubernetes K3s", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_dynamic_tenants_configmap", + "label": "Динамические тенанты через ConfigMap", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_backend_resilient_startup", + "label": "Отказоустойчивость старта backend", + "file_type": "rationale", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_ansible_security_provisioning", + "label": "Ansible и безопасный провижининг", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_gitea_actions_cicd", + "label": "CI/CD через Gitea Actions", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_opentelemetry_signoz_observability", + "label": "Observability через OpenTelemetry и SigNoz", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_homelab_engineering_practice", + "label": "Homelab как инженерная практика", + "file_type": "concept", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_incident_runbook_mindset", + "label": "Runbook-мышление при инцидентах", + "file_type": "rationale", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + }, + { + "id": "resume_index_devsecops_principles", + "label": "Принципы DevSecOps", + "file_type": "rationale", + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null + } + ], + "edges": [ + { + "source": "agents_project_regulation", + "target": "agents_magistr_system", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "agents_project_regulation", + "target": "agents_flyway_migration_rule", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "agents_project_regulation", + "target": "agents_russian_language_rule", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "agents_project_docs_index", + "target": "docs_readme_magistr_overview", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "agents_project_docs_index", + "target": "docs_architecture_system_architecture", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "agents_project_docs_index", + "target": "docs_business_logic_role_model", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "agents_project_docs_index", + "target": "docs_database_database_schema", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "agents_project_docs_index", + "target": "docs_api_rest_api", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "agents_flyway_migration_rule", + "target": "docs_database_flyway_migrations", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/AGENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_project_risk_audit", + "target": "bug_report_jwt_insecure_production_defaults", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_project_risk_audit", + "target": "bug_report_refresh_token_rotation_race_condition", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_project_risk_audit", + "target": "bug_report_authcontext_threadlocal_leak", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_project_risk_audit", + "target": "bug_report_schedule_override_conflict_gap", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_project_risk_audit", + "target": "bug_report_teacher_schedule_override_visibility_gap", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_project_risk_audit", + "target": "bug_report_tenant_datasource_replacement_risk", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_project_risk_audit", + "target": "bug_report_tenant_config_watcher_update_gap", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_project_risk_audit", + "target": "bug_report_kubernetes_tls_trust_all_risk", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_jwt_insecure_production_defaults", + "target": "docs_infrastructure_jwt_secret_policy", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_refresh_token_rotation_race_condition", + "target": "docs_database_auth_refresh_tokens", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_authcontext_threadlocal_leak", + "target": "docs_architecture_authentication", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_schedule_override_conflict_gap", + "target": "docs_api_schedule_overrides_endpoints", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_teacher_schedule_override_visibility_gap", + "target": "docs_api_dynamic_schedule_endpoints", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_tenant_datasource_replacement_risk", + "target": "docs_api_tenant_database_endpoints", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_tenant_config_watcher_update_gap", + "target": "docs_infrastructure_tenants_configmap", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_kubernetes_tls_trust_all_risk", + "target": "docs_infrastructure_kubernetes_production", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_department_import_subject_ownership_risk", + "target": "docs_api_department_workspace_endpoints", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_workload_department_scope_risk", + "target": "docs_api_workload_endpoints", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_semester_boundary_overlap_risk", + "target": "docs_academic_calendar_calendar_model", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_localstorage_access_token_risk", + "target": "docs_frontend_api_client_refresh_flow", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_innerhtml_error_xss_risk", + "target": "docs_frontend_frontend_architecture", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "bug_report_opentelemetry_latest_supply_chain_risk", + "target": "docs_logging_otlp_signoz_export", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_database_per_tenant_pattern", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_k3s_cluster", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_proxmox_database_vms", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_ansible_database_hosts", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_caddy_proxy", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_signoz_opentelemetry_observability", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_fz_152_data_isolation_rationale", + "target": "devops_database_per_tenant_pattern", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_configmap_dynamic_tenant_management", + "target": "docs_infrastructure_tenants_configmap", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_database_per_tenant_pattern", + "target": "docs_architecture_multitenant_architecture", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_gitea_actions_cicd", + "target": "docs_infrastructure_gitea_actions_cicd", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "devops_signoz_opentelemetry_observability", + "target": "docs_logging_otlp_signoz_export", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "compose_backend_service", + "target": "compose_db_service", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "compose_frontend_service", + "target": "compose_backend_service", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "compose_backend_service", + "target": "compose_proxy_network", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "compose_frontend_service", + "target": "compose_proxy_network", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "compose_db_service", + "target": "compose_proxy_network", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "compose_postgres_password_required", + "target": "compose_db_service", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/compose.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_autoupdatedocs_autoupdatedocs_skill", + "target": "_agents_skills_autoupdatedocs_file_to_docs_map", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_api_rest_api", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_database_database_schema", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_architecture_system_architecture", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_business_logic_role_model", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_frontend_frontend_architecture", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_infrastructure_docker_compose", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_auto_update_docs_skill_autoupdatedocs_skill", + "target": "_agents_skills_autoupdatedocs_autoupdatedocs_skill", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/auto-update-docs/SKILL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_auto_update_docs_skill_frontend_settings_docs_map", + "target": "docs_frontend_frontend_architecture", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/auto-update-docs/SKILL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_frontend_design_skill_frontend_design_skill", + "target": "_agents_skills_frontend_design_skill_design_thinking", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/SKILL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_frontend_design_skill_frontend_design_skill", + "target": "_agents_skills_frontend_design_skill_no_ai_aesthetic_rule", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/SKILL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_agents_skills_frontend_design_skill_frontend_design_skill", + "target": "docs_frontend_css_architecture", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.65, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/SKILL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_gitea_workflows_docker_build_build_and_push_docker_images", + "target": "_gitea_workflows_docker_build_backend_image_pipeline", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_gitea_workflows_docker_build_build_and_push_docker_images", + "target": "_gitea_workflows_docker_build_frontend_image_pipeline", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_gitea_workflows_docker_build_build_and_push_docker_images", + "target": "_gitea_workflows_docker_build_deploy_to_k8s", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_gitea_workflows_docker_build_backend_image_pipeline", + "target": "_gitea_workflows_docker_build_zuev_token_secret", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_gitea_workflows_docker_build_frontend_image_pipeline", + "target": "_gitea_workflows_docker_build_zuev_token_secret", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_gitea_workflows_docker_build_deploy_to_k8s", + "target": "_gitea_workflows_docker_build_kubeconfig_secret", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "_gitea_workflows_docker_build_deploy_to_k8s", + "target": "docs_infrastructure_kubernetes_production", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_readme_magistr_overview", + "target": "docs_architecture_system_architecture", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_readme_magistr_overview", + "target": "docs_business_logic_role_model", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_readme_magistr_overview", + "target": "docs_academic_calendar_calendar_model", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_readme_magistr_overview", + "target": "docs_database_database_schema", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_readme_magistr_overview", + "target": "docs_api_rest_api", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_readme_magistr_overview", + "target": "docs_infrastructure_docker_compose", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_readme_magistr_overview", + "target": "docs_development_developer_guide", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_readme_magistr_overview", + "target": "docs_frontend_frontend_architecture", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/README.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_architecture_system_architecture", + "target": "docs_architecture_multitenant_architecture", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_architecture_system_architecture", + "target": "docs_architecture_authentication", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_architecture_multitenant_architecture", + "target": "docs_database_database_schema", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_architecture_multitenant_architecture", + "target": "docs_infrastructure_tenants_configmap", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_architecture_authentication", + "target": "docs_database_auth_refresh_tokens", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_architecture_authentication", + "target": "docs_api_authentication_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_business_logic_role_model", + "target": "docs_api_role_permissions", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_business_logic_role_model", + "target": "docs_frontend_role_based_navigation", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_business_logic_dynamic_schedule_model", + "target": "docs_database_dynamic_schedule_tables", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_business_logic_dynamic_schedule_model", + "target": "docs_academic_calendar_schedule_generation_filter", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_business_logic_schedule_validation", + "target": "docs_api_schedule_rules_endpoints", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_business_logic_lifecycle_archiving", + "target": "docs_database_database_schema", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_business_logic_teacher_department_assignments", + "target": "docs_api_department_workspace_endpoints", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_academic_calendar_calendar_model", + "target": "docs_academic_calendar_activity_codes", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_academic_calendar_calendar_model", + "target": "docs_academic_calendar_schedule_generation_filter", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_academic_calendar_calendar_model", + "target": "docs_database_academic_calendar_tables", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_academic_calendar_calendar_model", + "target": "docs_api_group_calendar_assignments", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_rest_api", + "target": "docs_api_authentication_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_rest_api", + "target": "docs_api_dynamic_schedule_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_rest_api", + "target": "docs_api_schedule_rules_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_rest_api", + "target": "docs_api_schedule_overrides_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_rest_api", + "target": "docs_api_department_workspace_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_rest_api", + "target": "docs_api_tenant_database_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_authentication_endpoints", + "target": "docs_database_auth_refresh_tokens", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_dynamic_schedule_endpoints", + "target": "docs_business_logic_dynamic_schedule_model", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_schedule_rules_endpoints", + "target": "docs_database_dynamic_schedule_tables", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_schedule_overrides_endpoints", + "target": "docs_database_dynamic_schedule_tables", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_api_tenant_database_endpoints", + "target": "docs_infrastructure_tenants_configmap", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/API.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_database_database_schema", + "target": "docs_database_er_relationships", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_database_database_schema", + "target": "docs_database_dynamic_schedule_tables", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_database_database_schema", + "target": "docs_database_academic_calendar_tables", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_database_database_schema", + "target": "docs_database_auth_refresh_tokens", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_database_flyway_migrations", + "target": "docs_development_flyway_rules", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_development_developer_guide", + "target": "docs_development_code_style", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_development_developer_guide", + "target": "docs_development_new_endpoint_flow", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_development_new_endpoint_flow", + "target": "docs_api_rest_api", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_development_new_endpoint_flow", + "target": "docs_database_flyway_migrations", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_frontend_frontend_architecture", + "target": "docs_frontend_admin_spa_routing", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_frontend_frontend_architecture", + "target": "docs_frontend_api_client_refresh_flow", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_frontend_frontend_architecture", + "target": "docs_frontend_schedule_views", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_frontend_frontend_architecture", + "target": "docs_frontend_settings_spa", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_frontend_api_client_refresh_flow", + "target": "docs_api_authentication_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_frontend_role_based_navigation", + "target": "docs_api_role_permissions", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_frontend_schedule_views", + "target": "docs_api_dynamic_schedule_endpoints", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_frontend_opentelemetry_client", + "target": "docs_infrastructure_signoz_opentelemetry", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_infrastructure_docker_compose", + "target": "compose_backend_service", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_infrastructure_docker_compose", + "target": "compose_frontend_service", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_infrastructure_docker_compose", + "target": "compose_db_service", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_infrastructure_kubernetes_production", + "target": "docs_infrastructure_tenants_configmap", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_infrastructure_kubernetes_production", + "target": "docs_infrastructure_jwt_secret_policy", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_infrastructure_kubernetes_production", + "target": "docs_infrastructure_caddy_proxy", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_infrastructure_gitea_actions_cicd", + "target": "_gitea_workflows_docker_build_build_and_push_docker_images", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_infrastructure_signoz_opentelemetry", + "target": "docs_logging_otlp_signoz_export", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_logging_logging_stack", + "target": "docs_logging_tenant_mdc_context", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/LOGGING.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_logging_logging_stack", + "target": "docs_logging_otlp_signoz_export", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/LOGGING.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_logging_tenant_mdc_context", + "target": "docs_architecture_multitenant_architecture", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/LOGGING.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "target": "docs_dynamic_schedule_implementation_schedule_generator_service", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "target": "docs_business_logic_dynamic_schedule_model", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "target": "docs_schedule_proposal_dynamic_schedule_concept", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_proposal_dynamic_schedule_concept", + "target": "docs_schedule_proposal_calendar_layer", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_proposal_dynamic_schedule_concept", + "target": "docs_schedule_proposal_schedule_rules_layer", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_proposal_calendar_layer", + "target": "docs_academic_calendar_calendar_model", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_proposal_schedule_rules_layer", + "target": "docs_database_dynamic_schedule_tables", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_daily_academic_calendar_grid", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_group_calendar_assignment", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_activity_codes", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_laboratory_subgroups", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_schedule_api_endpoint", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_rule_conflict_validation", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_academicdateservice", + "target": "docs_schedule_tasks_group_calendar_assignment", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_schedulegeneratorservice", + "target": "docs_schedule_tasks_daily_academic_calendar_grid", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_ui_components_document", + "target": "docs_ui_components_custom_select_wrapper", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_ui_components_document", + "target": "docs_ui_components_multi_select", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_custom_select_wrapper", + "target": "docs_ui_components_native_select", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_custom_select_wrapper", + "target": "docs_ui_components_global_mutationobserver", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_custom_select_wrapper", + "target": "docs_ui_components_frontend_admin_js_dropdown_js", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_custom_select_wrapper", + "target": "docs_ui_components_customselect", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_customselect", + "target": "docs_ui_components_dynamic_options_sync", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_multi_select", + "target": "docs_ui_components_utils_initmultiselect", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_multi_select", + "target": "docs_ui_components_checkbox_item_checkmark", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_browser_option_styling_limit", + "target": "docs_ui_components_custom_select_wrapper", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_browser_option_styling_limit", + "target": "docs_ui_components_multi_select", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_index_login_page", + "target": "frontend_index_login_form", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_index_login_page", + "target": "frontend_index_theme_toggle_script", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_index_login_page", + "target": "frontend_index_login_script", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_admin_spa_shell", + "target": "frontend_admin_index_sidebar_navigation", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_admin_spa_shell", + "target": "frontend_admin_index_settings_menu", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_admin_spa_shell", + "target": "frontend_admin_index_teacher_request_badge", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_settings_menu", + "target": "frontend_admin_settings_index_settings_spa_shell", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_dashboard_dashboard_view", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_department_workspace_department_workspace_view", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_schedule_schedule_rule_constructor", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_auditorium_workload_workload_view", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_schedule_view_schedule_view_shell", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_classrooms_classroom_management", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_groups_group_management", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_university_structure_university_structure_view", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_subjects_subject_management", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_users_user_management", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_index_settings_spa_shell", + "target": "frontend_admin_settings_index_settings_navigation", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_index_settings_spa_shell", + "target": "frontend_admin_settings_index_admin_back_link", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_index_admin_back_link", + "target": "frontend_admin_index_admin_spa_shell", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_index_settings_navigation", + "target": "frontend_admin_settings_views_general_general_settings_placeholder", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_index_settings_navigation", + "target": "frontend_admin_settings_views_time_slots_time_slots_settings", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_index_settings_navigation", + "target": "frontend_admin_settings_views_edu_forms_education_forms_management", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_index_settings_navigation", + "target": "frontend_admin_settings_views_database_tenant_connection_management", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_views_database_tenant_connection_management", + "target": "frontend_admin_settings_views_database_tenants_table", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/database.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_views_time_slots_time_slots_settings", + "target": "frontend_admin_settings_views_time_slots_time_slot_scope", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/time-slots.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_views_time_slots_time_slots_settings", + "target": "frontend_admin_settings_views_time_slots_manual_time_grid_modal", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/time-slots.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_settings_views_time_slots_time_slot_scope", + "target": "frontend_admin_views_academic_calendar_calendar_day_dialog", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/time-slots.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_academic_year_management", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_semester_management", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_calendar_grid_editor", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_calendar_subject_bindings", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_calendar_day_dialog", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_calendar_grid_editor", + "target": "docs_schedule_tasks_daily_academic_calendar_grid", + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_calendar_grid_editor", + "target": "docs_schedule_tasks_activity_codes", + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_calendar_subject_bindings", + "target": "frontend_admin_views_subjects_subject_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_academic_calendar_calendar_day_dialog", + "target": "frontend_admin_settings_views_time_slots_time_slot_scope", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_auditorium_workload_workload_view", + "target": "frontend_admin_views_auditorium_workload_workload_filters", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/auditorium-workload.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_auditorium_workload_workload_filters", + "target": "docs_ui_components_multi_select", + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/auditorium-workload.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_auditorium_workload_workload_view", + "target": "frontend_admin_views_classrooms_classroom_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/auditorium-workload.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_classrooms_classroom_management", + "target": "frontend_admin_views_classrooms_equipment_dictionary", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_classrooms_classroom_management", + "target": "frontend_admin_views_classrooms_equipment_multi_select", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_classrooms_equipment_multi_select", + "target": "docs_ui_components_multi_select", + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_classrooms_equipment_dictionary", + "target": "frontend_admin_views_auditorium_workload_workload_filters", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_dashboard_dashboard_view", + "target": "frontend_admin_views_dashboard_realtime_monitoring", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_dashboard_dashboard_view", + "target": "frontend_admin_views_dashboard_conflict_center", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_dashboard_dashboard_view", + "target": "frontend_admin_views_dashboard_quick_navigation", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_dashboard_quick_navigation", + "target": "frontend_admin_views_schedule_schedule_rule_constructor", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_dashboard_quick_navigation", + "target": "frontend_admin_views_schedule_view_schedule_view_shell", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_dashboard_conflict_center", + "target": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_department_workspace_department_workspace_view", + "target": "frontend_admin_views_department_workspace_department_subject_import", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_department_workspace_department_workspace_view", + "target": "frontend_admin_views_department_workspace_teacher_assignment", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_department_workspace_department_workspace_view", + "target": "frontend_admin_views_department_workspace_teacher_request_form", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_department_workspace_department_workspace_view", + "target": "frontend_admin_views_department_workspace_department_comments", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_department_workspace_teacher_request_form", + "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_department_workspace_department_subject_import", + "target": "frontend_admin_views_subjects_subject_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_groups_group_filters", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_groups_subgroup_management", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_groups_group_calendar_assignment", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_filters", + "target": "docs_ui_components_multi_select", + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_subgroup_management", + "target": "docs_schedule_tasks_laboratory_subgroups", + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_calendar_assignment", + "target": "docs_schedule_tasks_group_calendar_assignment", + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_calendar_assignment", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_settings_views_edu_forms_education_forms_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_university_structure_department_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_university_structure_specialty_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_university_structure_profile_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_view_schedule_view_shell", + "target": "frontend_admin_views_schedule_view_target_filters", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_view_schedule_view_shell", + "target": "frontend_admin_views_schedule_view_schedule_results", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_view_target_filters", + "target": "frontend_admin_views_groups_group_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_view_target_filters", + "target": "frontend_admin_views_classrooms_classroom_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_view_target_filters", + "target": "frontend_admin_views_subjects_subject_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_view_target_filters", + "target": "frontend_admin_views_university_structure_department_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_schedule_schedule_hours_start_weeks", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_schedule_schedule_group_multiselect", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_schedule_schedule_visual_drawer", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "docs_schedule_tasks_dynamic_schedule_tasks", + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_hours_start_weeks", + "target": "docs_schedule_tasks_dynamic_schedule_tasks", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_group_multiselect", + "target": "docs_ui_components_multi_select", + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", + "target": "docs_schedule_tasks_rule_conflict_validation", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_subjects_subject_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_academic_calendar_semester_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_groups_group_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_subjects_subject_management", + "target": "frontend_admin_views_subjects_teacher_subject_binding", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/subjects.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_subjects_subject_management", + "target": "frontend_admin_views_university_structure_department_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/subjects.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_subjects_teacher_subject_binding", + "target": "frontend_admin_views_users_user_management", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/subjects.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "target": "frontend_admin_views_department_workspace_teacher_request_form", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/teacher-requests.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_university_structure_university_structure_view", + "target": "frontend_admin_views_university_structure_department_management", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_university_structure_university_structure_view", + "target": "frontend_admin_views_university_structure_specialty_management", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_university_structure_university_structure_view", + "target": "frontend_admin_views_university_structure_profile_management", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_university_structure_specialty_management", + "target": "frontend_admin_views_university_structure_profile_management", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_university_structure_specialty_management", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_university_structure_profile_management", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_users_user_management", + "target": "frontend_admin_views_users_role_selector", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/users.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_users_role_selector", + "target": "frontend_admin_views_department_workspace_department_workspace_view", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/users.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_admin_views_users_user_management", + "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/users.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_department_index_department_redirect", + "target": "frontend_admin_views_department_workspace_department_workspace_view", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/department/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "frontend_admin_views_groups_group_management", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "frontend_admin_views_schedule_schedule_rule_constructor", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_multi_select", + "target": "frontend_admin_views_auditorium_workload_workload_filters", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_multi_select", + "target": "frontend_admin_views_classrooms_equipment_multi_select", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "docs_ui_components_multi_select", + "target": "frontend_admin_views_schedule_schedule_group_multiselect", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_edu_office_index_edu_office_redirect_page", + "target": "frontend_edu_office_index_admin_schedule_view_route", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_group_selection", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_week_navigation", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_schedule_grid", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_loadgroups", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_loadschedule", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_loadgroups", + "target": "frontend_student_index_api_groups_endpoint", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_loadgroups", + "target": "frontend_student_index_fetchjson", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_loadschedule", + "target": "frontend_student_index_api_schedule_group_endpoint", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_loadschedule", + "target": "frontend_student_index_fetchjson", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_loadschedule", + "target": "frontend_student_index_renderweek", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_renderweek", + "target": "frontend_student_index_renderday", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_renderemptyweek", + "target": "frontend_student_index_renderday", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_renderday", + "target": "frontend_student_index_renderlesson", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_fetchjson", + "target": "frontend_student_index_refreshaccesstoken", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_fetchjson", + "target": "frontend_student_index_clearauthstate", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_refreshaccesstoken", + "target": "frontend_student_index_api_auth_refresh_endpoint", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_refreshaccesstoken", + "target": "frontend_student_index_storeauthstate", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_logout", + "target": "frontend_student_index_api_auth_logout_endpoint", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_logout", + "target": "frontend_student_index_clearauthstate", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_fetchjson", + "target": "frontend_student_index_student_auth_state", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_storeauthstate", + "target": "frontend_student_index_student_auth_state", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_clearauthstate", + "target": "frontend_student_index_student_auth_state", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_teacher_identity", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_week_navigation", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_schedule_grid", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_responsive_schedule_layout", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_loadschedule", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_teacher_identity", + "target": "frontend_teacher_index_teacher_auth_state", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_loadschedule", + "target": "frontend_teacher_index_api_schedule_teacher_endpoint", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_loadschedule", + "target": "frontend_teacher_index_fetchjson", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_loadschedule", + "target": "frontend_teacher_index_renderemptyweek", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_loadschedule", + "target": "frontend_teacher_index_renderweek", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_renderweek", + "target": "frontend_teacher_index_rendermobileweek", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_renderweek", + "target": "frontend_teacher_index_collectslots", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_renderweek", + "target": "frontend_teacher_index_renderhead", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_renderweek", + "target": "frontend_teacher_index_rendercell", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_rendermobileweek", + "target": "frontend_teacher_index_renderhead", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_rendermobileweek", + "target": "frontend_teacher_index_renderlesson", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_renderemptyweek", + "target": "frontend_teacher_index_renderhead", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_rendercell", + "target": "frontend_teacher_index_renderlesson", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_fetchjson", + "target": "frontend_teacher_index_refreshaccesstoken", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_fetchjson", + "target": "frontend_teacher_index_clearauthstate", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_refreshaccesstoken", + "target": "frontend_teacher_index_api_auth_refresh_endpoint", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_refreshaccesstoken", + "target": "frontend_teacher_index_storeauthstate", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_logout", + "target": "frontend_teacher_index_api_auth_logout_endpoint", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_logout", + "target": "frontend_teacher_index_clearauthstate", + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_fetchjson", + "target": "frontend_teacher_index_teacher_auth_state", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_storeauthstate", + "target": "frontend_teacher_index_teacher_auth_state", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_teacher_index_clearauthstate", + "target": "frontend_teacher_index_teacher_auth_state", + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_loadschedule", + "target": "frontend_teacher_index_loadschedule", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_fetchjson", + "target": "frontend_teacher_index_fetchjson", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_refreshaccesstoken", + "target": "frontend_teacher_index_refreshaccesstoken", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_logout", + "target": "frontend_teacher_index_logout", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_week_navigation", + "target": "frontend_teacher_index_week_navigation", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_schedule_grid", + "target": "frontend_teacher_index_schedule_grid", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_student_auth_state", + "target": "frontend_teacher_index_teacher_auth_state", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_teacher_index_teacher_schedule_page", + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_devops_resume_page", + "target": "resume_index_zuev_egor_alekseevich", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_devops_resume_page", + "target": "resume_index_junior_devops_infrastructure_engineer", + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_zuev_egor_alekseevich", + "target": "resume_index_smart_schedule_startup", + "relation": "conceptually_related_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_database_per_tenant", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_kubernetes_k3s_delivery", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_dynamic_tenants_configmap", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_backend_resilient_startup", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_ansible_security_provisioning", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_gitea_actions_cicd", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_opentelemetry_signoz_observability", + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_ansible_security_provisioning", + "target": "resume_index_devsecops_principles", + "relation": "conceptually_related_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_opentelemetry_signoz_observability", + "target": "resume_index_incident_runbook_mindset", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_homelab_engineering_practice", + "target": "resume_index_junior_devops_infrastructure_engineer", + "relation": "conceptually_related_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_database_per_tenant", + "target": "resume_index_opentelemetry_signoz_observability", + "relation": "conceptually_related_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "frontend_student_index_student_schedule_page", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "frontend_teacher_index_teacher_schedule_page", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_smart_schedule_startup", + "target": "frontend_edu_office_index_edu_office_redirect_page", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_database_per_tenant", + "target": "frontend_student_index_api_schedule_group_endpoint", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.65, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + }, + { + "source": "resume_index_database_per_tenant", + "target": "frontend_teacher_index_api_schedule_teacher_endpoint", + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.65, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html", + "source_location": null, + "weight": 1.0 + } + ], + "hyperedges": [ + { + "id": "dynamic_schedule_documentation", + "label": "Документация динамического расписания", + "nodes": [ + "docs_business_logic_dynamic_schedule_model", + "docs_api_dynamic_schedule_endpoints", + "docs_database_dynamic_schedule_tables", + "docs_academic_calendar_calendar_model", + "docs_frontend_schedule_views", + "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "docs_schedule_proposal_dynamic_schedule_concept" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md" + }, + { + "id": "multitenant_infrastructure_pattern", + "label": "Паттерн мультитенантной инфраструктуры", + "nodes": [ + "docs_architecture_multitenant_architecture", + "devops_database_per_tenant_pattern", + "docs_infrastructure_tenants_configmap", + "compose_db_service", + "docs_logging_tenant_mdc_context" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md" + }, + { + "id": "documentation_governance_policy", + "label": "Политика ведения документации", + "nodes": [ + "agents_project_regulation", + "_agents_skills_autoupdatedocs_autoupdatedocs_skill", + "docs_development_flyway_rules", + "docs_database_flyway_migrations" + ], + "relation": "implement", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md" + }, + { + "id": "admin_spa_route_system", + "label": "Маршруты админской SPA", + "nodes": [ + "frontend_admin_index_admin_spa_shell", + "frontend_admin_index_sidebar_navigation", + "frontend_admin_views_dashboard_dashboard_view", + "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "frontend_admin_views_department_workspace_department_workspace_view", + "frontend_admin_views_schedule_schedule_rule_constructor", + "frontend_admin_views_academic_calendar_academic_calendar_view", + "frontend_admin_views_auditorium_workload_workload_view", + "frontend_admin_views_schedule_view_schedule_view_shell", + "frontend_admin_views_classrooms_classroom_management", + "frontend_admin_views_groups_group_management", + "frontend_admin_views_university_structure_university_structure_view", + "frontend_admin_views_subjects_subject_management", + "frontend_admin_views_users_user_management" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html" + }, + { + "id": "settings_spa_route_system", + "label": "Маршруты SPA настроек", + "nodes": [ + "frontend_admin_settings_index_settings_spa_shell", + "frontend_admin_settings_index_settings_navigation", + "frontend_admin_settings_views_general_general_settings_placeholder", + "frontend_admin_settings_views_time_slots_time_slots_settings", + "frontend_admin_settings_views_edu_forms_education_forms_management", + "frontend_admin_settings_views_database_tenant_connection_management" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html" + }, + { + "id": "schedule_generation_workspace", + "label": "Рабочий контур генерации расписания", + "nodes": [ + "docs_schedule_tasks_dynamic_schedule_tasks", + "docs_schedule_tasks_daily_academic_calendar_grid", + "docs_schedule_tasks_group_calendar_assignment", + "frontend_admin_views_academic_calendar_academic_calendar_view", + "frontend_admin_views_groups_group_management", + "frontend_admin_views_schedule_schedule_rule_constructor", + "frontend_admin_views_schedule_view_schedule_view_shell", + "frontend_admin_settings_views_time_slots_time_slots_settings" + ], + "relation": "participate_in", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md" + }, + { + "id": "shared_week_schedule_rendering", + "label": "Общий сценарий просмотра недельного расписания", + "nodes": [ + "frontend_student_index_loadschedule", + "frontend_student_index_renderweek", + "frontend_teacher_index_loadschedule", + "frontend_teacher_index_renderweek", + "frontend_edu_office_index_admin_schedule_view_route" + ], + "relation": "participate_in", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html" + }, + { + "id": "shared_browser_auth_flow", + "label": "Общий браузерный поток авторизации", + "nodes": [ + "frontend_student_index_fetchjson", + "frontend_student_index_refreshaccesstoken", + "frontend_student_index_logout", + "frontend_teacher_index_fetchjson", + "frontend_teacher_index_refreshaccesstoken", + "frontend_teacher_index_logout" + ], + "relation": "implement", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html" + }, + { + "id": "resume_devops_delivery_chain", + "label": "Цепочка DevOps-доставки в резюме", + "nodes": [ + "resume_index_kubernetes_k3s_delivery", + "resume_index_dynamic_tenants_configmap", + "resume_index_gitea_actions_cicd", + "resume_index_opentelemetry_signoz_observability", + "resume_index_database_per_tenant" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "/mnt/HDD/ProjectMagistr/magistr/resume/index.html" + } + ], + "input_tokens": 0, + "output_tokens": 0 +} \ No newline at end of file diff --git a/graphify-out/.graphify_uncached.txt b/graphify-out/.graphify_uncached.txt new file mode 100644 index 0000000..242ae4a --- /dev/null +++ b/graphify-out/.graphify_uncached.txt @@ -0,0 +1,48 @@ +/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md +/mnt/HDD/ProjectMagistr/magistr/.agents/skills/auto-update-docs/SKILL.md +/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/LICENSE.txt +/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/SKILL.md +/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml +/mnt/HDD/ProjectMagistr/magistr/AGENTS.md +/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md +/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md +/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/README.md +/mnt/HDD/ProjectMagistr/magistr/compose.yaml +/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md +/mnt/HDD/ProjectMagistr/magistr/docs/API.md +/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md +/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md +/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md +/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md +/mnt/HDD/ProjectMagistr/magistr/docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md +/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md +/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md +/mnt/HDD/ProjectMagistr/magistr/docs/LOGGING.md +/mnt/HDD/ProjectMagistr/magistr/docs/README.md +/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md +/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md +/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/database.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/edu-forms.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/general.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/time-slots.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/auditorium-workload.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/subjects.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/teacher-requests.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html +/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/users.html +/mnt/HDD/ProjectMagistr/magistr/frontend/department/index.html +/mnt/HDD/ProjectMagistr/magistr/frontend/edu-office/index.html +/mnt/HDD/ProjectMagistr/magistr/frontend/index.html +/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html +/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html +/mnt/HDD/ProjectMagistr/magistr/resume/index.html \ No newline at end of file diff --git a/graphify-out/.vocab.txt b/graphify-out/.vocab.txt new file mode 100644 index 0000000..be9c197 --- /dev/null +++ b/graphify-out/.vocab.txt @@ -0,0 +1,885 @@ +abstract +academic +access +action +actions +active +activity +actual +add +address +admin +advice +after +agent +agents +alert +all +allow +allowed +allows +ambiguous +and +ansible +any +api +app +application +applies +apply +approve +archive +archived +are +argument +asc +assignment +assignments +audience +auditorium +auth +authenticate +authenticated +authenticates +author +authorization +authorized +auto +availability +available +backend +bad +badge +base +bean +bearer +before +between +blank +blocks +boolean +boot +broad +btn +bucket +build +building +but +button +buttons +bytes +cachable +cache +caddy +calculator +calendar +calendars +can +canonical +capacity +caption +case +category +cell +changes +checkbox +checkboxes +checkmark +class +classroom +classrooms +clean +clear +cleared +click +client +close +code +collect +collection +color +com +combined +command +comment +comments +compare +complete +completion +component +compose +config +configs +configuration +configure +configurer +conflict +connection +constructor +consumed +consumption +container +content +context +controller +cookie +copy +count +course +coverage +create +created +creation +crypt +css +current +custom +dashboard +data +database +date +dates +day +days +decoder +deduplicate +default +defaults +delete +department +departments +desc +description +descriptor +design +details +determine +dev +dictionaries +different +display +docker +docs +does +domain +dropdown +dropdowns +dto +duplicate +duplicates +duration +each +edu +education +effect +effective +element +eligible +empty +enable +encoder +end +endpoint +engineer +entities +entity +equal +equals +equipment +equipments +error +escape +excel +exception +excluding +existing +exists +expired +expires +exporter +external +factory +fallback +fetch +field +fields +file +fill +find +first +floor +flow +flyway +for +form +format +forms +found +free +from +frontend +full +function +future +generate +generation +generator +get +gitea +global +graduated +greater +grid +group +groups +handle +handler +has +hash +have +head +headers +hex +hide +highlight +hikari +historical +history +homelab +hours +html +http +ids +ignore +illegal +import +incident +include +infrastructure +init +initialized +initializer +inner +insecure +integer +interceptor +interceptors +interface +invalid +invalidate +iso +issued +item +items +java +job +jpa +json +junior +jwt +keeps +key +keys +kubeconfig +kubernetes +label +labels +laboratory +latest +layout +lecture +less +lesson +lessons +lifecycle +limit +limits +line +linked +list +load +loading +local +logger +login +logout +long +lookup +magistr +main +manage +manager +manual +map +mapped +mapper +mapping +maps +max +may +mdc +menu +merge +message +metric +min +minutes +missing +mobile +mode +modifying +multi +mutable +mutation +mvc +name +names +natural +nav +navigation +negative +new +next +normalize +not +noz +npe +null +number +object +observability +observer +only +open +ops +option +optional +options +order +otel +otlp +outside +overlap +overlaps +overlay +override +overrides +page +parity +parse +password +per +period +persist +pipeline +platform +post +postgre +postgres +practice +pre +prefixes +primary +prime +print +process +production +profile +profiles +progress +properties +provider +proxmox +proxy +public +put +query +random +range +raw +reason +rebuild +record +red +redirect +refresh +registry +reject +rejects +remains +remove +render +rendered +replace +replay +repository +request +requested +requests +require +resolve +response +rest +restore +retention +reveal +review +reviewed +revoke +revoked +revokes +ripple +role +roles +room +rotate +rotated +rotates +rotation +routes +routing +rule +rules +run +runbook +runbooks +runner +same +save +schedule +scheduled +scheduling +scope +scopes +script +search +sec +secondary +secret +section +sections +secure +select +selectable +selection +semester +semesters +september +serializable +service +servlet +session +set +settings +sha +short +show +sidebar +sig +signature +single +size +skill +skips +slot +slots +sort +sorted +source +spa +speciality +specialties +specialty +split +spring +sql +start +started +starts +state +status +storage +store +stores +string +structure +student +study +style +subgroup +subgroups +subject +subjects +success +such +sum +summarize +summary +superclass +switch +sync +system +tab +table +tabs +target +targets +teacher +teachers +telemetry +tenant +tenants +test +text +than +theme +theory +thread +time +title +tls +toast +toggle +token +too +touch +trace +transaction +transactional +transfer +trigger +trim +trust +ttl +two +type +types +unauthorized +unavailable +unexpected +unified +university +unsupported +update +updated +updater +url +use +user +username +users +uses +utils +valid +validate +validation +validity +value +view +watch +watcher +web +week +weeks +when +whole +with +without +workflow +workload +workspace +write +xss +year +years +zero +zone +zuev +автоматическая +авторизации +адаптивная +админ +администратора +администрирование +активностей +алексеевич +архивация +архитектура +аудит +аудитории +аудиторным +аутентификации +баз +базы +безопасный +быстрый +валидация +видимости +визуальное +владения +внешняя +возврат +времени +временной +временных +вуза +входа +выбор +выхода +генерации +глобальный +годами +годового +гонка +границ +график +графика +групп +группами +группе +группы +данных +дашборд +дашборда +действия +деплоя +диалог +дизайн +динамические +динамического +динамическое +дисциплин +дисциплинам +дисциплинами +дисциплине +для +дневная +документации +документация +доставка +егор +жизненного +заглушка +загруженности +загрузка +задачи +замены +занятий +заявка +заявок +зуев +идентификатор +изоляции +импорте +индекс +индикатор +инженера +инженерная +интерфейса +инфраструктура +инфраструктуре +инфраструктуры +инцидентах +кабинет +кабинета +как +календарного +календарный +календарю +календаря +карта +кастомного +кафедрам +кафедрами +кафедре +кафедры +кластер +клиент +клиента +коды +комментарии +компонентов +конструктор +контекст +конфигурации +конфликта +конфликтов +концепция +лабораторных +логирования +магистр +маршрут +меню +миграции +миграций +модальное +модель +мониторинг +мультиселект +мультитенантная +мышление +наблюдаемость +навигация +навык +нагрузки +назначение +назначения +настроек +настройки +нативный +начала +небезопасные +недели +недельная +неизменяемости +нового +обертка +обзор +области +область +обновления +оболочка +оборудования +обоснование +образа +образов +обучения +общих +обязательная +ограничения +окно +отдела +отказоустойчивая +отказоустойчивость +ошибок +панели +панель +пар +паттерн +переменная +пересечения +переход +подгруппами +подгруппы +подключениями +подключенных +политика +пользователя +пользователями +порядок +права +правил +правила +правило +практика +представления +предупреждений +преподавателей +преподавателя +при +привязка +привязки +принципы +пробел +проверка +проверки +провижининг +проекта +проектной +проектный +просмотр +просмотра +против +профилями +публикации +рабочая +разработке +разработчика +разрешение +раскладка +расписание +расписаний +расписания +реализация +регламент +редактор +редирект +результаты +резюме +риск +рисков +ролевая +ролей +роли +ротации +роутинг +руководство +русского +ручной +сборки +связи +секрета +семестрами +семестров +сервис +сетка +сетки +сеть +синхронизация +система +системы +слой +слота +слотов +создания +состояние +специальностями +справочник +старта +стартап +стек +стилизации +страница +странице +страницы +структура +студента +схема +таблица +таблицы +тега +текущих +тенанта +тенантами +тенантов +тенанты +токенов +умное +университетов +университетского +управление +устойчивость +утечка +учебного +учебный +учебными +файлов +фильтр +фильтры +фондом +форма +формами +форме +фронтенда +хосты +центр +цикла +часы +чекбоксами +через +экспорт +эндпоинта +эндпоинты +эстетики +языка +ячейки \ No newline at end of file diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md new file mode 100644 index 0000000..6550cd7 --- /dev/null +++ b/graphify-out/GRAPH_REPORT.md @@ -0,0 +1,713 @@ +# Graph Report - . (2026-07-04) + +## Corpus Check +- 242 files · ~107,825 words +- Verdict: corpus is large enough that graph structure adds value. + +## Summary +- 2675 nodes · 6377 edges · 135 communities (127 shown, 8 thin omitted) +- Extraction: 87% EXTRACTED · 13% INFERRED · 0% AMBIGUOUS · INFERRED: 801 edges (avg confidence: 0.81) +- Token cost: 0 input · 0 output + +## Community Hubs (Navigation) +- [[_COMMUNITY_Модель расписание override|Модель расписание override]] +- [[_COMMUNITY_Сервис расписание Query|Сервис расписание Query]] +- [[_COMMUNITY_Модель преподаватели создание|Модель преподаватели создание]] +- [[_COMMUNITY_Контроллер расписание правила Админ|Контроллер расписание правила Админ]] +- [[_COMMUNITY_Модель дисциплины комментарии|Модель дисциплины комментарии]] +- [[_COMMUNITY_Модель Авторизация refresh токены|Модель Авторизация refresh токены]] +- [[_COMMUNITY_Модель расписание правила|Модель расписание правила]] +- [[_COMMUNITY_Контроллер преподаватели дисциплины|Контроллер преподаватели дисциплины]] +- [[_COMMUNITY_Контроллер подгруппы|Контроллер подгруппы]] +- [[_COMMUNITY_расписание экран|расписание экран]] +- [[_COMMUNITY_Модель пользователи|Модель пользователи]] +- [[_COMMUNITY_Конфигурация Авторизация Interceptor|Конфигурация Авторизация Interceptor]] +- [[_COMMUNITY_Контроллер пользователи|Контроллер пользователи]] +- [[_COMMUNITY_Сервис расписание Generator|Сервис расписание Generator]] +- [[_COMMUNITY_расписание|расписание]] +- [[_COMMUNITY_Контроллер Учебный календарь Админ|Контроллер Учебный календарь Админ]] +- [[_COMMUNITY_Модель занятия Type|Модель занятия Type]] +- [[_COMMUNITY_Модель преподаватели кафедры Assignment|Модель преподаватели кафедры Assignment]] +- [[_COMMUNITY_Модель студенты группы|Модель студенты группы]] +- [[_COMMUNITY_Контроллер Учебный календарь|Контроллер Учебный календарь]] +- [[_COMMUNITY_Модель Учебный календарь дисциплины|Модель Учебный календарь дисциплины]] +- [[_COMMUNITY_Контроллер Speciality|Контроллер Speciality]] +- [[_COMMUNITY_Контроллер кафедры кабинет|Контроллер кафедры кабинет]] +- [[_COMMUNITY_Контроллер Авторизация|Контроллер Авторизация]] +- [[_COMMUNITY_Модель кафедры|Модель кафедры]] +- [[_COMMUNITY_Контроллер группы|Контроллер группы]] +- [[_COMMUNITY_Контроллер аудитории|Контроллер аудитории]] +- [[_COMMUNITY_Модель Lifecycle сущность|Модель Lifecycle сущность]] +- [[_COMMUNITY_кафедры кабинет контроллер Test|кафедры кабинет контроллер Test]] +- [[_COMMUNITY_Контроллер Education формы|Контроллер Education формы]] +- [[_COMMUNITY_DTO аудитории|DTO аудитории]] +- [[_COMMUNITY_DTO группы|DTO группы]] +- [[_COMMUNITY_main|main]] +- [[_COMMUNITY_Модель специальности профили|Модель специальности профили]] +- [[_COMMUNITY_Модель время слоты Scope|Модель время слоты Scope]] +- [[_COMMUNITY_Модель Semester|Модель Semester]] +- [[_COMMUNITY_Модель Speciality|Модель Speciality]] +- [[_COMMUNITY_Модель аудитории|Модель аудитории]] +- [[_COMMUNITY_Сервис студенты группы Lifecycle|Сервис студенты группы Lifecycle]] +- [[_COMMUNITY_JWT токены сервис Test|JWT токены сервис Test]] +- [[_COMMUNITY_Модель Учебный календарь Activity|Модель Учебный календарь Activity]] +- [[_COMMUNITY_Контроллер время слоты Админ|Контроллер время слоты Админ]] +- [[_COMMUNITY_Модель время слоты Date|Модель время слоты Date]] +- [[_COMMUNITY_Модель Учебный Year|Модель Учебный Year]] +- [[_COMMUNITY_Модель студенты группы календарь|Модель студенты группы календарь]] +- [[_COMMUNITY_DTO Create кафедры|DTO Create кафедры]] +- [[_COMMUNITY_DTO Create группы|DTO Create группы]] +- [[_COMMUNITY_Конфигурация тенанты конфигурация|Конфигурация тенанты конфигурация]] +- [[_COMMUNITY_Контроллер Global Exception Handler|Контроллер Global Exception Handler]] +- [[_COMMUNITY_Модель Учебный календарь Day|Модель Учебный календарь Day]] +- [[_COMMUNITY_Контроллер расписание правила Админ|Контроллер расписание правила Админ]] +- [[_COMMUNITY_Контроллер БД|Контроллер БД]] +- [[_COMMUNITY_Модель время слоты|Модель время слоты]] +- [[_COMMUNITY_DTO аудитории|DTO аудитории]] +- [[_COMMUNITY_Конфигурация тенанты конфигурация Watcher|Конфигурация тенанты конфигурация Watcher]] +- [[_COMMUNITY_DTO Login|DTO Login]] +- [[_COMMUNITY_main|main]] +- [[_COMMUNITY_DTO пользователи|DTO пользователи]] +- [[_COMMUNITY_Утилиты Course And Semester|Утилиты Course And Semester]] +- [[_COMMUNITY_DTO Create пользователи|DTO Create пользователи]] +- [[_COMMUNITY_SCHEDULE TASKS|SCHEDULE TASKS]] +- [[_COMMUNITY_Конфигурация JWT Properties|Конфигурация JWT Properties]] +- [[_COMMUNITY_Контроллер дисциплины|Контроллер дисциплины]] +- [[_COMMUNITY_Контроллер время слоты Админ|Контроллер время слоты Админ]] +- [[_COMMUNITY_DTO Review преподаватели создание|DTO Review преподаватели создание]] +- [[_COMMUNITY_Модель Учебный календарь|Модель Учебный календарь]] +- [[_COMMUNITY_API|API]] +- [[_COMMUNITY_Конфигурация тенанты Context|Конфигурация тенанты Context]] +- [[_COMMUNITY_Конфигурация тенанты данные источник|Конфигурация тенанты данные источник]] +- [[_COMMUNITY_DevOps инфраструктура|DevOps инфраструктура]] +- [[_COMMUNITY_ACADEMIC CALENDAR|ACADEMIC CALENDAR]] +- [[_COMMUNITY_кафедры кабинет|кафедры кабинет]] +- [[_COMMUNITY_Конфигурация тенанты Routing данные|Конфигурация тенанты Routing данные]] +- [[_COMMUNITY_Репозиторий время слоты Scope|Репозиторий время слоты Scope]] +- [[_COMMUNITY_DTO Create преподаватели создание|DTO Create преподаватели создание]] +- [[_COMMUNITY_Модель подгруппы|Модель подгруппы]] +- [[_COMMUNITY_Репозиторий Учебный календарь Day|Репозиторий Учебный календарь Day]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_кафедры кабинет|кафедры кабинет]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_Проектные навыки|Проектные навыки]] +- [[_COMMUNITY_Конфигурация конфигурация Updater|Конфигурация конфигурация Updater]] +- [[_COMMUNITY_Модель оборудование|Модель оборудование]] +- [[_COMMUNITY_DTO Create дисциплины|DTO Create дисциплины]] +- [[_COMMUNITY_Аудит рисков|Аудит рисков]] +- [[_COMMUNITY_UI COMPONENTS|UI COMPONENTS]] +- [[_COMMUNITY_Контроллер аудитории|Контроллер аудитории]] +- [[_COMMUNITY_Контроллер расписание правила Админ|Контроллер расписание правила Админ]] +- [[_COMMUNITY_Модель Education формы|Модель Education формы]] +- [[_COMMUNITY_аудитории нагрузка|аудитории нагрузка]] +- [[_COMMUNITY_вуз структура|вуз структура]] +- [[_COMMUNITY_Контроллер Учебный календарь Админ|Контроллер Учебный календарь Админ]] +- [[_COMMUNITY_DTO группы календарь Assignment|DTO группы календарь Assignment]] +- [[_COMMUNITY_DTO кафедры|DTO кафедры]] +- [[_COMMUNITY_Сервис Учебный Date|Сервис Учебный Date]] +- [[_COMMUNITY_Репозиторий Учебный календарь Activity|Репозиторий Учебный календарь Activity]] +- [[_COMMUNITY_DTO Speciality|DTO Speciality]] +- [[_COMMUNITY_Репозиторий расписание правила|Репозиторий расписание правила]] +- [[_COMMUNITY_Репозиторий время слоты|Репозиторий время слоты]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_script|script]] +- [[_COMMUNITY_Проектный регламент|Проектный регламент]] +- [[_COMMUNITY_Контроллер Учебный календарь|Контроллер Учебный календарь]] +- [[_COMMUNITY_DTO дисциплины|DTO дисциплины]] +- [[_COMMUNITY_DTO преподаватели дисциплины|DTO преподаватели дисциплины]] +- [[_COMMUNITY_Модель преподаватели дисциплины Id|Модель преподаватели дисциплины Id]] +- [[_COMMUNITY_Репозиторий Учебный календарь|Репозиторий Учебный календарь]] +- [[_COMMUNITY_dropdown|dropdown]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_FRONTEND|FRONTEND]] +- [[_COMMUNITY_CICD workflow|CI/CD workflow]] +- [[_COMMUNITY_DTO Create Speciality|DTO Create Speciality]] +- [[_COMMUNITY_DTO Login|DTO Login]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_Контроллер время слоты Админ|Контроллер время слоты Админ]] +- [[_COMMUNITY_тенанты конфигурация Watcher Test|тенанты конфигурация Watcher Test]] +- [[_COMMUNITY_Аудит рисков|Аудит рисков]] +- [[_COMMUNITY_время слоты|время слоты]] +- [[_COMMUNITY_script|script]] +- [[_COMMUNITY_Конфигурация App конфигурация|Конфигурация App конфигурация]] +- [[_COMMUNITY_нагрузка контроллер Test|нагрузка контроллер Test]] +- [[_COMMUNITY_Docker Compose|Docker Compose]] +- [[_COMMUNITY_дашборд|дашборд]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_Проектные навыки|Проектные навыки]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_index|index]] +- [[_COMMUNITY_Конфигурация refresh токены Rotation|Конфигурация refresh токены Rotation]] +- [[_COMMUNITY_Аудит рисков|Аудит рисков]] +- [[_COMMUNITY_otel|otel]] +- [[_COMMUNITY_Аудит рисков|Аудит рисков]] +- [[_COMMUNITY_DevOps инфраструктура|DevOps инфраструктура]] +- [[_COMMUNITY_pom|pom]] + +## God Nodes (most connected - your core abstractions) +1. `ScheduleRule` - 75 edges +2. `User` - 74 edges +3. `StudentGroup` - 72 edges +4. `RequireRoles` - 68 edges +5. `ScheduleRuleSlot` - 67 edges +6. `ScheduleRuleAdminController` - 59 edges +7. `ScheduleGeneratorService` - 51 edges +8. `TeacherCreationRequest` - 44 edges +9. `AcademicCalendar` - 43 edges +10. `Classroom` - 41 edges + +## Surprising Connections (you probably didn't know these) +- `Динамическое управление тенантами через ConfigMap` --semantically_similar_to--> `Tenants ConfigMap` [INFERRED] [semantically similar] + DEVOPS.md → docs/INFRASTRUCTURE.md +- `Паттерн database-per-tenant` --semantically_similar_to--> `Мультитенантная архитектура` [INFERRED] [semantically similar] + DEVOPS.md → docs/ARCHITECTURE.md +- `CI/CD через Gitea Actions` --semantically_similar_to--> `CI/CD Gitea Actions в инфраструктуре` [INFERRED] [semantically similar] + DEVOPS.md → docs/INFRASTRUCTURE.md +- `Наблюдаемость SigNoz и OpenTelemetry` --semantically_similar_to--> `OTLP экспорт в SigNoz` [INFERRED] [semantically similar] + DEVOPS.md → docs/LOGGING.md +- `Навык frontend-design` --semantically_similar_to--> `CSS-архитектура` [INFERRED] [semantically similar] + .agents/skills/frontend-design/SKILL.md → docs/FRONTEND.md + +## Import Cycles +- None detected. + +## Hyperedges (group relationships) +- **Документация динамического расписания** — docs_business_logic_dynamic_schedule_model, docs_api_dynamic_schedule_endpoints, docs_database_dynamic_schedule_tables, docs_academic_calendar_calendar_model, docs_frontend_schedule_views, docs_dynamic_schedule_implementation_dynamic_schedule_implementation, docs_schedule_proposal_dynamic_schedule_concept [INFERRED 0.85] +- **Паттерн мультитенантной инфраструктуры** — docs_architecture_multitenant_architecture, devops_database_per_tenant_pattern, docs_infrastructure_tenants_configmap, compose_db_service, docs_logging_tenant_mdc_context [INFERRED 0.85] +- **Политика ведения документации** — agents_project_regulation, _agents_skills_autoupdatedocs_autoupdatedocs_skill, docs_development_flyway_rules, docs_database_flyway_migrations [EXTRACTED 1.00] +- **Маршруты админской SPA** — frontend_admin_index_admin_spa_shell, frontend_admin_index_sidebar_navigation, frontend_admin_views_dashboard_dashboard_view, frontend_admin_views_teacher_requests_teacher_requests_admin_view, frontend_admin_views_department_workspace_department_workspace_view, frontend_admin_views_schedule_schedule_rule_constructor, frontend_admin_views_academic_calendar_academic_calendar_view, frontend_admin_views_auditorium_workload_workload_view, frontend_admin_views_schedule_view_schedule_view_shell, frontend_admin_views_classrooms_classroom_management, frontend_admin_views_groups_group_management, frontend_admin_views_university_structure_university_structure_view, frontend_admin_views_subjects_subject_management, frontend_admin_views_users_user_management [INFERRED 0.95] +- **Маршруты SPA настроек** — frontend_admin_settings_index_settings_spa_shell, frontend_admin_settings_index_settings_navigation, frontend_admin_settings_views_general_general_settings_placeholder, frontend_admin_settings_views_time_slots_time_slots_settings, frontend_admin_settings_views_edu_forms_education_forms_management, frontend_admin_settings_views_database_tenant_connection_management [INFERRED 0.95] +- **Рабочий контур генерации расписания** — docs_schedule_tasks_dynamic_schedule_tasks, docs_schedule_tasks_daily_academic_calendar_grid, docs_schedule_tasks_group_calendar_assignment, frontend_admin_views_academic_calendar_academic_calendar_view, frontend_admin_views_groups_group_management, frontend_admin_views_schedule_schedule_rule_constructor, frontend_admin_views_schedule_view_schedule_view_shell, frontend_admin_settings_views_time_slots_time_slots_settings [INFERRED 0.85] +- **Общий сценарий просмотра недельного расписания** — frontend_student_index_loadschedule, frontend_student_index_renderweek, frontend_teacher_index_loadschedule, frontend_teacher_index_renderweek, frontend_edu_office_index_admin_schedule_view_route [INFERRED 0.85] +- **Общий браузерный поток авторизации** — frontend_student_index_fetchjson, frontend_student_index_refreshaccesstoken, frontend_student_index_logout, frontend_teacher_index_fetchjson, frontend_teacher_index_refreshaccesstoken, frontend_teacher_index_logout [INFERRED 0.95] +- **Цепочка DevOps-доставки в резюме** — resume_index_kubernetes_k3s_delivery, resume_index_dynamic_tenants_configmap, resume_index_gitea_actions_cicd, resume_index_opentelemetry_signoz_observability, resume_index_database_per_tenant [EXTRACTED 1.00] + +## Communities (135 total, 8 thin omitted) + +### Community 0 - "Модель расписание override" +Cohesion: 0.05 +Nodes (35): DeleteMapping, Long, Map, PostMapping, ResponseEntity, String, DeleteMapping, GetMapping (+27 more) + +### Community 1 - "Сервис расписание Query" +Cohesion: 0.06 +Nodes (44): GetMapping, LocalDate, Logger, Long, RequestMapping, ResponseEntity, RestController, ScheduleController (+36 more) + +### Community 2 - "Модель преподаватели создание" +Cohesion: 0.06 +Nodes (27): BCryptPasswordEncoder, GetMapping, List, Long, PostMapping, RequestMapping, ResponseEntity, RestController (+19 more) + +### Community 3 - "Контроллер расписание правила Админ" +Cohesion: 0.08 +Nodes (18): Collection, Integer, LinkedHashSet, Long, Map, RequestMapping, RestController, Set (+10 more) + +### Community 4 - "Модель дисциплины комментарии" +Cohesion: 0.05 +Nodes (25): LocalDateTime, Long, String, SubjectCommentDto, Entity, Long, String, Table (+17 more) + +### Community 5 - "Модель Авторизация refresh токены" +Cohesion: 0.10 +Nodes (18): Optional, Service, String, Transactional, RefreshTokenService, AuthRefreshToken, Entity, LocalDateTime (+10 more) + +### Community 6 - "Модель расписание правила" +Cohesion: 0.07 +Nodes (14): GetMapping, List, Entity, Integer, JsonIgnore, LocalDate, Long, Set (+6 more) + +### Community 7 - "Контроллер преподаватели дисциплины" +Cohesion: 0.08 +Nodes (24): DeleteMapping, GetMapping, List, Long, Map, PostMapping, RequestMapping, ResponseEntity (+16 more) + +### Community 8 - "Контроллер подгруппы" +Cohesion: 0.09 +Nodes (25): DeleteMapping, GetMapping, Integer, List, Long, PostMapping, PutMapping, ResponseEntity (+17 more) + +### Community 9 - "расписание экран" +Cohesion: 0.07 +Nodes (31): initAuditoriumWorkload(), addDays(), buildCombinedWeekBlocks(), buildDatesByDay(), CELL_PARITY_LAYOUT, collectSlots(), compareSlots(), datesBetween() (+23 more) + +### Community 10 - "Модель пользователи" +Cohesion: 0.08 +Nodes (14): Role, Entity, Long, String, Table, User, List, Long (+6 more) + +### Community 11 - "Конфигурация Авторизация Interceptor" +Cohesion: 0.09 +Nodes (24): AuthorizationInterceptor, Component, Exception, HttpServletRequest, HttpServletResponse, Object, ObjectMapper, Override (+16 more) + +### Community 12 - "Контроллер пользователи" +Cohesion: 0.10 +Nodes (23): Long, BCryptPasswordEncoder, DeleteMapping, GetMapping, List, LocalDate, Logger, Long (+15 more) + +### Community 13 - "Сервис расписание Generator" +Cohesion: 0.15 +Nodes (18): fromLessonType(), getDisplayName(), String, ScheduleLessonCategory, ActiveLessonScope, Integer, List, LocalDate (+10 more) + +### Community 14 - "расписание" +Cohesion: 0.11 +Nodes (18): api, ESCAPE_MAP, escapeHtml(), hideAlert(), showAlert(), DAY_OPTIONS, initAcademicCalendar(), SEMESTER_LABELS (+10 more) + +### Community 15 - "Контроллер Учебный календарь Админ" +Cohesion: 0.13 +Nodes (18): AcademicCalendarAdminController, DeleteMapping, Long, PostMapping, PutMapping, RequestMapping, ResponseEntity, RestController (+10 more) + +### Community 16 - "Модель занятия Type" +Cohesion: 0.09 +Nodes (18): GetMapping, List, RequestMapping, RestController, LessonTypeController, Long, String, LessonTypeResponse (+10 more) + +### Community 17 - "Модель преподаватели кафедры Assignment" +Cohesion: 0.12 +Nodes (13): Entity, LocalDate, LocalDateTime, Long, String, Table, TeacherDepartmentAssignment, List (+5 more) + +### Community 18 - "Модель студенты группы" +Cohesion: 0.12 +Nodes (12): Entity, Integer, Long, String, Table, StudentGroup, GroupRepository, List (+4 more) + +### Community 19 - "Контроллер Учебный календарь" +Cohesion: 0.15 +Nodes (16): AcademicCalendarController, DeleteMapping, GetMapping, List, Long, PostMapping, PutMapping, RequestMapping (+8 more) + +### Community 20 - "Модель Учебный календарь дисциплины" +Cohesion: 0.11 +Nodes (14): AcademicCalendarSubjectDto, Integer, Long, String, AcademicCalendarSubject, Entity, Integer, Long (+6 more) + +### Community 21 - "Контроллер Speciality" +Cohesion: 0.15 +Nodes (14): DeleteMapping, GetMapping, List, Logger, Long, PutMapping, RequestMapping, ResponseEntity (+6 more) + +### Community 22 - "Контроллер кафедры кабинет" +Cohesion: 0.20 +Nodes (13): DepartmentWorkspaceController, GetMapping, List, LocalDate, Long, Map, Object, PostMapping (+5 more) + +### Community 23 - "Контроллер Авторизация" +Cohesion: 0.17 +Nodes (13): AuthController, BCryptPasswordEncoder, GetMapping, HttpServletRequest, Map, Object, Optional, PostMapping (+5 more) + +### Community 24 - "Модель кафедры" +Cohesion: 0.11 +Nodes (14): DepartmentController, GetMapping, List, Logger, RequestMapping, RestController, Department, Entity (+6 more) + +### Community 25 - "Контроллер группы" +Cohesion: 0.15 +Nodes (14): GroupController, DeleteMapping, GetMapping, List, Long, Map, PostMapping, PutMapping (+6 more) + +### Community 26 - "Контроллер аудитории" +Cohesion: 0.11 +Nodes (18): RequireRoles, ClassroomController, GetMapping, List, RequestMapping, RestController, EquipmentController, GetMapping (+10 more) + +### Community 27 - "Модель Lifecycle сущность" +Cohesion: 0.14 +Nodes (8): JsonIgnore, LocalDate, LocalDateTime, String, LifecycleEntity, Test, LifecycleEntityTest, MappedSuperclass + +### Community 28 - "кафедры кабинет контроллер Test" +Cohesion: 0.11 +Nodes (14): AuthContext, ThreadLocal, AuthenticatedUser, Long, String, Boolean, AuthControllerTest, AfterEach (+6 more) + +### Community 29 - "Контроллер Education формы" +Cohesion: 0.11 +Nodes (17): EducationFormController, DeleteMapping, GetMapping, List, Long, Map, Object, PostMapping (+9 more) + +### Community 30 - "DTO аудитории" +Cohesion: 0.15 +Nodes (7): ClassroomResponse, Boolean, Integer, List, LocalDateTime, Long, String + +### Community 31 - "DTO группы" +Cohesion: 0.14 +Nodes (6): GroupResponse, Boolean, Integer, JsonInclude, Long, String + +### Community 32 - "main" +Cohesion: 0.08 +Nodes (24): allowedTabs, appContent, AUTHORIZED_ROLES, btnLogout, btnSettings, currentRole, hashTab, main (+16 more) + +### Community 33 - "Модель специальности профили" +Cohesion: 0.12 +Nodes (10): Entity, Long, String, Table, SpecialtyProfile, List, Long, Optional (+2 more) + +### Community 34 - "Модель время слоты Scope" +Cohesion: 0.12 +Nodes (9): PostMapping, Boolean, Entity, Integer, Long, String, Table, TimeSlotScope (+1 more) + +### Community 35 - "Модель Semester" +Cohesion: 0.14 +Nodes (11): Entity, LocalDate, Long, Table, Semester, SemesterType, List, LocalDate (+3 more) + +### Community 36 - "Модель Speciality" +Cohesion: 0.14 +Nodes (11): PostMapping, Entity, Long, String, Table, Speciality, List, Long (+3 more) + +### Community 37 - "Модель аудитории" +Cohesion: 0.13 +Nodes (8): Classroom, Boolean, Entity, Integer, Long, Set, String, Table + +### Community 38 - "Сервис студенты группы Lifecycle" +Cohesion: 0.18 +Nodes (11): getLabel(), String, StudentGroupStudyState, Integer, LocalDate, Optional, Service, StudentGroupLifecycleService (+3 more) + +### Community 39 - "JWT токены сервис Test" +Cohesion: 0.18 +Nodes (12): Long, Object, Optional, Service, String, JwtTokenService, Duration, String (+4 more) + +### Community 40 - "Модель Учебный календарь Activity" +Cohesion: 0.15 +Nodes (7): AcademicCalendarActivityType, Boolean, Entity, Integer, Long, String, Table + +### Community 41 - "Контроллер время слоты Админ" +Cohesion: 0.18 +Nodes (13): DeleteMapping, Long, PutMapping, RequestMapping, ResponseEntity, RestController, String, TimeSlotAdminController (+5 more) + +### Community 42 - "Модель время слоты Date" +Cohesion: 0.15 +Nodes (10): Entity, LocalDate, Long, Table, TimeSlotDateAssignment, List, LocalDate, Long (+2 more) + +### Community 43 - "Модель Учебный Year" +Cohesion: 0.13 +Nodes (8): AcademicYear, Entity, LocalDate, Long, String, Table, Optional, String + +### Community 44 - "Модель студенты группы календарь" +Cohesion: 0.15 +Nodes (9): Entity, Long, Table, StudentGroupCalendarAssignment, List, Long, Optional, Query (+1 more) + +### Community 45 - "DTO Create кафедры" +Cohesion: 0.14 +Nodes (10): DeleteMapping, Long, PostMapping, PutMapping, ResponseEntity, CreateDepartmentRequest, Long, String (+2 more) + +### Community 46 - "DTO Create группы" +Cohesion: 0.16 +Nodes (4): CreateGroupRequest, Integer, Long, String + +### Community 47 - "Конфигурация тенанты конфигурация" +Cohesion: 0.21 +Nodes (5): String, TenantConfig, List, HikariDataSource, JsonIgnoreProperties + +### Community 48 - "Контроллер Global Exception Handler" +Cohesion: 0.28 +Nodes (13): List, GlobalExceptionHandler, Exception, HttpServletRequest, Logger, Map, Object, ResponseEntity (+5 more) + +### Community 49 - "Модель Учебный календарь Day" +Cohesion: 0.17 +Nodes (6): AcademicCalendarDay, Entity, Integer, LocalDate, Long, Table + +### Community 50 - "Контроллер расписание правила Админ" +Cohesion: 0.18 +Nodes (11): DeleteMapping, PostMapping, PutMapping, ResponseEntity, Transactional, ScheduleRuleConflict, Integer, List (+3 more) + +### Community 51 - "Контроллер БД" +Cohesion: 0.26 +Nodes (11): DatabaseController, DeleteMapping, GetMapping, List, Map, Object, PostMapping, RequestMapping (+3 more) + +### Community 52 - "Модель время слоты" +Cohesion: 0.22 +Nodes (6): Entity, Integer, LocalTime, Long, Table, TimeSlot + +### Community 53 - "DTO аудитории" +Cohesion: 0.19 +Nodes (6): ClassroomRequest, Boolean, Integer, List, Long, String + +### Community 54 - "Конфигурация тенанты конфигурация Watcher" +Cohesion: 0.20 +Nodes (11): DataInitializer, Component, Logger, Component, DataSource, Logger, ObjectMapper, String (+3 more) + +### Community 55 - "DTO Login" +Cohesion: 0.20 +Nodes (3): Long, String, LoginResponse + +### Community 56 - "main" +Cohesion: 0.13 +Nodes (15): initAllCustomDropdowns(), startDropdownAutoObserver(), allowedTabs, appContent, main, menuToggle, navItems, pageTitle (+7 more) + +### Community 57 - "DTO пользователи" +Cohesion: 0.21 +Nodes (4): JsonInclude, Long, String, UserResponse + +### Community 58 - "Утилиты Course And Semester" +Cohesion: 0.23 +Nodes (7): CourseAndSemesterCalculator, Integer, LocalDate, Service, String, CourseAndSemesterCalculatorTest, Test + +### Community 59 - "DTO Create пользователи" +Cohesion: 0.21 +Nodes (3): CreateUserRequest, Long, String + +### Community 60 - "SCHEDULE TASKS" +Cohesion: 0.14 +Nodes (17): AcademicDateService, Коды активностей Excel-графика, Дневная сетка учебного календаря, Задачи динамического расписания, Назначение календаря группе, Подгруппы лабораторных слотов, Проверка конфликтов правил расписания, GET /api/schedule (+9 more) + +### Community 61 - "Конфигурация JWT Properties" +Cohesion: 0.22 +Nodes (5): Component, Duration, String, JwtProperties, ConfigurationProperties + +### Community 62 - "Контроллер дисциплины" +Cohesion: 0.18 +Nodes (10): DeleteMapping, GetMapping, List, Logger, Long, PostMapping, RequestMapping, ResponseEntity (+2 more) + +### Community 63 - "Контроллер время слоты Админ" +Cohesion: 0.19 +Nodes (8): GetMapping, List, LocalDate, Boolean, Integer, Long, String, TimeSlotScopeDto + +### Community 64 - "DTO Review преподаватели создание" +Cohesion: 0.23 +Nodes (3): Long, String, ReviewTeacherCreationRequest + +### Community 65 - "Модель Учебный календарь" +Cohesion: 0.17 +Nodes (6): AcademicCalendar, Entity, Integer, Long, String, Table + +### Community 66 - "API" +Cohesion: 0.20 +Nodes (13): apiFetch(), AUTH_KEYS, CACHABLE_PREFIXES, cache, clearAuthState(), clearCache(), getHeaders(), getToken() (+5 more) + +### Community 67 - "Конфигурация тенанты Context" +Cohesion: 0.17 +Nodes (8): Application, String, Override, String, ThreadLocal, TenantContext, EnableScheduling, SpringBootApplication + +### Community 68 - "Конфигурация тенанты данные источник" +Cohesion: 0.28 +Nodes (10): Bean, Configuration, DataSource, Logger, String, TenantDataSourceConfig, EntityManagerFactory, LocalContainerEntityManagerFactoryBean (+2 more) + +### Community 69 - "DevOps инфраструктура" +Cohesion: 0.14 +Nodes (15): Риск latest-тега OpenTelemetry, Ansible-хосты баз данных, Caddy proxy, Паттерн database-per-tenant, Обоснование изоляции данных по ФЗ-152, K3s-кластер, ВМ баз данных в Proxmox, Отказоустойчивая мультитенантная инфраструктура (+7 more) + +### Community 70 - "ACADEMIC CALENDAR" +Cohesion: 0.15 +Nodes (15): Риск пересечения границ семестров, Коды активностей учебного календаря, Модель учебного календаря, Фильтр генерации расписания по календарю, API назначения календаря группе, Эндпоинты правил расписания, Модель динамического расписания, Валидация расписания (+7 more) + +### Community 71 - "кафедры кабинет" +Cohesion: 0.19 +Nodes (9): fillSelect(), initDepartmentWorkspace(), loadDepartments(), normalizeTeacherName(), renderTeacherMetric(), setDefaultDates(), toIsoDate(), workloadKeys() (+1 more) + +### Community 72 - "Конфигурация тенанты Routing данные" +Cohesion: 0.23 +Nodes (7): AbstractRoutingDataSource, Logger, Map, Object, Override, String, TenantRoutingDataSource + +### Community 73 - "Репозиторий время слоты Scope" +Cohesion: 0.21 +Nodes (6): Integer, List, Long, Optional, String, TimeSlotScopeRepository + +### Community 74 - "DTO Create преподаватели создание" +Cohesion: 0.25 +Nodes (3): CreateTeacherCreationRequest, Long, String + +### Community 75 - "Модель подгруппы" +Cohesion: 0.19 +Nodes (5): Entity, Long, String, Table, Subgroup + +### Community 76 - "Репозиторий Учебный календарь Day" +Cohesion: 0.26 +Nodes (8): AcademicCalendarDayRepository, Integer, List, LocalDate, Long, Optional, Query, Modifying + +### Community 77 - "index" +Cohesion: 0.15 +Nodes (14): Оболочка админ-панели, Меню настроек и выхода, Индикатор заявок преподавателей, Возврат в админ-панель, Навигация настроек, Оболочка SPA настроек, Управление подключениями тенантов, Таблица подключенных университетов (+6 more) + +### Community 78 - "кафедры кабинет" +Cohesion: 0.20 +Nodes (14): Навигация админ-панели, Фильтры загруженности, Просмотр загруженности, Управление аудиторным фондом, Справочник оборудования, Комментарии кафедры по дисциплинам, Рабочая область кафедры, Привязка преподавателя к кафедре (+6 more) + +### Community 79 - "index" +Cohesion: 0.15 +Nodes (14): Маршрут /admin/#schedule-view, Редирект учебного отдела, GET /api/schedule по groupId, GET /api/schedule по teacherId, Ansible и безопасный провижининг, Отказоустойчивость старта backend, Database-per-Tenant, Принципы DevSecOps (+6 more) + +### Community 80 - "Проектные навыки" +Cohesion: 0.26 +Nodes (13): SKILL.md AutoUpdateDocs, Навык AutoUpdateDocs, Карта файлов к документации, Индекс проектной документации, REST API, Права ролей API, Архитектура системы, Архивация жизненного цикла (+5 more) + +### Community 81 - "Конфигурация конфигурация Updater" +Cohesion: 0.24 +Nodes (8): ConfigMapUpdater, List, Logger, ObjectMapper, Service, String, HttpClient, SecureRandom + +### Community 82 - "Модель оборудование" +Cohesion: 0.23 +Nodes (5): Equipment, Entity, Long, String, Table + +### Community 83 - "DTO Create дисциплины" +Cohesion: 0.28 +Nodes (3): CreateSubjectRequest, Long, String + +### Community 84 - "Аудит рисков" +Cohesion: 0.19 +Nodes (13): Небезопасные production-defaults JWT, Риск Kubernetes TLS trust-all, Аудит рисков проекта, Пробел проверки конфликтов override расписания, Пробел обновления watcher конфигурации тенантов, Риск замены DataSource тенанта, Динамическое управление тенантами через ConfigMap, Эндпоинты override расписания (+5 more) + +### Community 85 - "UI COMPONENTS" +Cohesion: 0.17 +Nodes (13): Ограничения стилизации option, checkbox-item и checkmark, Обертка кастомного select, CustomSelect, Автоматическая синхронизация option, frontend/admin/js/dropdown.js, Глобальный MutationObserver для select, Multi-select с чекбоксами (+5 more) + +### Community 86 - "Контроллер аудитории" +Cohesion: 0.26 +Nodes (6): DeleteMapping, Long, PostMapping, PutMapping, ResponseEntity, String + +### Community 87 - "Контроллер расписание правила Админ" +Cohesion: 0.20 +Nodes (6): Integer, List, Long, String, ScheduleRuleSlotDto, ScheduleParity + +### Community 88 - "Модель Education формы" +Cohesion: 0.23 +Nodes (5): EducationForm, Entity, Long, String, Table + +### Community 89 - "аудитории нагрузка" +Cohesion: 0.20 +Nodes (9): initMultiSelect(), updateSelectText(), CELL_PARITY_LAYOUT, DAY_FULL_LABELS, DAY_ORDER, DAY_SHORT_LABELS, WORKLOAD_TARGETS, initClassrooms() (+1 more) + +### Community 90 - "вуз структура" +Cohesion: 0.29 +Nodes (12): Календарный учебный график, Управление учебными годами, Привязки дисциплин графика, Загрузка дисциплин кафедры, Назначение календарного графика группе, Управление группами обучения, Фильтры просмотра расписаний, Управление дисциплинами (+4 more) + +### Community 91 - "Контроллер Учебный календарь Админ" +Cohesion: 0.22 +Nodes (7): GetMapping, List, AcademicCalendarActivityTypeDto, Boolean, Integer, Long, String + +### Community 92 - "DTO группы календарь Assignment" +Cohesion: 0.20 +Nodes (5): Logger, GroupCalendarAssignmentDto, List, Long, String + +### Community 93 - "DTO кафедры" +Cohesion: 0.33 +Nodes (3): DepartmentResponse, Long, String + +### Community 94 - "Сервис Учебный Date" +Cohesion: 0.36 +Nodes (4): AcademicDateService, LocalDate, Optional, Service + +### Community 95 - "Репозиторий Учебный календарь Activity" +Cohesion: 0.24 +Nodes (5): AcademicCalendarActivityTypeRepository, List, Long, Optional, String + +### Community 96 - "DTO Speciality" +Cohesion: 0.38 +Nodes (3): Long, String, SpecialityResponse + +### Community 97 - "Репозиторий расписание правила" +Cohesion: 0.42 +Nodes (5): List, Long, Optional, Query, ScheduleRuleRepository + +### Community 98 - "Репозиторий время слоты" +Cohesion: 0.33 +Nodes (5): Integer, List, Long, Optional, TimeSlotRepository + +### Community 99 - "index" +Cohesion: 0.24 +Nodes (10): POST /api/auth/logout, POST /api/auth/refresh, GET /api/groups, clearAuthState, fetchJson, loadGroups, logout, refreshAccessToken (+2 more) + +### Community 100 - "script" +Cohesion: 0.22 +Nodes (3): escapeHtml(), formatRunbookText(), incidentRunbooks + +### Community 101 - "Проектный регламент" +Cohesion: 0.22 +Nodes (9): Правило неизменяемости Flyway-миграций, Система университетского расписания Магистр, Проектный регламент AGENTS.md, Правило русского языка, Flyway-миграции, Code style, Руководство разработчика, Правила Flyway в разработке (+1 more) + +### Community 102 - "Контроллер Учебный календарь" +Cohesion: 0.25 +Nodes (6): AcademicCalendarGridDayDto, Boolean, Integer, LocalDate, Long, String + +### Community 103 - "DTO дисциплины" +Cohesion: 0.39 +Nodes (3): Long, String, SubjectResponse + +### Community 104 - "DTO преподаватели дисциплины" +Cohesion: 0.39 +Nodes (3): Long, String, TeacherSubjectResponse + +### Community 105 - "Модель преподаватели дисциплины Id" +Cohesion: 0.39 +Nodes (3): Long, TeacherSubjectId, Serializable + +### Community 106 - "Репозиторий Учебный календарь" +Cohesion: 0.42 +Nodes (5): AcademicCalendarRepository, List, Long, Optional, Query + +### Community 108 - "index" +Cohesion: 0.28 +Nodes (9): Выбор группы студента, Сетка расписания студента, Страница расписания студента, Недельная навигация студента, Адаптивная раскладка расписания преподавателя, Сетка расписания преподавателя, Идентификатор преподавателя из userId, Страница расписания преподавателя (+1 more) + +### Community 109 - "FRONTEND" +Cohesion: 0.25 +Nodes (8): Карта документации настроек фронтенда, Риск XSS через innerHTML ошибок, Пробел видимости override для преподавателей, Эндпоинты динамического расписания, Роутинг admin SPA, Frontend-архитектура, Frontend-представления расписания, SPA настроек администратора + +### Community 110 - "CI/CD workflow" +Cohesion: 0.29 +Nodes (8): Pipeline backend-образа, Workflow сборки и публикации Docker-образов, Job деплоя в Kubernetes, Pipeline frontend-образа, Secret KUBECONFIG_DATA, Secret ZUEV_TOKEN, CI/CD через Gitea Actions, CI/CD Gitea Actions в инфраструктуре + +### Community 113 - "index" +Cohesion: 0.32 +Nodes (8): POST /api/auth/logout, POST /api/auth/refresh, clearAuthState, fetchJson, logout, refreshAccessToken, storeAuthState, Состояние авторизации преподавателя + +### Community 114 - "index" +Cohesion: 0.36 +Nodes (8): collectSlots, loadSchedule, renderCell, renderEmptyWeek, renderHead, renderLesson, renderMobileWeek, renderWeek + +### Community 115 - "Контроллер время слоты Админ" +Cohesion: 0.38 +Nodes (4): LocalDate, Long, String, TimeSlotDateAssignmentDto + +### Community 116 - "тенанты конфигурация Watcher Test" +Cohesion: 0.38 +Nodes (3): Override, Test, TenantConfigWatcherTest + +### Community 117 - "Аудит рисков" +Cohesion: 0.33 +Nodes (7): Утечка ThreadLocal AuthContext, Риск access token в localStorage, Гонка ротации refresh-токенов, Эндпоинты аутентификации, Архитектура аутентификации, Таблица refresh-токенов, Refresh-flow API-клиента + +### Community 118 - "время слоты" +Cohesion: 0.38 +Nodes (5): APPLY_MODE_LABELS, DAY_SHORT_LABELS, dayShort(), scopeBadgeLabel(), scopeOptionLabel() + +### Community 119 - "script" +Cohesion: 0.38 +Nodes (3): hideAlert(), setFieldError(), validate() + +### Community 120 - "Конфигурация App конфигурация" +Cohesion: 0.53 +Nodes (4): AppConfig, BCryptPasswordEncoder, Bean, Configuration + +### Community 121 - "нагрузка контроллер Test" +Cohesion: 0.40 +Nodes (4): Boolean, Long, Test, WorkloadControllerTest + +### Community 122 - "Docker Compose" +Cohesion: 0.60 +Nodes (6): Backend-сервис Docker Compose, PostgreSQL-сервис Docker Compose, Frontend-сервис Docker Compose, Обязательная переменная POSTGRES_PASSWORD, Внешняя proxy-сеть Docker, Docker Compose инфраструктура + +### Community 123 - "дашборд" +Cohesion: 0.33 +Nodes (6): Центр предупреждений Red Zone, Дашборд администратора, Быстрый переход дашборда, Мониторинг текущих пар, Результаты просмотра расписаний, Просмотр расписаний + +### Community 124 - "index" +Cohesion: 0.40 +Nodes (5): loadSchedule, renderDay, renderEmptyWeek, renderLesson, renderWeek + +### Community 125 - "Проектные навыки" +Cohesion: 0.50 +Nodes (4): Дизайн-мышление интерфейса, Навык frontend-design, Правило против AI-эстетики, CSS-архитектура + +### Community 126 - "index" +Cohesion: 0.50 +Nodes (4): Форма входа, Страница авторизации, script.js страницы входа, theme-toggle.js на странице входа + +### Community 127 - "index" +Cohesion: 0.50 +Nodes (4): Резюме DevOps-инженера, Homelab как инженерная практика, Junior DevOps / Infrastructure Engineer, Зуев Егор Алексеевич + +### Community 129 - "Аудит рисков" +Cohesion: 0.67 +Nodes (3): Риск владения дисциплинами при импорте кафедры, Эндпоинты кабинета кафедры, Привязки преподавателей к кафедрам + +## Knowledge Gaps +- **135 isolated node(s):** `com.magistr:app`, `AUTH_KEYS`, `cache`, `CACHABLE_PREFIXES`, `AUTHORIZED_ROLES` (+130 more) + These have ≤1 connection - possible missing edges or undocumented components. +- **8 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `RequireRoles` connect `Контроллер аудитории` to `Модель расписание override`, `Сервис расписание Query`, `Модель преподаватели создание`, `Контроллер расписание правила Админ`, `Контроллер преподаватели дисциплины`, `Контроллер подгруппы`, `Конфигурация Авторизация Interceptor`, `Контроллер пользователи`, `Контроллер Учебный календарь Админ`, `Модель занятия Type`, `Модель преподаватели кафедры Assignment`, `Контроллер Учебный календарь`, `Контроллер Speciality`, `Контроллер кафедры кабинет`, `Модель кафедры`, `Контроллер группы`, `Контроллер Education формы`, `Контроллер время слоты Админ`, `Контроллер расписание правила Админ`, `Контроллер БД`, `Контроллер дисциплины`, `Контроллер время слоты Админ`, `DTO группы календарь Assignment`?** + _High betweenness centrality (0.167) - this node is a cross-community bridge._ +- **Why does `initDepartmentWorkspace()` connect `кафедры кабинет` to `Контроллер кафедры кабинет`, `расписание`?** + _High betweenness centrality (0.086) - this node is a cross-community bridge._ +- **Why does `LifecycleEntity` connect `Модель Lifecycle сущность` to `Модель специальности профили`, `Модель Speciality`, `Модель аудитории`, `Модель дисциплины комментарии`, `Контроллер преподаватели дисциплины`, `Модель пользователи`, `Модель подгруппы`, `Контроллер пользователи`, `Модель оборудование`, `Модель студенты группы`, `Контроллер Speciality`, `Модель кафедры`, `Контроллер аудитории`, `Модель Education формы`?** + _High betweenness centrality (0.055) - this node is a cross-community bridge._ +- **Are the 2 inferred relationships involving `ScheduleRule` (e.g. with `.activeOnUsesStatusAndValidityRange()` and `.archiveAndRestoreToggleStatus()`) actually correct?** + _`ScheduleRule` has 2 INFERRED edges - model-reasoned connections that need verification._ +- **What connects `com.magistr:app`, `AUTH_KEYS`, `cache` to the rest of the system?** + _139 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Should `Модель расписание override` be split into smaller, more focused modules?** + _Cohesion score 0.05189189189189189 - nodes in this community are weakly interconnected._ +- **Should `Сервис расписание Query` be split into smaller, more focused modules?** + _Cohesion score 0.0649452269170579 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/00e8de11bc0c6cd3b111cc5d23a2ab9d45f5ce85f3958e959fd0d7a6434042b8.json b/graphify-out/cache/ast/v0.9.5/00e8de11bc0c6cd3b111cc5d23a2ab9d45f5ce85f3958e959fd0d7a6434042b8.json new file mode 100644 index 0000000..821d78b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/00e8de11bc0c6cd3b111cc5d23a2ab9d45f5ce85f3958e959fd0d7a6434042b8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java", "label": "LifecycleEntityTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", "label": "LifecycleEntityTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L9", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "label": ".archivedEntityIsNotActiveOnDateWithoutActiveTo()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L11", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "label": ".archivedEntityRemainsActiveForHistoricalDatesBeforeActiveTo()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "label": ".activeEntityUsesDateRange()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L29", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L11", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L29", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "callee": "Subject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L13", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L14", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "Subject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L21", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L22", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "setActiveTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L23", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L23", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "isTrue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "Subject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "setActiveFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "setActiveTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "isTrue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "isTrue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", "source_location": "L38", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/01d9ac60353eab5b8fd4841f4d6d5f3f82770e794b6ae283c577580dcc10c6aa.json b/graphify-out/cache/ast/v0.9.5/01d9ac60353eab5b8fd4841f4d6d5f3f82770e794b6ae283c577580dcc10c6aa.json new file mode 100644 index 0000000..f48adca --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/01d9ac60353eab5b8fd4841f4d6d5f3f82770e794b6ae283c577580dcc10c6aa.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java", "label": "ScheduleOverrideDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "label": "ScheduleOverrideDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L6", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", "source_location": "L17", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/03c20273155d83fcba886eee79a8f27e08517e30f5d342d352c408a0ea0e0a6e.json b/graphify-out/cache/ast/v0.9.5/03c20273155d83fcba886eee79a8f27e08517e30f5d342d352c408a0ea0e0a6e.json new file mode 100644 index 0000000..8d22cb7 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/03c20273155d83fcba886eee79a8f27e08517e30f5d342d352c408a0ea0e0a6e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "label": "WorkloadController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "label": "WorkloadController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L21", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "schedulequeryservice", "label": "ScheduleQueryService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "classroomrepository", "label": "ClassroomRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "departmentrepository", "label": "DepartmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", "label": ".WorkloadController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L33", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "label": ".teacherWorkload()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L43", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "workloadsummarydto", "label": "WorkloadSummaryDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "label": ".classroomWorkload()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L64", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "label": ".departmentWorkload()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L75", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "label": ".timeSlotWorkload()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L104", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "label": ".freeClassrooms()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L119", "_callable": true}, {"id": "classroomresponse", "label": "ClassroomResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "label": ".summarize()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "_callable": true}, {"id": "renderedlessondto", "label": "RenderedLessonDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "function", "label": "Function", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "label": ".summary()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L150", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", "label": ".departmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L165", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "label": ".toClassroomResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L174", "_callable": true}, {"id": "classroom", "label": "Classroom", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "classroomresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "renderedlessondto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "workloadsummarydto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "classroomrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "departmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "schedulequeryservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "datetimeformat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "function", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "collectors", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L21", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L21", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L21", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "schedulequeryservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "classroomrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", "target": "schedulequeryservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L33", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", "target": "classroomrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L33", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L33", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L33", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "target": "workloadsummarydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L43", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L43", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L64", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L64", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L64", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L64", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L64", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "target": "workloadsummarydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L64", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L64", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L75", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L75", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L75", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L75", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "target": "workloadsummarydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L75", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L75", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L104", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L104", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L104", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L104", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L104", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "target": "workloadsummarydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L104", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L104", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L119", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L119", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L119", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L119", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "target": "classroomresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L119", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L119", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "function", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "function", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "function", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "workloadsummarydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L137", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L150", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L150", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L150", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L150", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L150", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L150", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "target": "workloadsummarydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L150", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L165", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L165", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L165", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L174", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L174", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "target": "classroomresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L174", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L72", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L99", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L112", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L145", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "target": "workloadsummarydto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L151", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L155", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "target": "classroomresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L175", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "findAllById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "toSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "toMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "identity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "toMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "findAllById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "toSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "toMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "identity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "groupingBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "teacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "entrySet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "getKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "getOrDefault", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "getKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "getKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", "callee": "nullsLast", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "callee": "timeSlotOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "callee": "timeSlotOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "callee": "startTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", "callee": "endTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "toSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "findByStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "apply", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "groupingBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L144", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L144", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "entrySet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L144", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "getKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "apply", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "apply", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "getKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", "callee": "nullsLast", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "callee": "count", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "callee": "distinct", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", "callee": "timeSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getBuilding", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getFloor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L182", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getArchivedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getArchiveReason", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", "callee": "getEquipments", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java", "source_location": "L185", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/03eed484ebe217e695a18c94b18cb274b71aed05d9b8343d7b7c7ac4964a4e32.json b/graphify-out/cache/ast/v0.9.5/03eed484ebe217e695a18c94b18cb274b71aed05d9b8343d7b7c7ac4964a4e32.json new file mode 100644 index 0000000..9635c36 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/03eed484ebe217e695a18c94b18cb274b71aed05d9b8343d7b7c7ac4964a4e32.json @@ -0,0 +1 @@ +{"nodes": [], "edges": [], "skipped": "data json (non-object root)"} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/057e3514c526f4cc6af4e30da4f8cd32f7f4ba09e25701c0780fff0aa3e66dee.json b/graphify-out/cache/ast/v0.9.5/057e3514c526f4cc6af4e30da4f8cd32f7f4ba09e25701c0780fff0aa3e66dee.json new file mode 100644 index 0000000..7a9c447 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/057e3514c526f4cc6af4e30da4f8cd32f7f4ba09e25701c0780fff0aa3e66dee.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_java", "label": "SemesterRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", "label": "SemesterRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L11", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "semester", "label": "Semester", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", "label": ".findFirstByStartDateLessThanEqualAndEndDateGreaterThanEqual()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L13", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", "label": ".findByAcademicYearIdOrderByStartDateAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L15", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", "label": ".findByAcademicYearIdAndSemesterType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L17", "_callable": true}, {"id": "semestertype", "label": "SemesterType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_java", "target": "semester", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_java", "target": "semestertype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L15", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L17", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", "target": "semestertype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L17", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L17", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "source_location": "L17", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/05c172c1c7f7a58a811a50375a1da580f2e0e51bf769258918ad51a75196a2de.json b/graphify-out/cache/ast/v0.9.5/05c172c1c7f7a58a811a50375a1da580f2e0e51bf769258918ad51a75196a2de.json new file mode 100644 index 0000000..fd8ec20 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/05c172c1c7f7a58a811a50375a1da580f2e0e51bf769258918ad51a75196a2de.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_java", "label": "ScheduleRuleDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "label": "ScheduleRuleDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L7", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java"}, {"id": "semestertype", "label": "SemesterType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java"}, {"id": "scheduleruleslotdto", "label": "ScheduleRuleSlotDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_java", "target": "semestertype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "semestertype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L20", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L21", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", "target": "scheduleruleslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", "source_location": "L22", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/089c0f116ce32c7ce28586290192c4efd630fdf3421a9b9ed5140bb1f61ea811.json b/graphify-out/cache/ast/v0.9.5/089c0f116ce32c7ce28586290192c4efd630fdf3421a9b9ed5140bb1f61ea811.json new file mode 100644 index 0000000..68d21e5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/089c0f116ce32c7ce28586290192c4efd630fdf3421a9b9ed5140bb1f61ea811.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java", "label": "TeacherCreationRequestResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "label": "TeacherCreationRequestResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", "source_location": "L19", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/0cfd571b6f249e418ca9ec9a180954648216c4ef31dffab9c2e5988619859290.json b/graphify-out/cache/ast/v0.9.5/0cfd571b6f249e418ca9ec9a180954648216c4ef31dffab9c2e5988619859290.json new file mode 100644 index 0000000..5734a0a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/0cfd571b6f249e418ca9ec9a180954648216c4ef31dffab9c2e5988619859290.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "label": "ScheduleQueryServiceTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", "label": "ScheduleQueryServiceTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "label": ".rejectsTooBroadGroupSearch()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L21", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "label": ".teacherSearchDoesNotLoadAllGroups()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L45", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", "label": ".group()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L71", "_callable": true}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "studentgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "grouprepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "scheduleoverriderepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "intstream", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "assertthatthrownby", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "any", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "mock", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "never", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "verify", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "when", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L21", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L45", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L71", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", "target": "studentgroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L72", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L23", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "mapToObj", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "rangeClosed", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "mayHaveScheduleInRange", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "ScheduleQueryService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "hasMessageContaining", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "isInstanceOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "assertThatThrownBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "ScheduleQueryService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "buildScheduleForTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "findByLessonDateBetweenWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "buildScheduleForTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "verify", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "verify", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", "callee": "never", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", "callee": "setId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", "source_location": "L74", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/0d9b338dacf75f1f6f0621354368a65d25b11663116210f41def5f50fb68de61.json b/graphify-out/cache/ast/v0.9.5/0d9b338dacf75f1f6f0621354368a65d25b11663116210f41def5f50fb68de61.json new file mode 100644 index 0000000..84ea440 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/0d9b338dacf75f1f6f0621354368a65d25b11663116210f41def5f50fb68de61.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_java", "label": "Application.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application", "label": "Application", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L9", "_callable": true}, {"id": "springbootapplication", "label": "SpringBootApplication", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/Application.java"}, {"id": "enablescheduling", "label": "EnableScheduling", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/Application.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application_main", "label": ".main()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L13", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/Application.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_java", "target": "springapplication", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_java", "target": "springbootapplication", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_java", "target": "flywayautoconfiguration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_java", "target": "datasourceautoconfiguration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_java", "target": "enablescheduling", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application", "target": "springbootapplication", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L9", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application", "target": "enablescheduling", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L9", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application_main", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application_main", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/Application.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_application_application_main", "callee": "run", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/Application.java", "source_location": "L14", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/0db665d6c6eca4782e69677b82d3d9f86742c0ffadb2de77c20fb30e3890917a.json b/graphify-out/cache/ast/v0.9.5/0db665d6c6eca4782e69677b82d3d9f86742c0ffadb2de77c20fb30e3890917a.json new file mode 100644 index 0000000..1f23762 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/0db665d6c6eca4782e69677b82d3d9f86742c0ffadb2de77c20fb30e3890917a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_java", "label": "AuthContext.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "label": "AuthContext", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L3", "_callable": true}, {"id": "threadlocal", "label": "ThreadLocal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthContext.java"}, {"id": "authenticateduser", "label": "AuthenticatedUser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthContext.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_authcontext", "label": ".AuthContext()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L7", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser", "label": ".setCurrentUser()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L10", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", "label": ".getCurrentUser()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L14", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid", "label": ".currentUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L18", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthContext.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_clear", "label": ".clear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L23", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "target": "threadlocal", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "target": "authenticateduser", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L5", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_authcontext", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser", "target": "authenticateduser", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", "target": "authenticateduser", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L14", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L18", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_clear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_clear", "callee": "remove", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", "source_location": "L24", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/0e999bd59b5d250c0bece30dd206e01cf20a5c0fe1b542d1038bf25507d8ab47.json b/graphify-out/cache/ast/v0.9.5/0e999bd59b5d250c0bece30dd206e01cf20a5c0fe1b542d1038bf25507d8ab47.json new file mode 100644 index 0000000..f24c29f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/0e999bd59b5d250c0bece30dd206e01cf20a5c0fe1b542d1038bf25507d8ab47.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_java", "label": "TimeSlotDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "label": "TimeSlotDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java"}, {"id": "localtime", "label": "LocalTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_java", "target": "localtime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", "source_location": "L14", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/0f5869ba55b9d0d5682a54a772394cc3de7a17898f37c7895cee16da9f89d5c5.json b/graphify-out/cache/ast/v0.9.5/0f5869ba55b9d0d5682a54a772394cc3de7a17898f37c7895cee16da9f89d5c5.json new file mode 100644 index 0000000..bd142fa --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/0f5869ba55b9d0d5682a54a772394cc3de7a17898f37c7895cee16da9f89d5c5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java", "label": "TeacherDepartmentAssignmentDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "label": "TeacherDepartmentAssignmentDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", "source_location": "L14", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/0f9efff6e0ade4f428d2c284060bb222a85dec4ba2d35a3ede28b3faab91de4f.json b/graphify-out/cache/ast/v0.9.5/0f9efff6e0ade4f428d2c284060bb222a85dec4ba2d35a3ede28b3faab91de4f.json new file mode 100644 index 0000000..adce09e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/0f9efff6e0ade4f428d2c284060bb222a85dec4ba2d35a3ede28b3faab91de4f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java", "label": "AcademicCalendarActivityType.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "label": "AcademicCalendarActivityType", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L5", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcode", "label": ".getCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcode", "label": ".setCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getallowschedule", "label": ".getAllowSchedule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setallowschedule", "label": ".setAllowSchedule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcolorcode", "label": ".getColorCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcolorcode", "label": ".setColorCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdisplayorder", "label": ".getDisplayOrder()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdisplayorder", "label": ".setDisplayOrder()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L75", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L79", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdescription", "label": ".setDescription()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L83", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L39", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getallowschedule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getallowschedule", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L55", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setallowschedule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setallowschedule", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcolorcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcolorcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L63", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcolorcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcolorcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdisplayorder", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdisplayorder", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L71", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdisplayorder", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdisplayorder", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L75", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdescription", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L79", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdescription", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", "source_location": "L83", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/10ada20b4ba0b32024067451f1e4062ea4033d4a9308d84796cb08756b5aea50.json b/graphify-out/cache/ast/v0.9.5/10ada20b4ba0b32024067451f1e4062ea4033d4a9308d84796cb08756b5aea50.json new file mode 100644 index 0000000..67140b2 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/10ada20b4ba0b32024067451f1e4062ea4033d4a9308d84796cb08756b5aea50.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "label": "RefreshTokenService.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "label": "RefreshTokenService", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L18", "_callable": true}, {"id": "service", "label": "Service", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "securerandom", "label": "SecureRandom", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "authrefreshtokenrepository", "label": "AuthRefreshTokenRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "jwtproperties", "label": "JwtProperties", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_refreshtokenservice", "label": ".RefreshTokenService()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L29", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "label": ".createSession()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L34", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "transactional", "label": "Transactional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "label": ".rotate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "refreshtokenrotation", "label": "RefreshTokenRotation", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "label": ".revoke()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L94", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "label": ".hashToken()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L109", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "label": ".generateRawToken()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L119", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "label": ".limit()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L125", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "authrefreshtoken", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "authrefreshtokenrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "service", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "transactional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "standardcharsets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "messagedigest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "nosuchalgorithmexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "securerandom", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "base64", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "hexformat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "service", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L18", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "securerandom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "authrefreshtokenrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "jwtproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_refreshtokenservice", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_refreshtokenservice", "target": "authrefreshtokenrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_refreshtokenservice", "target": "jwtproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L34", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L34", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "refreshtokenrotation", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L50", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L94", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L94", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L94", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L109", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L109", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L109", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L119", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L119", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L125", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L125", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L125", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L87", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "target": "refreshtokenrotation", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L91", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L100", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "AuthRefreshToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "setUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "setTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "setTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "setIssuedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L42", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "setExpiresAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "plus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "getRefreshTtl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "setUserAgent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "setIpAddress", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "findByTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "equalsIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "getTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "isActive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "getUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setRevokedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setRevokedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setRotatedToTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "AuthRefreshToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setIssuedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setExpiresAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "plus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "getRefreshTtl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setUserAgent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "setIpAddress", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "ifPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "findByTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "equalsIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "getTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "getRevokedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "setRevokedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "callee": "getInstance", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "callee": "digest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "callee": "getBytes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "callee": "formatHex", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", "callee": "IllegalStateException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "callee": "nextBytes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "callee": "encodeToString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "callee": "withoutPadding", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", "callee": "getUrlEncoder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", "callee": "substring", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", "source_location": "L130", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/11030cfd22c4e67f17fed1d74f6e9b544e296008a83ac3ab64fef2684fdee86d.json b/graphify-out/cache/ast/v0.9.5/11030cfd22c4e67f17fed1d74f6e9b544e296008a83ac3ab64fef2684fdee86d.json new file mode 100644 index 0000000..9b5932c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/11030cfd22c4e67f17fed1d74f6e9b544e296008a83ac3ab64fef2684fdee86d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "label": "TeacherCreationRequestController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "label": "TeacherCreationRequestController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L23", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "teachercreationrequestrepository", "label": "TeacherCreationRequestRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "departmentrepository", "label": "DepartmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "teacherdepartmentassignmentrepository", "label": "TeacherDepartmentAssignmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "bcryptpasswordencoder", "label": "BCryptPasswordEncoder", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", "label": ".TeacherCreationRequestController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L34", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "label": ".getRequests()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L46", "_callable": true}, {"id": "teachercreationrequeststatus", "label": "TeacherCreationRequestStatus", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "teachercreationrequestresponse", "label": "TeacherCreationRequestResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "label": ".approve()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L56", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "reviewteachercreationrequest", "label": "ReviewTeacherCreationRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "transactional", "label": "Transactional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "label": ".reject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L124", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "label": ".toResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L140", "_callable": true}, {"id": "teachercreationrequest", "label": "TeacherCreationRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "label": ".toUserResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L160", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "department", "label": "Department", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "userresponse", "label": "UserResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", "label": ".firstNotBlank()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L174", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "label": ".trimToNull()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L184", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "authcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "reviewteachercreationrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "teachercreationrequestresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "userresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "departmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "teachercreationrequestrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "teacherdepartmentassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "bcryptpasswordencoder", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "transactional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L23", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L23", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L23", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "teachercreationrequestrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "teacherdepartmentassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "bcryptpasswordencoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "teachercreationrequestrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "teacherdepartmentassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "bcryptpasswordencoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "target": "teachercreationrequeststatus", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L46", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L46", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "target": "teachercreationrequestresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L46", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L46", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L56", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "reviewteachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L56", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L56", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L56", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L56", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L124", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L124", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "target": "reviewteachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L124", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L124", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L124", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L140", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "target": "teachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L140", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "target": "teachercreationrequestresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L140", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L160", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L160", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L160", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "target": "userresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L160", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L174", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L174", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L184", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L184", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L184", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L89", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L114", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L119", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L120", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L136", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L137", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "target": "teachercreationrequestresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L142", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "target": "userresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L161", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L176", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "callee": "findAllByOrderByCreatedAtDesc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", "callee": "findByStatusOrderByCreatedAtDesc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "findByUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "encode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "TeacherDepartmentAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setPrimaryAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setCreatedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setReviewedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setReviewedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setReviewComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getReviewComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "setCreatedTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "setReviewedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "setReviewedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "setReviewComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "getReviewComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L144", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getRequestedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L151", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getCreatedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getReviewedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getReviewedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getReviewComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", "callee": "getCreatedTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", "source_location": "L188", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/11682a5717ad6bf6e2e7d6420920a2dd9de0fb74747b2f0e9fd79221f0d11c29.json b/graphify-out/cache/ast/v0.9.5/11682a5717ad6bf6e2e7d6420920a2dd9de0fb74747b2f0e9fd79221f0d11c29.json new file mode 100644 index 0000000..7ed6d1d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/11682a5717ad6bf6e2e7d6420920a2dd9de0fb74747b2f0e9fd79221f0d11c29.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "label": "AcademicDateService.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "label": "AcademicDateService", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L14", "_callable": true}, {"id": "service", "label": "Service", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "semesterrepository", "label": "SemesterRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "academiccalendardayrepository", "label": "AcademicCalendarDayRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "studentgroupcalendarassignmentrepository", "label": "StudentGroupCalendarAssignmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", "label": ".AcademicDateService()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L22", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", "label": ".findSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L32", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "semester", "label": "Semester", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", "label": ".getWeekNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", "label": ".getParity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L44", "_callable": true}, {"id": "scheduleparity", "label": "ScheduleParity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "label": ".getCourseNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L53", "_callable": true}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "label": ".getActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L58", "_callable": true}, {"id": "academiccalendaractivitytype", "label": "AcademicCalendarActivityType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", "label": ".isTheoryDay()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L77", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "label": ".hasCalendarAssignment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L83", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "academiccalendardayrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "semesterrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "studentgroupcalendarassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "value", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "service", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "chronounit", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "service", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "semesterrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "academiccalendardayrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "studentgroupcalendarassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", "target": "semesterrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", "target": "academiccalendardayrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", "target": "studentgroupcalendarassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L32", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L32", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L44", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L58", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L58", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L77", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L77", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L77", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L77", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L83", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L83", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L78", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", "callee": "findFirstByStartDateLessThanEqualAndEndDateGreaterThanEqual", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", "callee": "between", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "callee": "getMonthValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "callee": "getYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "callee": "getYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "flatMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "findForSchedule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "findByCalendarIdAndCourseNumberAndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "callee": "findForSchedule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java", "source_location": "L87", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/1266e402e2a21e5b6702827a5e85902bec52eeb85a782b60772ace0169091776.json b/graphify-out/cache/ast/v0.9.5/1266e402e2a21e5b6702827a5e85902bec52eeb85a782b60772ace0169091776.json new file mode 100644 index 0000000..cec3525 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/1266e402e2a21e5b6702827a5e85902bec52eeb85a782b60772ace0169091776.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "label": "TenantDataSourceConfig.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "label": "TenantDataSourceConfig", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L29", "_callable": true}, {"id": "configuration", "label": "Configuration", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "label": ".dataSource()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L46", "_callable": true}, {"id": "datasource", "label": "DataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "bean", "label": "Bean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "primary", "label": "Primary", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", "label": ".tenantRoutingDataSource()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L89", "_callable": true}, {"id": "tenantroutingdatasource", "label": "TenantRoutingDataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "label": ".entityManagerFactory()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L94", "_callable": true}, {"id": "localcontainerentitymanagerfactorybean", "label": "LocalContainerEntityManagerFactoryBean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", "label": ".transactionManager()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L114", "_callable": true}, {"id": "entitymanagerfactory", "label": "EntityManagerFactory", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "platformtransactionmanager", "label": "PlatformTransactionManager", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "label": ".loadTenantsFromFile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L120", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}, {"id": "tenantconfig", "label": "TenantConfig", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "typereference", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "objectmapper", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "value", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "bean", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "configuration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "primary", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "jpatransactionmanager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "localcontainerentitymanagerfactorybean", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "hibernatejpavendoradapter", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "platformtransactionmanager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "entitymanagerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "datasource", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "file", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "ioexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "configuration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L29", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L37", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L40", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L43", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "target": "datasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L46", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "target": "bean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L46", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "target": "primary", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L46", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L89", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", "target": "datasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L89", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L89", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", "target": "bean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L89", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "target": "datasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L94", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "target": "localcontainerentitymanagerfactorybean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L94", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "target": "bean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L94", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "target": "primary", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L94", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L114", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", "target": "entitymanagerfactory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L114", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", "target": "platformtransactionmanager", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L114", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", "target": "bean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L114", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", "target": "primary", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L114", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L120", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L120", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L120", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "target": "tenantroutingdatasource", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L49", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L52", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "target": "tenantconfig", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "target": "localcontainerentitymanagerfactorybean", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L97", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "addTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "getTenantConfigs", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", "callee": "addTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "setDataSource", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "setPackagesToScan", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "HibernateJpaVendorAdapter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "setGenerateDdl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "setDatabasePlatform", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "setJpaVendorAdapter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", "callee": "setJpaPropertyMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", "callee": "JpaTransactionManager", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "exists", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "ObjectMapper", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "readValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "TypeReference", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", "source_location": "L134", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/16767d94de4f4efa2e03785df6d91af0c4b858ed682dec012a87ca8aa09ca58c.json b/graphify-out/cache/ast/v0.9.5/16767d94de4f4efa2e03785df6d91af0c4b858ed682dec012a87ca8aa09ca58c.json new file mode 100644 index 0000000..1efc1f8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/16767d94de4f4efa2e03785df6d91af0c4b858ed682dec012a87ca8aa09ca58c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_java", "label": "DepartmentRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", "label": "DepartmentRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "department", "label": "Department", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", "label": ".findByDepartmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L11", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", "label": ".findByDepartmentCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L13", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", "label": ".findByStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L15", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_java", "target": "department", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L11", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", "source_location": "L15", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/1a16672b8aa22ac47f48b946cd046d3efeed939ded371df696228e48e9122fb4.json b/graphify-out/cache/ast/v0.9.5/1a16672b8aa22ac47f48b946cd046d3efeed939ded371df696228e48e9122fb4.json new file mode 100644 index 0000000..ef150e7 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/1a16672b8aa22ac47f48b946cd046d3efeed939ded371df696228e48e9122fb4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_java", "label": "AcademicCalendarDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "label": "AcademicCalendarDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", "source_location": "L19", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/1a7cdd080997208d5cfe554847b21c2a9ec9426167d9d5f29c5a7aa9fe0ccbb6.json b/graphify-out/cache/ast/v0.9.5/1a7cdd080997208d5cfe554847b21c2a9ec9426167d9d5f29c5a7aa9fe0ccbb6.json new file mode 100644 index 0000000..80d8fd3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/1a7cdd080997208d5cfe554847b21c2a9ec9426167d9d5f29c5a7aa9fe0ccbb6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java", "label": "ScheduleLessonCategory.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", "label": "ScheduleLessonCategory", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L5", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_getdisplayname", "label": "getDisplayName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L16", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "label": "fromLessonType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L20", "_callable": true}, {"id": "lessontype", "label": "LessonType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java", "target": "locale", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_getdisplayname", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_getdisplayname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L16", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "target": "lessontype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L20", "weight": 1.0, "context": "return_type"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L21", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L22", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "replace", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "toLowerCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "forLanguageTag", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "startsWith", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "startsWith", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "startsWith", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", "source_location": "L52", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/1bea4c6dc64c6e76b9db1a813ccb1a88a4e63974f43156c4d2d76914de942d4e.json b/graphify-out/cache/ast/v0.9.5/1bea4c6dc64c6e76b9db1a813ccb1a88a4e63974f43156c4d2d76914de942d4e.json new file mode 100644 index 0000000..d5aa29a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/1bea4c6dc64c6e76b9db1a813ccb1a88a4e63974f43156c4d2d76914de942d4e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "label": "ScheduleOverrideController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "label": "ScheduleOverrideController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L15", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "scheduleoverriderepository", "label": "ScheduleOverrideRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "scheduleruleslotrepository", "label": "ScheduleRuleSlotRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "timeslotrepository", "label": "TimeSlotRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "classroomrepository", "label": "ClassroomRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", "label": ".ScheduleOverrideController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", "label": ".getAll()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L41", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "scheduleoverridedto", "label": "ScheduleOverrideDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", "label": ".create()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L48", "_callable": true}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "label": ".update()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L53", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "label": ".delete()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L61", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "label": ".save()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "label": ".validate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L98", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "label": ".toDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L129", "_callable": true}, {"id": "scheduleoverride", "label": "ScheduleOverride", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", "label": ".clean()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L145", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "authcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "scheduleoverridedto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "schedulegeneratorservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "scheduleoverriderepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "scheduleruleslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "timeslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "classroomrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "scheduleoverriderepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "scheduleruleslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "timeslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "classroomrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L41", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", "target": "scheduleoverridedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L41", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L41", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", "target": "scheduleoverridedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L48", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L48", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L48", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "target": "scheduleoverridedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L53", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L53", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L61", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L61", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L61", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L61", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L71", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "target": "scheduleoverridedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L71", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L71", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L98", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "target": "scheduleoverridedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L98", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L98", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L129", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "target": "scheduleoverride", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L129", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "target": "scheduleoverridedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L129", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L145", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L145", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L145", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L72", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L89", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L95", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "target": "scheduleoverridedto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L130", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "callee": "deleteById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "findByBaseRuleSlotIdAndLessonDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "baseRuleSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "lessonDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setBaseRuleSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "baseRuleSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setLessonDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "lessonDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setAction", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "action", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setNewTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "newTimeSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "newTimeSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setNewClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "newClassroomId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "newClassroomId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setNewTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "newTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "newTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setNewLessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "newLessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "comment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "setCreatedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "baseRuleSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "baseRuleSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "lessonDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "action", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "action", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "newClassroomId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "newClassroomId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "newTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "newTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "newTimeSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", "callee": "newTimeSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getBaseRuleSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getLessonDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getAction", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getNewTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getNewTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getNewClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getNewClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getNewTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getNewTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getNewLessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getCreatedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", "callee": "getCreatedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "source_location": "L146", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/1c016b2e6724a54509d174964fd7285056735442da415d0cdc5494984060ae67.json b/graphify-out/cache/ast/v0.9.5/1c016b2e6724a54509d174964fd7285056735442da415d0cdc5494984060ae67.json new file mode 100644 index 0000000..4e84f79 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/1c016b2e6724a54509d174964fd7285056735442da415d0cdc5494984060ae67.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java", "label": "CourseAndSemesterCalculatorTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest", "label": "CourseAndSemesterCalculatorTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L9", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "label": ".courseAndSemesterAreZeroBeforeStudyStart()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L11", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "label": ".septemberStartsFirstCourseAndFirstSemester()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L19", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L11", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L13", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "callee": "isZero", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "callee": "getActualCourse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "callee": "isZero", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", "callee": "getActualSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L21", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L23", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L23", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "callee": "getActualCourse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L23", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", "callee": "getActualSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", "source_location": "L24", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/1d59c074b4ef3295e98d261b0a00416a24e50a18fb08f615857ad03952bb5ddf.json b/graphify-out/cache/ast/v0.9.5/1d59c074b4ef3295e98d261b0a00416a24e50a18fb08f615857ad03952bb5ddf.json new file mode 100644 index 0000000..c3030a8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/1d59c074b4ef3295e98d261b0a00416a24e50a18fb08f615857ad03952bb5ddf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_java", "label": "AcademicYear.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "label": "AcademicYear", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L7", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicYear.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicYear.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicYear.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicYear.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicYear.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L24", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L28", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_gettitle", "label": ".getTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L32", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_settitle", "label": ".setTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getstartdate", "label": ".getStartDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L40", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setstartdate", "label": ".setStartDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L44", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getenddate", "label": ".getEndDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L48", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setenddate", "label": ".setEndDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L52", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L24", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_gettitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_gettitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L32", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_settitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_settitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getstartdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getstartdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L40", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setstartdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setstartdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getenddate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getenddate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L48", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setenddate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L52", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setenddate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", "source_location": "L52", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/1d99c8c855e34a234e8cc5e5ad8e080999d8e71d35685ebbc69d24dd2cde7f32.json b/graphify-out/cache/ast/v0.9.5/1d99c8c855e34a234e8cc5e5ad8e080999d8e71d35685ebbc69d24dd2cde7f32.json new file mode 100644 index 0000000..e3d1d87 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/1d99c8c855e34a234e8cc5e5ad8e080999d8e71d35685ebbc69d24dd2cde7f32.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java", "label": "AcademicCalendarActivityTypeRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", "label": "AcademicCalendarActivityTypeRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "academiccalendaractivitytype", "label": "AcademicCalendarActivityType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc", "label": ".findAllByOrderByDisplayOrderAscCodeAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L11", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", "label": ".findByCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L13", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java", "target": "academiccalendaractivitytype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/2144f243b59a175b124c9a879dccf9b93e04ecb9f6b4c5ce47c7c44343f765cd.json b/graphify-out/cache/ast/v0.9.5/2144f243b59a175b124c9a879dccf9b93e04ecb9f6b4c5ce47c7c44343f765cd.json new file mode 100644 index 0000000..3c94f19 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/2144f243b59a175b124c9a879dccf9b93e04ecb9f6b4c5ce47c7c44343f765cd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java", "label": "TeacherSubjectRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", "label": "TeacherSubjectRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "teachersubject", "label": "TeacherSubject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java"}, {"id": "teachersubjectid", "label": "TeacherSubjectId", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", "label": ".findByUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L10", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", "label": ".findBySubjectId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L11", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java", "target": "teachersubject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java", "target": "teachersubjectid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", "target": "teachersubject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", "target": "teachersubjectid", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", "target": "teachersubject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L11", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", "target": "teachersubject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/23289c35f1a83692bf045f2011fca067b2cf0a02354475d99bc5a3a3d8d930a8.json b/graphify-out/cache/ast/v0.9.5/23289c35f1a83692bf045f2011fca067b2cf0a02354475d99bc5a3a3d8d930a8.json new file mode 100644 index 0000000..10480c7 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/23289c35f1a83692bf045f2011fca067b2cf0a02354475d99bc5a3a3d8d930a8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java", "label": "AcademicCalendarGridDayDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "label": "AcademicCalendarGridDayDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", "source_location": "L15", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/2386d738714321a165d7e963ff04441317464a752c9353c22c012b3c5e8a7fb7.json b/graphify-out/cache/ast/v0.9.5/2386d738714321a165d7e963ff04441317464a752c9353c22c012b3c5e8a7fb7.json new file mode 100644 index 0000000..13f1082 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/2386d738714321a165d7e963ff04441317464a752c9353c22c012b3c5e8a7fb7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java", "label": "SpecialtiesRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", "label": "SpecialtiesRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "speciality", "label": "Speciality", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", "label": ".findBySpecialityName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L11", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", "label": ".findBySpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L13", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", "label": ".findByStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L15", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java", "target": "speciality", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L11", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", "source_location": "L15", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/25159b2e90f277736e32c9aa91411ada725d4d08b3ad0f59422a26dc6618bb0f.json b/graphify-out/cache/ast/v0.9.5/25159b2e90f277736e32c9aa91411ada725d4d08b3ad0f59422a26dc6618bb0f.json new file mode 100644 index 0000000..9d206e6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/25159b2e90f277736e32c9aa91411ada725d4d08b3ad0f59422a26dc6618bb0f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_workloadsummarydto_java", "label": "WorkloadSummaryDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", "label": "WorkloadSummaryDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_workloadsummarydto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", "source_location": "L4", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/25b25558d42f90bcb41fc388b4da3ff8479fd1cd402363311eb485e7740de83c.json b/graphify-out/cache/ast/v0.9.5/25b25558d42f90bcb41fc388b4da3ff8479fd1cd402363311eb485e7740de83c.json new file mode 100644 index 0000000..b04d780 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/25b25558d42f90bcb41fc388b4da3ff8479fd1cd402363311eb485e7740de83c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "label": "EducationFormController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "label": "EducationFormController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L16", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "educationformrepository", "label": "EducationFormRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "grouprepository", "label": "GroupRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "academiccalendarrepository", "label": "AcademicCalendarRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", "label": ".EducationFormController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L25", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "label": ".getAll()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L33", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "label": ".create()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L41", "_callable": true}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "label": ".delete()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L59", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "educationform", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "studentgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "academiccalendarrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "educationformrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "grouprepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L16", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L16", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L16", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "educationformrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "academiccalendarrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", "target": "educationformrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", "target": "academiccalendarrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L33", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L33", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L33", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L33", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L33", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L33", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L41", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L41", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L41", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L41", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L41", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L59", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L59", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "callee": "findAllByOrderByNameAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "findByName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "EducationForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "findByEducationFormId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "countByStudyFormId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "deleteById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java", "source_location": "L78", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/265e8882226ba523ef0fbed53855eb1f447266da2c1cc9aabbfcfa600dd1708d.json b/graphify-out/cache/ast/v0.9.5/265e8882226ba523ef0fbed53855eb1f447266da2c1cc9aabbfcfa600dd1708d.json new file mode 100644 index 0000000..7de524d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/265e8882226ba523ef0fbed53855eb1f447266da2c1cc9aabbfcfa600dd1708d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleparity_java", "label": "ScheduleParity.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleParity.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", "label": "ScheduleParity", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleParity.java", "source_location": "L3", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleparity_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleParity.java", "source_location": "L3", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/26cfe58a92526814113d722c4e327325064fbb55454c5a96e2f22cfc5c6d6c3a.json b/graphify-out/cache/ast/v0.9.5/26cfe58a92526814113d722c4e327325064fbb55454c5a96e2f22cfc5c6d6c3a.json new file mode 100644 index 0000000..ed35618 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/26cfe58a92526814113d722c4e327325064fbb55454c5a96e2f22cfc5c6d6c3a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_java", "label": "TeacherCreationRequestStatus.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequestStatus.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", "label": "TeacherCreationRequestStatus", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequestStatus.java", "source_location": "L3", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequestStatus.java", "source_location": "L3", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/286a291ec64bdf627ab35c0bc9102e08cc75ca8cdcad4fd33a9e7c60416ecd60.json b/graphify-out/cache/ast/v0.9.5/286a291ec64bdf627ab35c0bc9102e08cc75ca8cdcad4fd33a9e7c60416ecd60.json new file mode 100644 index 0000000..3b8f9b0 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/286a291ec64bdf627ab35c0bc9102e08cc75ca8cdcad4fd33a9e7c60416ecd60.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java", "label": "GroupCalendarAssignmentDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "label": "GroupCalendarAssignmentDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java"}, {"id": "academiccalendarsubjectdto", "label": "AcademicCalendarSubjectDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", "target": "academiccalendarsubjectdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/287e722d1fe2973ff76ce34375777e50870fa8319bb09ee8794af9fc58754e7b.json b/graphify-out/cache/ast/v0.9.5/287e722d1fe2973ff76ce34375777e50870fa8319bb09ee8794af9fc58754e7b.json new file mode 100644 index 0000000..c66d952 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/287e722d1fe2973ff76ce34375777e50870fa8319bb09ee8794af9fc58754e7b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_java", "label": "SpecialityResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "label": "SpecialityResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", "label": ".SpecialityResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L9", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialityname", "label": ".getSpecialityName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialityname", "label": ".setSpecialityName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialitycode", "label": ".getSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialitycode", "label": ".setSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L35", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L9", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L9", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L9", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialityname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialityname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L23", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialityname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialityname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialitycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialitycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/28ba7d562e794df59b200d2e99b8d545164ce2c7481748835eac60e8d4722485.json b/graphify-out/cache/ast/v0.9.5/28ba7d562e794df59b200d2e99b8d545164ce2c7481748835eac60e8d4722485.json new file mode 100644 index 0000000..232efba --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/28ba7d562e794df59b200d2e99b8d545164ce2c7481748835eac60e8d4722485.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_java", "label": "Speciality.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "label": "Speciality", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Speciality.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Speciality.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Speciality.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Speciality.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", "label": ".Speciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialityname", "label": ".getSpecialityName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialityname", "label": ".setSpecialityName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialitycode", "label": ".getSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialitycode", "label": ".setSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L47", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialityname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialityname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialityname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialityname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialitycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialitycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/2cb67d79d21668a671fd4429eface68b9b95cf0a8785e5e3720fcb469e94013e.json b/graphify-out/cache/ast/v0.9.5/2cb67d79d21668a671fd4429eface68b9b95cf0a8785e5e3720fcb469e94013e.json new file mode 100644 index 0000000..c5bc309 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/2cb67d79d21668a671fd4429eface68b9b95cf0a8785e5e3720fcb469e94013e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "pkg_com_magistr_app", "label": "com.magistr:app", "file_type": "code", "type": "package", "ecosystem": "maven", "source_file": "backend/pom.xml", "source_location": "L1", "version": "1.0.0"}], "edges": [{"source": "pkg_com_magistr_app", "target": "pkg_org_springframework_boot_spring_boot_starter_web", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_com_magistr_app", "target": "pkg_org_springframework_boot_spring_boot_starter_data_jpa", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_com_magistr_app", "target": "pkg_org_flywaydb_flyway_core", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_com_magistr_app", "target": "pkg_org_postgresql_postgresql", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_com_magistr_app", "target": "pkg_org_springframework_security_spring_security_crypto", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_com_magistr_app", "target": "pkg_org_springframework_security_spring_security_oauth2_jose", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_com_magistr_app", "target": "pkg_com_h2database_h2", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_com_magistr_app", "target": "pkg_io_opentelemetry_opentelemetry_api", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_com_magistr_app", "target": "pkg_org_springframework_boot_spring_boot_starter_test", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "backend/pom.xml", "source_location": "L1", "weight": 1.0}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/2ef9f466a55710d2bb8f525d28d2a08274c8392729be4740f84e7e953fa79b04.json b/graphify-out/cache/ast/v0.9.5/2ef9f466a55710d2bb8f525d28d2a08274c8392729be4740f84e7e953fa79b04.json new file mode 100644 index 0000000..f146f21 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/2ef9f466a55710d2bb8f525d28d2a08274c8392729be4740f84e7e953fa79b04.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_java", "label": "SpecialtyProfile.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "label": "SpecialtyProfile", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java"}, {"id": "speciality", "label": "Speciality", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getspeciality", "label": ".getSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setspeciality", "label": ".setSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setdescription", "label": ".setDescription()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L51", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L23", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getspeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getspeciality", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setspeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setspeciality", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L39", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getdescription", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setdescription", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/30e0d7371208a0b2ff2b6590d9e1a9a873abab9dd8be29c27ebf6976ea3c2b02.json b/graphify-out/cache/ast/v0.9.5/30e0d7371208a0b2ff2b6590d9e1a9a873abab9dd8be29c27ebf6976ea3c2b02.json new file mode 100644 index 0000000..00cbb85 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/30e0d7371208a0b2ff2b6590d9e1a9a873abab9dd8be29c27ebf6976ea3c2b02.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_java", "label": "EducationForm.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "label": "EducationForm", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/EducationForm.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/EducationForm.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/EducationForm.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/EducationForm.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_educationform", "label": ".EducationForm()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L16", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L31", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_educationform", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L19", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_educationform_educationform_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/34c2662f7ecd86955d01c3b288826160272baf9939e24dda52422b128e9c9ac7.json b/graphify-out/cache/ast/v0.9.5/34c2662f7ecd86955d01c3b288826160272baf9939e24dda52422b128e9c9ac7.json new file mode 100644 index 0000000..aedc038 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/34c2662f7ecd86955d01c3b288826160272baf9939e24dda52422b128e9c9ac7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_java", "label": "TeacherSubject.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "label": "TeacherSubject", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L5", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubject.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubject.java"}, {"id": "idclass", "label": "IdClass", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubject.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubject.java"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubject.java"}, {"id": "subject", "label": "Subject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubject.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_teachersubject", "label": ".TeacherSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L26", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuserid", "label": ".getUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L34", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setuserid", "label": ".setUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L38", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubjectid", "label": ".getSubjectId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L42", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setsubjectid", "label": ".setSubjectId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L46", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuser", "label": ".getUser()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubject", "label": ".getSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L54", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "idclass", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_teachersubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_teachersubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_teachersubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_teachersubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L34", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L38", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubjectid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L42", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setsubjectid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setsubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L46", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuser", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L50", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", "source_location": "L54", "weight": 1.0, "context": "return_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/36026b99fead0ca526cb10288628823c1b829e32ce3b304a5dcecfed1035cc77.json b/graphify-out/cache/ast/v0.9.5/36026b99fead0ca526cb10288628823c1b829e32ce3b304a5dcecfed1035cc77.json new file mode 100644 index 0000000..18eeead --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/36026b99fead0ca526cb10288628823c1b829e32ce3b304a5dcecfed1035cc77.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_java", "label": "SpecialtyProfileDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", "label": "SpecialtyProfileDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L4", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/38f01279921dfa97f4b7140fa33b16f0864f2c6abda489c2de814252a1c7c2f1.json b/graphify-out/cache/ast/v0.9.5/38f01279921dfa97f4b7140fa33b16f0864f2c6abda489c2de814252a1c7c2f1.json new file mode 100644 index 0000000..9bd6163 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/38f01279921dfa97f4b7140fa33b16f0864f2c6abda489c2de814252a1c7c2f1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_java", "label": "TeacherSubjectId.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "label": "TeacherSubjectId", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L6", "_callable": true}, {"id": "serializable", "label": "Serializable", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_teachersubjectid", "label": ".TeacherSubjectId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L11", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getuserid", "label": ".getUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setuserid", "label": ".setUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getsubjectid", "label": ".getSubjectId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setsubjectid", "label": ".setSubjectId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals", "label": ".equals()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L35", "_callable": true}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java"}, {"id": "override", "label": "Override", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_hashcode", "label": ".hashCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L42", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_java", "target": "serializable", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_java", "target": "objects", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "serializable", "relation": "implements", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_teachersubjectid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_teachersubjectid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_teachersubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_teachersubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L19", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getsubjectid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getsubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setsubjectid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setsubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L35", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_hashcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_hashcode", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", "source_location": "L42", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/393627916badad02a78935fdc413f6b94d8aff45ad93693103f493812aaa3209.json b/graphify-out/cache/ast/v0.9.5/393627916badad02a78935fdc413f6b94d8aff45ad93693103f493812aaa3209.json new file mode 100644 index 0000000..b722ff6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/393627916badad02a78935fdc413f6b94d8aff45ad93693103f493812aaa3209.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_java", "label": "LifecycleEntity.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L10", "_callable": true}, {"id": "mappedsuperclass", "label": "MappedSuperclass", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getstatus", "label": ".getStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setstatus", "label": ".setStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactivefrom", "label": ".getActiveFrom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactivefrom", "label": ".setActiveFrom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactiveto", "label": ".getActiveTo()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactiveto", "label": ".setActiveTo()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivedat", "label": ".getArchivedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivedat", "label": ".setArchivedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivereason", "label": ".getArchiveReason()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivereason", "label": ".setArchiveReason()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", "label": ".isActiveRecord()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L71", "_callable": true}, {"id": "jsonignore", "label": "JsonIgnore", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", "label": ".isArchivedRecord()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L76", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", "label": ".isActiveOn()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L81", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", "label": ".archive()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L94", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_restore", "label": ".restore()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L101", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_java", "target": "jsonignore", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_java", "target": "column", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_java", "target": "mappedsuperclass", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mappedsuperclass", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L10", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactivefrom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactivefrom", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L39", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactivefrom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactivefrom", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactiveto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactiveto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactiveto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactiveto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L55", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivereason", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivereason", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L63", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivereason", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivereason", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", "target": "jsonignore", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L71", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L76", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", "target": "jsonignore", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L76", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L81", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L81", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", "target": "jsonignore", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L81", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L94", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_restore", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L101", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L84", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L86", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setstatus", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", "source_location": "L98", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/39b85b44660c634b6a3a0554a659e9a047bb3029d120e1ababc02dcff0ed4eed.json b/graphify-out/cache/ast/v0.9.5/39b85b44660c634b6a3a0554a659e9a047bb3029d120e1ababc02dcff0ed4eed.json new file mode 100644 index 0000000..455f636 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/39b85b44660c634b6a3a0554a659e9a047bb3029d120e1ababc02dcff0ed4eed.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_java", "label": "ClassroomRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "label": "ClassroomRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L5", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L13", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L17", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getcapacity", "label": ".getCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L21", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setcapacity", "label": ".setCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L25", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getbuilding", "label": ".getBuilding()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L29", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setbuilding", "label": ".setBuilding()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L33", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getfloor", "label": ".getFloor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L37", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setfloor", "label": ".setFloor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L41", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getisavailable", "label": ".getIsAvailable()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L45", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setisavailable", "label": ".setIsAvailable()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L49", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids", "label": ".getEquipmentIds()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L53", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setequipmentids", "label": ".setEquipmentIds()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L57", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L17", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L21", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getbuilding", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getbuilding", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L29", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setbuilding", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setbuilding", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L33", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getfloor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getfloor", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L37", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setfloor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setfloor", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L41", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getisavailable", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getisavailable", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L45", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setisavailable", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L49", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setisavailable", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L49", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L53", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L53", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setequipmentids", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setequipmentids", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L57", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setequipmentids", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", "source_location": "L57", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/39c830ee50866c6a59b6c3f45bd78b6b0fefd4df64133ac77ec6374610974201.json b/graphify-out/cache/ast/v0.9.5/39c830ee50866c6a59b6c3f45bd78b6b0fefd4df64133ac77ec6374610974201.json new file mode 100644 index 0000000..035164a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/39c830ee50866c6a59b6c3f45bd78b6b0fefd4df64133ac77ec6374610974201.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_java", "label": "EquipmentRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", "label": "EquipmentRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "equipment", "label": "Equipment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", "label": ".findByName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L10", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", "label": ".findByStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L12", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_java", "target": "equipment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/3b19eb3552131e5b548e9115de2c5fd3a05369987e8fef71c3299a365ae5883e.json b/graphify-out/cache/ast/v0.9.5/3b19eb3552131e5b548e9115de2c5fd3a05369987e8fef71c3299a365ae5883e.json new file mode 100644 index 0000000..4e86f10 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/3b19eb3552131e5b548e9115de2c5fd3a05369987e8fef71c3299a365ae5883e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java", "label": "ScheduleRuleRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "label": "ScheduleRuleRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L10", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schedulerule", "label": "ScheduleRule", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", "label": ".findByGroupIdAndSemesterId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L12", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", "label": ".findByTeacherIdAndSemesterId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", "label": ".findAllWithDetails()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L60", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", "label": ".findByIdWithDetails()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L79", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java", "target": "schedulerule", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L12", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L36", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L36", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L36", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L60", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L60", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L60", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L60", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L79", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L79", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", "source_location": "L79", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/3f5382455d54bacc0a443b73b98687a5a92c4735d276d696e9c2c23a99c41963.json b/graphify-out/cache/ast/v0.9.5/3f5382455d54bacc0a443b73b98687a5a92c4735d276d696e9c2c23a99c41963.json new file mode 100644 index 0000000..2b3e07f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/3f5382455d54bacc0a443b73b98687a5a92c4735d276d696e9c2c23a99c41963.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_java", "label": "LessonType.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "label": "LessonType", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L5", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LessonType.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LessonType.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LessonType.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LessonType.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L16", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L20", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getlessontype", "label": ".getLessonType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L24", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setlessontype", "label": ".setLessonType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L28", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L16", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getlessontype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getlessontype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L24", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setlessontype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setlessontype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/40d4a4144f8397f24bc54c4c49b003524a7e603be5006f8381de30762361b5a1.json b/graphify-out/cache/ast/v0.9.5/40d4a4144f8397f24bc54c4c49b003524a7e603be5006f8381de30762361b5a1.json new file mode 100644 index 0000000..0adf1ca --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/40d4a4144f8397f24bc54c4c49b003524a7e603be5006f8381de30762361b5a1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java", "label": "StudentGroupCalendarAssignment.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "label": "StudentGroupCalendarAssignment", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L5", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java"}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java"}, {"id": "academicyear", "label": "AcademicYear", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java"}, {"id": "academiccalendar", "label": "AcademicCalendar", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L25", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L29", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getstudentgroup", "label": ".getStudentGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L33", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setstudentgroup", "label": ".setStudentGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L37", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademicyear", "label": ".getAcademicYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L41", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademicyear", "label": ".setAcademicYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L45", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademiccalendar", "label": ".getAcademicCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L49", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademiccalendar", "label": ".setAcademicCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L53", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L25", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getstudentgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getstudentgroup", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L33", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setstudentgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setstudentgroup", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademicyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademicyear", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L41", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademicyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademicyear", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L45", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademiccalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L49", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademiccalendar", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L49", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademiccalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademiccalendar", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/4118953ccde05732a1a8da9cfa48e92e8f30a0c79647c3975d9006f87a098daa.json b/graphify-out/cache/ast/v0.9.5/4118953ccde05732a1a8da9cfa48e92e8f30a0c79647c3975d9006f87a098daa.json new file mode 100644 index 0000000..648e1f3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/4118953ccde05732a1a8da9cfa48e92e8f30a0c79647c3975d9006f87a098daa.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_java", "label": "TimeSlotRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "label": "TimeSlotRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "timeslot", "label": "TimeSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc", "label": ".findAllByOrderByTimeSlotScopeDisplayOrderAscOrderNumberAscStartTimeAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L11", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", "label": ".findAllByTimeSlotScopeIdOrderByOrderNumberAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L13", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", "label": ".findByTimeSlotScopeIdAndOrderNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L15", "_callable": true}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_existsbytimeslotscopeid", "label": ".existsByTimeSlotScopeId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L17", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_java", "target": "timeslot", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L15", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_existsbytimeslotscopeid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_existsbytimeslotscopeid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", "source_location": "L17", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/42d267f52bf4650bbdf27d4d126aca688742962aea6fa341fa25d51142cb78f0.json b/graphify-out/cache/ast/v0.9.5/42d267f52bf4650bbdf27d4d126aca688742962aea6fa341fa25d51142cb78f0.json new file mode 100644 index 0000000..526591d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/42d267f52bf4650bbdf27d4d126aca688742962aea6fa341fa25d51142cb78f0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java", "label": "CreateDepartmentRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "label": "CreateDepartmentRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_createdepartmentrequest", "label": ".CreateDepartmentRequest()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L8", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentname", "label": ".getDepartmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L10", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentname", "label": ".setDepartmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L14", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentcode", "label": ".getDepartmentCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L18", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentcode", "label": ".setDepartmentCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L22", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_createdepartmentrequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentcode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L18", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentcode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/44161c2f314305041961951286e809eff255ed97fbfb085ba8c76a88399add49.json b/graphify-out/cache/ast/v0.9.5/44161c2f314305041961951286e809eff255ed97fbfb085ba8c76a88399add49.json new file mode 100644 index 0000000..c7cbeee --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/44161c2f314305041961951286e809eff255ed97fbfb085ba8c76a88399add49.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java", "label": "StudentGroupCalendarAssignmentRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", "label": "StudentGroupCalendarAssignmentRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L11", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "studentgroupcalendarassignment", "label": "StudentGroupCalendarAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", "label": ".findByGroupIdWithDetails()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L13", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", "label": ".findByGroupIdAndAcademicYearIdWithDetails()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L27", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", "label": ".findForSchedule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L43", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java", "target": "studentgroupcalendarassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", "target": "studentgroupcalendarassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", "target": "studentgroupcalendarassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L13", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", "target": "studentgroupcalendarassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L27", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L27", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", "target": "studentgroupcalendarassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L43", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", "source_location": "L43", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/48bec84b9c64abace6450c682f20b3088ea1668f667ab76fcc3c3db30609e464.json b/graphify-out/cache/ast/v0.9.5/48bec84b9c64abace6450c682f20b3088ea1668f667ab76fcc3c3db30609e464.json new file mode 100644 index 0000000..8512194 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/48bec84b9c64abace6450c682f20b3088ea1668f667ab76fcc3c3db30609e464.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_java", "label": "SubgroupRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "label": "SubgroupRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L11", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "subgroup", "label": "Subgroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", "label": ".findAllWithGroupsOrderByGroupNameAndName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L13", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", "label": ".findByStudentGroupIdOrderByNameAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L22", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", "label": ".findByIdAndStudentGroupId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L32", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", "label": ".existsByStudentGroupIdAndNameIgnoreCase()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L41", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", "label": ".sumActiveStudentCapacityByGroupId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", "label": ".sumActiveStudentCapacityByGroupIdExcludingId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L58", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", "label": ".countActiveByGroupIdExcludingId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L68", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_java", "target": "subgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L13", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L22", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L22", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L22", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L32", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L32", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L32", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L41", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L41", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L41", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L50", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L50", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L58", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L58", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L68", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L68", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", "source_location": "L68", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/4957508b7abf013d3fc4442d63a5d0f63c6e8eecc704bee16d34e7d10fa011ed.json b/graphify-out/cache/ast/v0.9.5/4957508b7abf013d3fc4442d63a5d0f63c6e8eecc704bee16d34e7d10fa011ed.json new file mode 100644 index 0000000..8410c5d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/4957508b7abf013d3fc4442d63a5d0f63c6e8eecc704bee16d34e7d10fa011ed.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_java", "label": "ScheduleRule.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "label": "ScheduleRule", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L10", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "subject", "label": "Subject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "semester", "label": "Semester", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "set", "label": "Set", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "scheduleruleslot", "label": "ScheduleRuleSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L64", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L68", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsubject", "label": ".getSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L72", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsubject", "label": ".setSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L76", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsemester", "label": ".getSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L80", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsemester", "label": ".setSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L84", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getstatus", "label": ".getStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L88", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setstatus", "label": ".setStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L92", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidfrom", "label": ".getValidFrom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L96", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidfrom", "label": ".setValidFrom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L100", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidto", "label": ".getValidTo()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L104", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidto", "label": ".setValidTo()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L108", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlectureacademichours", "label": ".getLectureAcademicHours()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L112", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlectureacademichours", "label": ".setLectureAcademicHours()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L116", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratoryacademichours", "label": ".getLaboratoryAcademicHours()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L120", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratoryacademichours", "label": ".setLaboratoryAcademicHours()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L124", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticeacademichours", "label": ".getPracticeAcademicHours()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L128", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticeacademichours", "label": ".setPracticeAcademicHours()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L132", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlecturestartweek", "label": ".getLectureStartWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L136", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlecturestartweek", "label": ".setLectureStartWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L140", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratorystartweek", "label": ".getLaboratoryStartWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L144", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratorystartweek", "label": ".setLaboratoryStartWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L148", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticestartweek", "label": ".getPracticeStartWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L152", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticestartweek", "label": ".setPracticeStartWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L156", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor", "label": ".academicHoursFor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L160", "_callable": true}, {"id": "schedulelessoncategory", "label": "ScheduleLessonCategory", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor", "label": ".startWeekFor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L168", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", "label": ".isActiveRecord()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L176", "_callable": true}, {"id": "jsonignore", "label": "JsonIgnore", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isarchivedrecord", "label": ".isArchivedRecord()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L181", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", "label": ".isActiveOn()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L186", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_archive", "label": ".archive()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L199", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_restore", "label": ".restore()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L203", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", "label": ".valueOrZero()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L208", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", "label": ".valueOrDefault()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L212", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups", "label": ".getGroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L216", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setgroups", "label": ".setGroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L220", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots", "label": ".getSlots()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L224", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setslots", "label": ".setSlots()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L228", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_java", "target": "jsonignore", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_java", "target": "hashset", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_java", "target": "set", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L10", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L10", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L35", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L38", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L41", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L44", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L47", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L50", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L53", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L53", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L61", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L61", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L64", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L64", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L68", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L72", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L72", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L76", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L76", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L80", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsemester", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L80", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L84", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsemester", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L84", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L88", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L92", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L92", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidfrom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L96", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidfrom", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L96", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidfrom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L100", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidfrom", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L100", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L104", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L104", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L108", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L108", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlectureacademichours", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L112", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlectureacademichours", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L112", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlectureacademichours", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L116", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlectureacademichours", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L116", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratoryacademichours", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L120", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratoryacademichours", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L120", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratoryacademichours", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L124", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratoryacademichours", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L124", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticeacademichours", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L128", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticeacademichours", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L128", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticeacademichours", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L132", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticeacademichours", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L132", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlecturestartweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L136", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlecturestartweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L136", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlecturestartweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L140", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlecturestartweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L140", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratorystartweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L144", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratorystartweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L144", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratorystartweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L148", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratorystartweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L148", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticestartweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L152", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticestartweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L152", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticestartweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L156", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticestartweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L156", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L160", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor", "target": "schedulelessoncategory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L160", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L168", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor", "target": "schedulelessoncategory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L168", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L176", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", "target": "jsonignore", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L176", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isarchivedrecord", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L181", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isarchivedrecord", "target": "jsonignore", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L181", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L186", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L186", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", "target": "jsonignore", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L186", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_archive", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L199", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_restore", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L203", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L208", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L208", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L212", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L212", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L216", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L216", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L216", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setgroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L220", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setgroups", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L220", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setgroups", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L220", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L224", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L224", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L224", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setslots", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L228", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setslots", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L228", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setslots", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L228", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L162", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L170", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L189", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L209", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setstatus", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isarchivedrecord", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L194", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "source_location": "L195", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/4a0b015e53d0471035ede7abc272344e3fb65624bac54dde2e0e3af02306afd5.json b/graphify-out/cache/ast/v0.9.5/4a0b015e53d0471035ede7abc272344e3fb65624bac54dde2e0e3af02306afd5.json new file mode 100644 index 0000000..664401e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/4a0b015e53d0471035ede7abc272344e3fb65624bac54dde2e0e3af02306afd5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_java", "label": "UserResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "label": "UserResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L5", "_callable": true}, {"id": "jsoninclude", "label": "JsonInclude", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/UserResponse.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/UserResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/UserResponse.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "label": ".UserResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L17", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L46", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getrole", "label": ".getRole()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L54", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getfullname", "label": ".getFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L58", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getjobtitle", "label": ".getJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L62", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentname", "label": ".getDepartmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L66", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L70", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L74", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getstatus", "label": ".getStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L78", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setstatus", "label": ".setStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L82", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_java", "target": "jsoninclude", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "jsoninclude", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L38", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L38", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L38", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L38", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L38", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L46", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L50", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getrole", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getrole", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L54", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L58", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L62", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L66", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L70", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L78", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L82", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", "source_location": "L82", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/4b348d8dfbb5b02025bba15d599ad9eaf52e3515d3691620c0ab0e8c2ec016d1.json b/graphify-out/cache/ast/v0.9.5/4b348d8dfbb5b02025bba15d599ad9eaf52e3515d3691620c0ab0e8c2ec016d1.json new file mode 100644 index 0000000..2e7257c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/4b348d8dfbb5b02025bba15d599ad9eaf52e3515d3691620c0ab0e8c2ec016d1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java", "label": "TimeSlotDateAssignmentRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "label": "TimeSlotDateAssignmentRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L10", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "timeslotdateassignment", "label": "TimeSlotDateAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", "label": ".findByDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L12", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc", "label": ".findAllByOrderByDateAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L14", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", "label": ".findByDateBetweenOrderByDateAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L16", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_existsbytimeslotscopeid", "label": ".existsByTimeSlotScopeId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L18", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java", "target": "timeslotdateassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "target": "timeslotdateassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", "target": "timeslotdateassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L14", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc", "target": "timeslotdateassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L14", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L16", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", "target": "timeslotdateassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L16", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_existsbytimeslotscopeid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_existsbytimeslotscopeid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", "source_location": "L18", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/4b769a6e819b1ad546b2ffdb6ad8209b9d7423b9ac15d40ecd05846ce9a434b7.json b/graphify-out/cache/ast/v0.9.5/4b769a6e819b1ad546b2ffdb6ad8209b9d7423b9ac15d40ecd05846ce9a434b7.json new file mode 100644 index 0000000..3fca98d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/4b769a6e819b1ad546b2ffdb6ad8209b9d7423b9ac15d40ecd05846ce9a434b7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "label": "SubgroupController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "label": "SubgroupController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L19", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "subgrouprepository", "label": "SubgroupRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "grouprepository", "label": "GroupRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "scheduleruleslotrepository", "label": "ScheduleRuleSlotRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", "label": ".SubgroupController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L28", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", "label": ".getAll()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L38", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "subgroupdto", "label": "SubgroupDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "label": ".getByGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L45", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "label": ".create()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L55", "_callable": true}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "label": ".update()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L83", "_callable": true}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "label": ".delete()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L114", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "label": ".validate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L138", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "label": ".validateGroupCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L151", "_callable": true}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "label": ".validateDeleteKeepsCompleteSplit()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L162", "_callable": true}, {"id": "subgroup", "label": "Subgroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "label": ".toDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L179", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "subgroupdto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "studentgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "subgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "grouprepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "scheduleruleslotrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "subgrouprepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "schedulegeneratorservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "dataintegrityviolationexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "subgrouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "scheduleruleslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", "target": "subgrouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", "target": "scheduleruleslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L38", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", "target": "subgroupdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L38", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L38", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L45", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L45", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L45", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "subgroupdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L55", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L55", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L55", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L83", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L83", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "subgroupdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L83", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L83", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L83", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L83", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L114", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L114", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L114", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L114", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L114", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L114", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L138", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "target": "subgroupdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L138", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L138", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L151", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L151", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L151", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L151", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L151", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L162", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L162", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L162", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L179", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L179", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "target": "subgroupdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L179", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L69", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "subgroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L80", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L92", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L111", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L124", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "target": "subgroupdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L181", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", "callee": "findAllWithGroupsOrderByGroupNameAndName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", "callee": "findByStudentGroupIdOrderByNameAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "existsByStudentGroupIdAndNameIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "studentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "setStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "setStudentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "studentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "findByIdAndStudentGroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "existsByStudentGroupIdAndNameIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "equalsIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "studentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "setStudentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "studentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "findByIdAndStudentGroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "existsBySubgroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "callee": "studentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", "callee": "studentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "callee": "sumActiveStudentCapacityByGroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "callee": "sumActiveStudentCapacityByGroupIdExcludingId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "callee": "longValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "callee": "getGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", "callee": "getGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "callee": "countActiveByGroupIdExcludingId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "callee": "sumActiveStudentCapacityByGroupIdExcludingId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", "callee": "getGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L182", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", "callee": "getStudentCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java", "source_location": "L186", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/4bc1fd931a220eb88c8c96d03ade862518c6c8360be75d1e4878626ca68ab2b4.json b/graphify-out/cache/ast/v0.9.5/4bc1fd931a220eb88c8c96d03ade862518c6c8360be75d1e4878626ca68ab2b4.json new file mode 100644 index 0000000..125662b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/4bc1fd931a220eb88c8c96d03ade862518c6c8360be75d1e4878626ca68ab2b4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_java", "label": "CreateGroupRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "label": "CreateGroupRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L14", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L18", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getgroupsize", "label": ".getGroupSize()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L22", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setgroupsize", "label": ".setGroupSize()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L26", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteducationformid", "label": ".getEducationFormId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L30", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_seteducationformid", "label": ".setEducationFormId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L34", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L38", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L42", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getyearstartstudy", "label": ".getYearStartStudy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L46", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setyearstartstudy", "label": ".setYearStartStudy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialitycode", "label": ".getSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L54", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialitycode", "label": ".setSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L58", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyid", "label": ".getSpecialtyId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L62", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyid", "label": ".setSpecialtyId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L66", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyprofileid", "label": ".getSpecialtyProfileId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L70", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyprofileid", "label": ".setSpecialtyProfileId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L74", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid", "label": ".getEffectiveSpecialtyId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L78", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L14", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L18", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getgroupsize", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getgroupsize", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L22", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setgroupsize", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setgroupsize", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteducationformid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteducationformid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L30", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_seteducationformid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_seteducationformid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L38", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getyearstartstudy", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getyearstartstudy", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L46", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setyearstartstudy", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setyearstartstudy", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialitycode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L54", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialitycode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L62", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L66", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyprofileid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyprofileid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L70", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyprofileid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyprofileid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", "source_location": "L78", "weight": 1.0, "context": "return_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/4f25a39ab97eeace71f1b2592240a62265e1922ce4f81ef7c24613ed5a2e8f9f.json b/graphify-out/cache/ast/v0.9.5/4f25a39ab97eeace71f1b2592240a62265e1922ce4f81ef7c24613ed5a2e8f9f.json new file mode 100644 index 0000000..c1a6ad3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/4f25a39ab97eeace71f1b2592240a62265e1922ce4f81ef7c24613ed5a2e8f9f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "label": "TenantInterceptor.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "label": "TenantInterceptor", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L30", "_callable": true}, {"id": "handlerinterceptor", "label": "HandlerInterceptor", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java"}, {"id": "tenantroutingdatasource", "label": "TenantRoutingDataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_setroutingdatasource", "label": ".setRoutingDataSource()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "label": ".preHandle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L43", "_callable": true}, {"id": "httpservletrequest", "label": "HttpServletRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java"}, {"id": "httpservletresponse", "label": "HttpServletResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java"}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java"}, {"id": "override", "label": "Override", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "label": ".afterCompletion()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L79", "_callable": true}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "label": ".resolveTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L85", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "objectmapper", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "httpservletrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "httpservletresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "handlerinterceptor", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "ioexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "mdc", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "span", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "target": "handlerinterceptor", "relation": "implements", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_setroutingdatasource", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_setroutingdatasource", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "target": "httpservletresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L43", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "target": "httpservletresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "target": "exception", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L79", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L85", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L85", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L85", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L46", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "getHeader", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "startsWith", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "setCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "setAttribute", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "current", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "debug", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "hasTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "setContentType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "writeValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "ObjectMapper", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "getOutputStream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "setCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "setAttribute", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "current", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", "callee": "debug", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", "callee": "remove", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "substring", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "indexOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "equalsIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "matches", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "indexOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "toLowerCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", "callee": "substring", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", "source_location": "L101", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/50e1630b82a52ba814d45c241bd3d5bc583e8917b018561dc2ca86917efe42ff.json b/graphify-out/cache/ast/v0.9.5/50e1630b82a52ba814d45c241bd3d5bc583e8917b018561dc2ca86917efe42ff.json new file mode 100644 index 0000000..1c3e5d1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/50e1630b82a52ba814d45c241bd3d5bc583e8917b018561dc2ca86917efe42ff.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "label": "UserController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "label": "UserController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L32", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "departmentrepository", "label": "DepartmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "teacherdepartmentassignmentrepository", "label": "TeacherDepartmentAssignmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "bcryptpasswordencoder", "label": "BCryptPasswordEncoder", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", "label": ".UserController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "label": ".getAllUsers()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L53", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "userresponse", "label": "UserResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "label": ".getTeachers()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L66", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "label": ".getTeachersByDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L77", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "label": ".createUser()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L99", "_callable": true}, {"id": "createuserrequest", "label": "CreateUserRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "label": ".deleteUser()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L175", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "label": ".restoreUser()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L189", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "label": ".getDepartmentHistory()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L200", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "label": ".transferTeacher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L218", "_callable": true}, {"id": "departmenttransferrequest", "label": "DepartmentTransferRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "transactional", "label": "Transactional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "label": ".getTeachersByDepartmentAtDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L262", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "label": ".toUserResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L277", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "label": ".toAssignmentDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L296", "_callable": true}, {"id": "teacherdepartmentassignment", "label": "TeacherDepartmentAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "teacherdepartmentassignmentdto", "label": "TeacherDepartmentAssignmentDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "label": ".teachersForDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L310", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "label": ".canAccessDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L327", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "authcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "createuserrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "departmenttransferrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "teacherdepartmentassignmentdto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "userresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "department", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "teacherdepartmentassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "departmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "teacherdepartmentassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "datetimeformat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "httpstatus", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "bcryptpasswordencoder", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "transactional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "linkedhashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "objects", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L37", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L38", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L39", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "teacherdepartmentassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L40", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "bcryptpasswordencoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L41", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", "target": "bcryptpasswordencoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", "target": "teacherdepartmentassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L53", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "target": "userresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L53", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L53", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L66", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "target": "userresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L66", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L66", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L66", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L77", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L77", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L77", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L77", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L77", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L99", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "target": "createuserrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L99", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L99", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L99", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L175", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L175", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L175", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L175", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L189", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L189", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L189", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L189", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L200", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L200", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L200", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L200", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L200", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L218", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L218", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "target": "departmenttransferrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L218", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L218", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L218", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L218", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L262", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L262", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L262", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L262", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L262", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L262", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L277", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L277", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "target": "userresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L277", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L296", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "target": "teacherdepartmentassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L296", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "target": "teacherdepartmentassignmentdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L296", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L310", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L310", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L310", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L310", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L310", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L327", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L327", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L80", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L85", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "target": "user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L152", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "target": "teacherdepartmentassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L161", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L172", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L197", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "target": "teacherdepartmentassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L247", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L259", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L267", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L272", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "target": "userresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L283", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "target": "teacherdepartmentassignmentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L297", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "callee": "findByStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "callee": "findByRoleAndStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "findByUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "encode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setPrimaryAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "setCreatedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L172", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L186", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L186", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L196", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L197", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L204", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L204", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "getCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "existsActiveAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L210", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L210", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L213", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L213", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L213", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", "callee": "findHistoryByTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L213", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L225", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L226", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L226", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L226", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L231", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L231", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L231", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L232", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "validFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "validFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "ifPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L237", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "findOpenPrimaryByTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L237", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "getValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "setValidTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "minusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "delete", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "setTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "setDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "setValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L250", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "setPrimaryAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "setComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L252", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "comment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L252", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "setCreatedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L254", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L256", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L256", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L257", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L259", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L268", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L268", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L271", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L278", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L284", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L285", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L286", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L286", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L287", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L288", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L291", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L291", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L292", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L292", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L298", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L300", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L300", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L301", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L301", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L302", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L302", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L303", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getValidTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L304", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getPrimaryAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L305", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", "callee": "getComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L306", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L311", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "findDepartmentTeachersAtDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L312", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L314", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L314", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L318", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L318", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "findByRoleAndDepartmentIdAndStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L320", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L322", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "putIfAbsent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L322", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L322", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "copyOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L324", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L324", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "callee": "getCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L328", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L330", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L331", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java", "source_location": "L331", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/5182ef59450c1341546df9c6a101a4245b5a434a920b99ac12b573a71bbceaed.json b/graphify-out/cache/ast/v0.9.5/5182ef59450c1341546df9c6a101a4245b5a434a920b99ac12b573a71bbceaed.json new file mode 100644 index 0000000..2946d8b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/5182ef59450c1341546df9c6a101a4245b5a434a920b99ac12b573a71bbceaed.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_java", "label": "TimeSlotScope.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "label": "TimeSlotScope", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L5", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotScope.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotScope.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotScope.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotScope.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotScope.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotScope.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getcode", "label": ".getCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setcode", "label": ".setCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode", "label": ".getApplyMode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setapplymode", "label": ".setApplyMode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdayofweek", "label": ".getDayOfWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdayofweek", "label": ".setDayOfWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope", "label": ".getSystemScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setsystemscope", "label": ".setSystemScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L75", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdisplayorder", "label": ".getDisplayOrder()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L79", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdisplayorder", "label": ".setDisplayOrder()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L83", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L39", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L55", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setapplymode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setapplymode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdayofweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdayofweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L63", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdayofweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdayofweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L71", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setsystemscope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setsystemscope", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L75", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdisplayorder", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdisplayorder", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L79", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdisplayorder", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdisplayorder", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", "source_location": "L83", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/53c1e6250ec2ad3fc4ac904bb7760adcb9ea16813e402426642d766a82e9a52a.json b/graphify-out/cache/ast/v0.9.5/53c1e6250ec2ad3fc4ac904bb7760adcb9ea16813e402426642d766a82e9a52a.json new file mode 100644 index 0000000..71e2cf6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/53c1e6250ec2ad3fc4ac904bb7760adcb9ea16813e402426642d766a82e9a52a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "label": "DepartmentWorkspaceController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "label": "DepartmentWorkspaceController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L29", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "subjectrepository", "label": "SubjectRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "subjectcommentrepository", "label": "SubjectCommentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "departmentrepository", "label": "DepartmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "teacherdepartmentassignmentrepository", "label": "TeacherDepartmentAssignmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "teachercreationrequestrepository", "label": "TeacherCreationRequestRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "schedulequeryservice", "label": "ScheduleQueryService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "label": ".DepartmentWorkspaceController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", "label": ".getSubjects()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L60", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "subject", "label": "Subject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "label": ".importSubjects()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L66", "_callable": true}, {"id": "createsubjectrequest", "label": "CreateSubjectRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "label": ".getComments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L99", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "label": ".addComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L110", "_callable": true}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "label": ".getTeachers()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L130", "_callable": true}, {"id": "userresponse", "label": "UserResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "label": ".addTeacherToDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "_callable": true}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "transactional", "label": "Transactional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "label": ".getTeacherRequests()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L187", "_callable": true}, {"id": "teachercreationrequestresponse", "label": "TeacherCreationRequestResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "label": ".createTeacherRequest()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L200", "_callable": true}, {"id": "createteachercreationrequest", "label": "CreateTeacherCreationRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "label": ".getSchedule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L237", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "label": ".toCommentDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L248", "_callable": true}, {"id": "subjectcomment", "label": "SubjectComment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "subjectcommentdto", "label": "SubjectCommentDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "label": ".toUserResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L260", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "label": ".toTeacherCreationRequestResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L273", "_callable": true}, {"id": "teachercreationrequest", "label": "TeacherCreationRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "label": ".toAssignmentMap()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L293", "_callable": true}, {"id": "teacherdepartmentassignment", "label": "TeacherDepartmentAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", "label": ".asLong()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L305", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "label": ".trimToNull()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L319", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "label": ".effectiveDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L327", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "label": ".canAccessDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L335", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "authcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "createteachercreationrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "createsubjectrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "subjectcommentdto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "teachercreationrequestresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "userresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "departmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "subjectcommentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "subjectrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "teachercreationrequestrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "teacherdepartmentassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "schedulequeryservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "datetimeformat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "transactional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "linkedhashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "objects", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L29", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L29", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L29", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L36", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "subjectcommentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L37", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L38", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L39", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "teacherdepartmentassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L40", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "teachercreationrequestrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L41", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "schedulequeryservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L42", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "subjectcommentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "teacherdepartmentassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "teachercreationrequestrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "schedulequeryservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L60", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L60", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L60", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L60", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L60", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L66", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "target": "createsubjectrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L66", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L66", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L66", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L99", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L99", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L99", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L99", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L110", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L110", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L110", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L110", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L110", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L110", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L110", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L130", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L130", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L130", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "target": "userresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L130", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L130", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L153", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L187", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L187", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L187", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "target": "teachercreationrequestresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L187", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L187", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L200", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "target": "createteachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L200", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L200", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L200", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L237", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L237", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L237", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L237", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L237", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L237", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L248", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "target": "subjectcomment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L248", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "target": "subjectcommentdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L248", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L260", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L260", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "target": "userresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L260", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L273", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "target": "teachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L273", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "target": "teachercreationrequestresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L273", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L293", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "target": "teacherdepartmentassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L293", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L293", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L293", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L293", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L305", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L305", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L305", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L319", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L319", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L319", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L327", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L327", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L327", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L335", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L335", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L76", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L113", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "subjectcomment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L120", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L127", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L132", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L157", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L158", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "teacherdepartmentassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L175", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L180", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L184", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L189", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L205", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L213", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "target": "teachercreationrequest", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L227", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L234", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L243", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "target": "subjectcommentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L250", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "target": "userresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L261", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "target": "teachercreationrequestresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L275", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", "callee": "findByDepartmentIdAndStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "findFirst", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "findByName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "setCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", "callee": "findBySubjectIdOrderByCreatedAtDesc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "setSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "setComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "ifPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "findByRoleAndStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "findDepartmentTeachersAtDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "findByRoleAndDepartmentIdAndStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "putIfAbsent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L160", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L160", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L160", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "existsActiveAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L172", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L172", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L172", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "setTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "setDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "setValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "setPrimaryAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "setComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "setCreatedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L182", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "callee": "findAllByOrderByCreatedAtDesc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", "callee": "findByDepartment_IdOrderByCreatedAtDesc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L207", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L207", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L207", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L210", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L213", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L214", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L215", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "findByUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "existsByUsernameAndStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "setDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "setFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L230", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L231", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "setComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L232", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "getComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L232", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "setRequestedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "currentUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L234", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L234", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "callee": "getAuthor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L252", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L252", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L254", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "callee": "getComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L255", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", "callee": "getCreatedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L256", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L262", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L265", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L266", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L267", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L274", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L278", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L279", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L281", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L282", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L283", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L283", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getRequestedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L284", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getCreatedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L285", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getReviewedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L286", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getReviewedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L287", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getReviewComment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L288", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", "callee": "getCreatedTeacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L289", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L294", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L295", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L295", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L296", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L296", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L296", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L297", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L297", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L297", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L298", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L298", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L298", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L300", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L300", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L301", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", "callee": "getPrimaryAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L301", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", "callee": "longValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L307", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L309", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", "callee": "parseLong", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L311", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L323", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L323", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L324", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "callee": "getCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L328", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L329", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L330", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L330", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L332", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "callee": "getCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L336", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L338", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L339", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L339", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", "source_location": "L339", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/547edbbfd01dab052ccf1993a1bdeb86eec7fe934c014b419983b502c1368fec.json b/graphify-out/cache/ast/v0.9.5/547edbbfd01dab052ccf1993a1bdeb86eec7fe934c014b419983b502c1368fec.json new file mode 100644 index 0000000..3335408 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/547edbbfd01dab052ccf1993a1bdeb86eec7fe934c014b419983b502c1368fec.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_java", "label": "DepartmentResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "label": "DepartmentResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", "label": ".DepartmentResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L9", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentname", "label": ".getDepartmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentname", "label": ".setDepartmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentcode", "label": ".getDepartmentCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentcode", "label": ".setDepartmentCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L35", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L9", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L9", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L9", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L23", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentcode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentcode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/55ecfe3e7a1349b06309844be4feec3682157cc9def223de02fedbe4c6df738a.json b/graphify-out/cache/ast/v0.9.5/55ecfe3e7a1349b06309844be4feec3682157cc9def223de02fedbe4c6df738a.json new file mode 100644 index 0000000..86f214a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/55ecfe3e7a1349b06309844be4feec3682157cc9def223de02fedbe4c6df738a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_java", "label": "TenantContext.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", "label": "TenantContext", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L7", "_callable": true}, {"id": "threadlocal", "label": "ThreadLocal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant", "label": ".getCurrentTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L11", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_setcurrenttenant", "label": ".setCurrentTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_clear", "label": ".clear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L19", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", "target": "threadlocal", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_setcurrenttenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_setcurrenttenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_clear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L12", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_clear", "callee": "remove", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", "source_location": "L20", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/59311a5b76a2fe30a70befcc102efb717b55781eea52a401286ad25d99c1a582.json b/graphify-out/cache/ast/v0.9.5/59311a5b76a2fe30a70befcc102efb717b55781eea52a401286ad25d99c1a582.json new file mode 100644 index 0000000..d79c0ce --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/59311a5b76a2fe30a70befcc102efb717b55781eea52a401286ad25d99c1a582.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java", "label": "TimeSlotDateAssignmentDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", "label": "TimeSlotDateAssignmentDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/5f0f0527f01153be5b9357670a8d007087a629ed52603e3fe0187059e7f903e2.json b/graphify-out/cache/ast/v0.9.5/5f0f0527f01153be5b9357670a8d007087a629ed52603e3fe0187059e7f903e2.json new file mode 100644 index 0000000..af950fc --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/5f0f0527f01153be5b9357670a8d007087a629ed52603e3fe0187059e7f903e2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "label": "StudentGroupLifecycleServiceTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", "label": "StudentGroupLifecycleServiceTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L17", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "label": ".futureGroupIsSelectableButDoesNotHaveScheduleBeforeStudyStart()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L19", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "label": ".groupAfterCalendarCourseLimitIsGraduatedAndUnavailableForSelection()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L30", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "label": ".serviceWithAssignments()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L41", "_callable": true}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java"}, {"id": "studentgrouplifecycleservice", "label": "StudentGroupLifecycleService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "label": ".group()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L48", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", "label": ".assignment()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L56", "_callable": true}, {"id": "studentgroupcalendarassignment", "label": "StudentGroupCalendarAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "academiccalendar", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "studentgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "studentgroupcalendarassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "studentgroupstudystate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "studentgroupcalendarassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "mock", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "when", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L30", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L41", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "target": "studentgrouplifecycleservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L41", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L48", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L48", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", "target": "studentgroupcalendarassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L56", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "target": "studentgrouplifecycleservice", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "target": "studentgroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L49", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", "target": "studentgroupcalendarassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L59", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L23", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "getStudyState", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "isTrue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "isAvailableForSelection", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "mayHaveScheduleInRange", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", "callee": "plusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "getStudyState", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "isAvailableForSelection", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "mayHaveScheduleInRange", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", "callee": "plusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L42", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "callee": "findByGroupIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "callee": "setId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", "callee": "setYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", "callee": "AcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", "callee": "setCourseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", "callee": "setAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", "source_location": "L60", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/6547a0b78f8dbf1cbde5c1b6aef7bde174b5c01ceaf9c399eb05b5e1bac74ddd.json b/graphify-out/cache/ast/v0.9.5/6547a0b78f8dbf1cbde5c1b6aef7bde174b5c01ceaf9c399eb05b5e1bac74ddd.json new file mode 100644 index 0000000..64eaf51 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/6547a0b78f8dbf1cbde5c1b6aef7bde174b5c01ceaf9c399eb05b5e1bac74ddd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_java", "label": "SubjectResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "label": "SubjectResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubjectResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubjectResponse.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", "label": ".SubjectResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L10", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getcode", "label": ".getCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L31", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L19", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L23", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/676d77671a8b80acbaf0ce3e22c67c56f408b90cb3ecc32013855fd56b7e2582.json b/graphify-out/cache/ast/v0.9.5/676d77671a8b80acbaf0ce3e22c67c56f408b90cb3ecc32013855fd56b7e2582.json new file mode 100644 index 0000000..d36c464 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/676d77671a8b80acbaf0ce3e22c67c56f408b90cb3ecc32013855fd56b7e2582.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "label": "TeacherDepartmentAssignmentRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "label": "TeacherDepartmentAssignmentRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L12", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "teacherdepartmentassignment", "label": "TeacherDepartmentAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", "label": ".findHistoryByTeacherId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L14", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", "label": ".findOpenPrimaryByTeacherId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L24", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", "label": ".findDepartmentTeachersAtDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L35", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", "label": ".existsActiveAssignment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L50", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "target": "teacherdepartmentassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "target": "teacherdepartmentassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L14", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", "target": "teacherdepartmentassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L14", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L24", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L24", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", "target": "teacherdepartmentassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L24", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L24", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", "target": "teacherdepartmentassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L35", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L35", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", "source_location": "L50", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/6bfedbeef2e8e301e490a53364c0a9d1c6a85300d5e4d808170f3eaffd85bd70.json b/graphify-out/cache/ast/v0.9.5/6bfedbeef2e8e301e490a53364c0a9d1c6a85300d5e4d808170f3eaffd85bd70.json new file mode 100644 index 0000000..152c976 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/6bfedbeef2e8e301e490a53364c0a9d1c6a85300d5e4d808170f3eaffd85bd70.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "label": "RefreshTokenServiceTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "label": "RefreshTokenServiceTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L21", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "label": ".storesOnlyTokenHash()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L23", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "label": ".rotatesRefreshTokenAndRejectsReplay()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L41", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "label": ".rejectsTokenFromDifferentTenant()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L62", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "label": ".logoutRevokesActiveToken()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L73", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "label": ".properties()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L88", "_callable": true}, {"id": "jwtproperties", "label": "JwtProperties", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "label": ".activeToken()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L94", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java"}, {"id": "authrefreshtoken", "label": "AuthRefreshToken", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "label": ".user()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L104", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "authrefreshtoken", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "authrefreshtokenrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "argumentcaptor", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "duration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "any", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "mock", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "times", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "verify", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "when", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L23", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L41", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L62", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L73", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L73", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "target": "jwtproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L88", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L94", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "target": "authrefreshtoken", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L94", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L104", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L104", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L65", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L77", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "target": "jwtproperties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L89", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "target": "authrefreshtoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L95", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L96", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "target": "user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L105", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "thenAnswer", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "getArgument", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "RefreshTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "createSession", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "forClass", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "verify", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "capture", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "isNotEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "getTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "hasSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "getTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "getTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "getExpiresAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "thenAnswer", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "getArgument", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "RefreshTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "hashToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "findByTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "hashToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "rotate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "isNotEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "refreshToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "isNotNull", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "getRevokedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "hasSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "getRotatedToTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "rotate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "verify", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", "callee": "times", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "RefreshTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "findByTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "hashToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "hashToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", "callee": "rotate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "thenAnswer", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "getArgument", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "RefreshTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "hashToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "findByTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "hashToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "revoke", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "isNotNull", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "getRevokedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", "callee": "verify", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "callee": "setRefreshTtl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", "callee": "ofDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "setUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "setTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "setTokenHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "setIssuedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "minusMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "setExpiresAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "plusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "callee": "setId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "callee": "setRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "callee": "setFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", "callee": "setPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", "source_location": "L112", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/6d3d4c19048a0d015fbb7bcfce2d32336419f70fc89f48fed9b665f33561a913.json b/graphify-out/cache/ast/v0.9.5/6d3d4c19048a0d015fbb7bcfce2d32336419f70fc89f48fed9b665f33561a913.json new file mode 100644 index 0000000..9ca428e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/6d3d4c19048a0d015fbb7bcfce2d32336419f70fc89f48fed9b665f33561a913.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java", "label": "AcademicCalendarSubjectRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", "label": "AcademicCalendarSubjectRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L11", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "academiccalendarsubject", "label": "AcademicCalendarSubject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", "label": ".findByCalendarIdWithSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L13", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", "label": ".findByCalendarIdInWithSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L23", "_callable": true}, {"id": "collection", "label": "Collection", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_deletebyacademiccalendar_id", "label": ".deleteByAcademicCalendar_Id()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L33", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java", "target": "academiccalendarsubject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java", "target": "collection", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", "target": "academiccalendarsubject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", "target": "academiccalendarsubject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L13", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", "target": "collection", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L23", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", "target": "academiccalendarsubject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L23", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_deletebyacademiccalendar_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_deletebyacademiccalendar_id", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", "source_location": "L33", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/70bb21b1cb7dea8edbad217bf6305b6261a49ce5c81a41c78820e9315b899c64.json b/graphify-out/cache/ast/v0.9.5/70bb21b1cb7dea8edbad217bf6305b6261a49ce5c81a41c78820e9315b899c64.json new file mode 100644 index 0000000..acb2746 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/70bb21b1cb7dea8edbad217bf6305b6261a49ce5c81a41c78820e9315b899c64.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "label": "EquipmentController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "label": "EquipmentController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L14", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "equipmentrepository", "label": "EquipmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_equipmentcontroller", "label": ".EquipmentController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L21", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", "label": ".getAllEquipments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L25", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "equipment", "label": "Equipment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "label": ".createEquipment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L30", "_callable": true}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "label": ".deleteEquipment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L47", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "label": ".restoreEquipment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L58", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "equipment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "equipmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "equipmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_equipmentcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_equipmentcontroller", "target": "equipmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L25", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L25", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L25", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L30", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L30", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L30", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L30", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L30", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L47", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L58", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L58", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "target": "equipment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L40", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", "callee": "findByStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "findByName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L42", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java", "source_location": "L66", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/7478a9b9d307de997413b9cb7cb10697dc89bee2ea2687a706329ce59b8de678.json b/graphify-out/cache/ast/v0.9.5/7478a9b9d307de997413b9cb7cb10697dc89bee2ea2687a706329ce59b8de678.json new file mode 100644 index 0000000..6a59809 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/7478a9b9d307de997413b9cb7cb10697dc89bee2ea2687a706329ce59b8de678.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_java", "label": "UserRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "label": "UserRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L10", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/UserRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/UserRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", "label": ".findByUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L12", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/UserRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/UserRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", "label": ".findByRole()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L14", "_callable": true}, {"id": "role", "label": "Role", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/UserRepository.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/UserRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", "label": ".findByRoleAndDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L16", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", "label": ".findByStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L18", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", "label": ".findByRoleAndStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L20", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", "label": ".findByRoleAndDepartmentIdAndStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L22", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L14", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L14", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L16", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L16", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L18", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L18", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L18", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L20", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L20", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L22", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", "source_location": "L22", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/74c37a314146e6c69f7b84e526c9d33099e5ca779ada943e24e8c35a8247a9cd.json b/graphify-out/cache/ast/v0.9.5/74c37a314146e6c69f7b84e526c9d33099e5ca779ada943e24e8c35a8247a9cd.json new file mode 100644 index 0000000..34e0195 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/74c37a314146e6c69f7b84e526c9d33099e5ca779ada943e24e8c35a8247a9cd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_java", "label": "AcademicYearRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", "label": "AcademicYearRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L8", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "academicyear", "label": "AcademicYear", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", "label": ".findByTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L10", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_java", "target": "academicyear", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/78c00b5cb43d8fa22d2feb0fa0d9b5211b8cbe442bebc4a340d8e565ce8948b1.json b/graphify-out/cache/ast/v0.9.5/78c00b5cb43d8fa22d2feb0fa0d9b5211b8cbe442bebc4a340d8e565ce8948b1.json new file mode 100644 index 0000000..753c7ae --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/78c00b5cb43d8fa22d2feb0fa0d9b5211b8cbe442bebc4a340d8e565ce8948b1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java", "label": "CreateTeacherCreationRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "label": "CreateTeacherCreationRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L11", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setusername", "label": ".setUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getfullname", "label": ".getFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setfullname", "label": ".setFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getjobtitle", "label": ".getJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setjobtitle", "label": ".setJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getcomment", "label": ".getComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setcomment", "label": ".setComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L47", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L19", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/7b74a5e4c5813c385d0a032e78215d517a23b84548c3520f2dcbeef3c1cb2a71.json b/graphify-out/cache/ast/v0.9.5/7b74a5e4c5813c385d0a032e78215d517a23b84548c3520f2dcbeef3c1cb2a71.json new file mode 100644 index 0000000..b654583 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/7b74a5e4c5813c385d0a032e78215d517a23b84548c3520f2dcbeef3c1cb2a71.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "label": "UserControllerTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest", "label": "UserControllerTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L20", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "label": ".teachersUseUnifiedUserResponseMapping()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L22", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "label": ".user()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L53", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java"}, {"id": "role", "label": "Role", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "userresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "department", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "departmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "teacherdepartmentassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "mock", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "when", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L22", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L53", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "target": "user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L54", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "UserController", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "findDepartmentTeachersAtDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "eq", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "findByRoleAndDepartmentIdAndStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "Department", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "getTeachersByDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "value", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "getStatusCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "getBody", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "hasSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "callee": "setId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "callee": "setRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "callee": "setFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", "source_location": "L60", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/7bae527623bd4ee91f0d804ba7678d3080ce4138160e55670a2284a82bce2585.json b/graphify-out/cache/ast/v0.9.5/7bae527623bd4ee91f0d804ba7678d3080ce4138160e55670a2284a82bce2585.json new file mode 100644 index 0000000..1a169e2 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/7bae527623bd4ee91f0d804ba7678d3080ce4138160e55670a2284a82bce2585.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java", "label": "TimeSlotScopeRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "label": "TimeSlotScopeRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "timeslotscope", "label": "TimeSlotScope", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc", "label": ".findAllByOrderByDisplayOrderAscNameAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L11", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", "label": ".findByCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L13", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", "label": ".findFirstByApplyModeOrderByDisplayOrderAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", "label": ".findByApplyModeAndDayOfWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L17", "_callable": true}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java", "target": "timeslotscope", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L15", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L17", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L17", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L17", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", "source_location": "L17", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/7c20e6b22227e83ea48959d0db41a99cfea9e16c6a463fd44b2256d4b67e69e6.json b/graphify-out/cache/ast/v0.9.5/7c20e6b22227e83ea48959d0db41a99cfea9e16c6a463fd44b2256d4b67e69e6.json new file mode 100644 index 0000000..0ea553c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/7c20e6b22227e83ea48959d0db41a99cfea9e16c6a463fd44b2256d4b67e69e6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_java", "label": "LessonTypesRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", "label": "LessonTypesRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", "source_location": "L6", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "lessontype", "label": "LessonType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_java", "target": "lessontype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", "target": "lessontype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", "source_location": "L6", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", "source_location": "L6", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/7e7a69ed58f61b3f29394a9251f4964f99d2dcdaaf2bd02bcaffe5a0af80dac9.json b/graphify-out/cache/ast/v0.9.5/7e7a69ed58f61b3f29394a9251f4964f99d2dcdaaf2bd02bcaffe5a0af80dac9.json new file mode 100644 index 0000000..9181c0e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/7e7a69ed58f61b3f29394a9251f4964f99d2dcdaaf2bd02bcaffe5a0af80dac9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_java", "label": "LoginRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "label": "LoginRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/LoginRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_loginrequest", "label": ".LoginRequest()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L8", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L11", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setusername", "label": ".setUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getpassword", "label": ".getPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setpassword", "label": ".setPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L23", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_loginrequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L19", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/80693ca800f2b820e42720530e52cf6eaa5cd020e2690a75d0ccf0cb4d6c23be.json b/graphify-out/cache/ast/v0.9.5/80693ca800f2b820e42720530e52cf6eaa5cd020e2690a75d0ccf0cb4d6c23be.json new file mode 100644 index 0000000..008aa88 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/80693ca800f2b820e42720530e52cf6eaa5cd020e2690a75d0ccf0cb4d6c23be.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "label": "ScheduleController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "label": "ScheduleController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L16", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}, {"id": "schedulequeryservice", "label": "ScheduleQueryService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_schedulecontroller", "label": ".ScheduleController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L25", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "label": ".getSchedule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L29", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "renderedlessondto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "schedulequeryservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "datetimeformat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L16", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L16", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L16", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "target": "schedulequeryservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_schedulecontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_schedulecontroller", "target": "schedulequeryservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L29", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L29", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "source_location": "L44", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/82e38ae576fefa926edbbcd346d096ecaa0d8df9e419f3d068f8e9280cf923f3.json b/graphify-out/cache/ast/v0.9.5/82e38ae576fefa926edbbcd346d096ecaa0d8df9e419f3d068f8e9280cf923f3.json new file mode 100644 index 0000000..871fb75 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/82e38ae576fefa926edbbcd346d096ecaa0d8df9e419f3d068f8e9280cf923f3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_java", "label": "ScheduleRuleSlot.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "label": "ScheduleRuleSlot", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L9", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "schedulerule", "label": "ScheduleRule", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "scheduleparity", "label": "ScheduleParity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "timeslot", "label": "TimeSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "set", "label": "Set", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "subgroup", "label": "Subgroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "classroom", "label": "Classroom", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "lessontype", "label": "LessonType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule", "label": ".getScheduleRule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setschedulerule", "label": ".setScheduleRule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getdayofweek", "label": ".getDayOfWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setdayofweek", "label": ".setDayOfWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L75", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getparity", "label": ".getParity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L79", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setparity", "label": ".setParity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L83", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot", "label": ".getTimeSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L87", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_settimeslot", "label": ".setTimeSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L91", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", "label": ".getSubgroupId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L95", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", "label": ".getSubgroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L99", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroup", "label": ".setSubgroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L103", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups", "label": ".getSubgroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L110", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", "label": ".setSubgroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L114", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", "label": ".getSubgroupIds()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L121", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", "label": ".getSubgroupNames()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L127", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getteacher", "label": ".getTeacher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L133", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setteacher", "label": ".setTeacher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L137", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom", "label": ".getClassroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L141", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setclassroom", "label": ".setClassroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L145", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessontype", "label": ".getLessonType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L149", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessontype", "label": ".setLessonType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L153", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessonformat", "label": ".getLessonFormat()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L157", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessonformat", "label": ".setLessonFormat()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L161", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_java", "target": "linkedhashset", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_java", "target": "set", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L9", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L9", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L40", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L44", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "lessontype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L48", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L52", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L55", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L63", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setschedulerule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setschedulerule", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getdayofweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getdayofweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L71", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setdayofweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setdayofweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L75", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getparity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getparity", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L79", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setparity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setparity", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L83", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L87", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L87", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_settimeslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L91", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_settimeslot", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L91", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L95", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L95", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L99", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L99", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L103", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroup", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L103", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L110", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L110", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L110", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L114", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L114", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L114", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L121", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L121", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L121", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L127", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L127", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L127", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getteacher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L133", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getteacher", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L133", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setteacher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L137", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setteacher", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L137", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L141", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L141", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setclassroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L145", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setclassroom", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L145", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessontype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L149", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessontype", "target": "lessontype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L149", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessontype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L153", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessontype", "target": "lessontype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L153", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessonformat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L157", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessonformat", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L157", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessonformat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L161", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessonformat", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L161", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", "callee": "findFirst", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", "callee": "findFirst", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroup", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroup", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", "callee": "addAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "source_location": "L128", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/835b4f67d6e7d4be7ed949190f1e28ac9ace8d8b1e46838ff4da53dd2f0deace.json b/graphify-out/cache/ast/v0.9.5/835b4f67d6e7d4be7ed949190f1e28ac9ace8d8b1e46838ff4da53dd2f0deace.json new file mode 100644 index 0000000..a44be62 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/835b4f67d6e7d4be7ed949190f1e28ac9ace8d8b1e46838ff4da53dd2f0deace.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_java", "label": "RefreshTokenRotation.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", "label": "RefreshTokenRotation", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", "source_location": "L5", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", "source_location": "L5", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/8607c4cafdfcf4fa0405efa4b186a4e7d74f148ef2fdd7a6ae48ebb2f9ffbdc2.json b/graphify-out/cache/ast/v0.9.5/8607c4cafdfcf4fa0405efa4b186a4e7d74f148ef2fdd7a6ae48ebb2f9ffbdc2.json new file mode 100644 index 0000000..488143a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/8607c4cafdfcf4fa0405efa4b186a4e7d74f148ef2fdd7a6ae48ebb2f9ffbdc2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java", "label": "CreateSubjectRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "label": "CreateSubjectRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", "label": ".CreateSubjectRequest()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L10", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getcode", "label": ".getCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setcode", "label": ".setCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L47", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L19", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/86432d09fd4e072147f125d971271298289a187b05deed370887df035bc6215e.json b/graphify-out/cache/ast/v0.9.5/86432d09fd4e072147f125d971271298289a187b05deed370887df035bc6215e.json new file mode 100644 index 0000000..ad974c6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/86432d09fd4e072147f125d971271298289a187b05deed370887df035bc6215e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "label": "TeacherSubjectController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "label": "TeacherSubjectController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L20", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "teachersubjectrepository", "label": "TeacherSubjectRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "subjectrepository", "label": "SubjectRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", "label": ".TeacherSubjectController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L29", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "label": ".getAll()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L37", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "teachersubjectresponse", "label": "TeacherSubjectResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "label": ".create()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L50", "_callable": true}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "label": ".delete()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L81", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "label": ".canManage()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L102", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}, {"id": "subject", "label": "Subject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "authcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "teachersubjectresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "subject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "teachersubject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "teachersubjectid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "subjectrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "teachersubjectrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L20", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L20", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L20", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "teachersubjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", "target": "teachersubjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L37", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "target": "teachersubjectresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L37", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L37", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L50", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L50", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L50", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L50", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L81", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L81", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L81", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L81", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L81", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L81", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L102", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L102", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "target": "teachersubjectresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L95", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "getUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "getUserId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L42", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "getUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "getSubjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "TeacherSubjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "TeacherSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "TeacherSubjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "getUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "deleteById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "callee": "getCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", "source_location": "L115", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/88a3f7b55ff957721d56dbb9303afdb73df99284f492261408c4c7ce7af5209a.json b/graphify-out/cache/ast/v0.9.5/88a3f7b55ff957721d56dbb9303afdb73df99284f492261408c4c7ce7af5209a.json new file mode 100644 index 0000000..39b73d8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/88a3f7b55ff957721d56dbb9303afdb73df99284f492261408c4c7ce7af5209a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java", "label": "JwtProperties.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "label": "JwtProperties", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L9", "_callable": true}, {"id": "component", "label": "Component", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java"}, {"id": "configurationproperties", "label": "ConfigurationProperties", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java"}, {"id": "duration", "label": "Duration", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getsecret", "label": ".getSecret()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setsecret", "label": ".setSecret()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getaccessttl", "label": ".getAccessTtl()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setaccessttl", "label": ".setAccessTtl()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl", "label": ".getRefreshTtl()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshttl", "label": ".setRefreshTtl()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename", "label": ".getRefreshCookieName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiename", "label": ".setRefreshCookieName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_isrefreshcookiesecure", "label": ".isRefreshCookieSecure()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiesecure", "label": ".setRefreshCookieSecure()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_secretbytes", "label": ".secretBytes()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L59", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java", "target": "configurationproperties", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java", "target": "component", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java", "target": "standardcharsets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java", "target": "duration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "component", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L9", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "configurationproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L9", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "duration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "duration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getsecret", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getsecret", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L19", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setsecret", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setsecret", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getaccessttl", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getaccessttl", "target": "duration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setaccessttl", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setaccessttl", "target": "duration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl", "target": "duration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshttl", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshttl", "target": "duration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiename", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiename", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_isrefreshcookiesecure", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiesecure", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_secretbytes", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L59", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_secretbytes", "callee": "getBytes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_secretbytes", "callee": "IllegalStateException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", "source_location": "L62", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/8922225fc0dbe262cc1dd7595a9dcc02b9cb6661b6315b19eca6897b7abdfbaf.json b/graphify-out/cache/ast/v0.9.5/8922225fc0dbe262cc1dd7595a9dcc02b9cb6661b6315b19eca6897b7abdfbaf.json new file mode 100644 index 0000000..944eb33 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/8922225fc0dbe262cc1dd7595a9dcc02b9cb6661b6315b19eca6897b7abdfbaf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "label": "AcademicCalendarAdminController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "label": "AcademicCalendarAdminController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L15", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "academicyearrepository", "label": "AcademicYearRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "semesterrepository", "label": "SemesterRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "academiccalendaractivitytyperepository", "label": "AcademicCalendarActivityTypeRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "academiccalendardayrepository", "label": "AcademicCalendarDayRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", "label": ".AcademicCalendarAdminController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L26", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "label": ".getYears()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L38", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "academicyeardto", "label": "AcademicYearDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "label": ".createYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L46", "_callable": true}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "label": ".updateYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L61", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "label": ".deleteYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L78", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "label": ".getSemesters()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L88", "_callable": true}, {"id": "semesterdto", "label": "SemesterDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "label": ".createSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L95", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "label": ".updateSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L116", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", "label": ".getActivityTypes()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L132", "_callable": true}, {"id": "academiccalendaractivitytypedto", "label": "AcademicCalendarActivityTypeDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "label": ".createActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L139", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "label": ".updateActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L154", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "label": ".deleteActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L175", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "label": ".validateYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L188", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "label": ".validateSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L201", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "label": ".validateActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L214", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "label": ".applyYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L227", "_callable": true}, {"id": "academicyear", "label": "AcademicYear", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "label": ".applySemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L233", "_callable": true}, {"id": "semester", "label": "Semester", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "label": ".applyActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L239", "_callable": true}, {"id": "academiccalendaractivitytype", "label": "AcademicCalendarActivityType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "label": ".toAcademicYearDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L252", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "label": ".toSemesterDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L260", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "label": ".toActivityTypeDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L271", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "dto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "schedulegeneratorservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "comparator", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "academicyearrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "semesterrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "academiccalendaractivitytyperepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "academiccalendardayrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "academicyearrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "semesterrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "academiccalendaractivitytyperepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "academiccalendardayrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L38", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "target": "academicyeardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L38", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L38", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "target": "academicyeardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L46", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L46", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L46", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L61", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L61", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "target": "academicyeardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L61", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L61", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L61", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L78", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L78", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L78", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L88", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "target": "semesterdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L88", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L88", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L95", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L95", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "target": "semesterdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L95", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L95", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L95", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L116", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L116", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "target": "semesterdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L116", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L116", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L116", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L132", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L132", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", "target": "academiccalendaractivitytypedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L132", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L132", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L139", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "target": "academiccalendaractivitytypedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L139", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L139", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L139", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L154", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L154", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "target": "academiccalendaractivitytypedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L154", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L154", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L154", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L175", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L175", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L175", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L175", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L188", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "target": "academicyeardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L188", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L188", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L201", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "target": "semesterdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L201", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L201", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L214", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "target": "academiccalendaractivitytypedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L214", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L214", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L227", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L227", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "target": "academicyeardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L227", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L233", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L233", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "target": "semesterdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L233", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L239", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L239", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "target": "academiccalendaractivitytypedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L239", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L252", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L252", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "target": "academicyeardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L252", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L260", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L260", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "target": "semesterdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L260", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L271", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L271", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "target": "academiccalendaractivitytypedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L271", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "target": "academicyear", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L73", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L101", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "target": "semester", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L109", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L111", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L113", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L122", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L127", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L129", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L141", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "target": "academiccalendaractivitytype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L148", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L149", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L151", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L161", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L170", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L172", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "target": "academicyeardto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L257", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "target": "semesterdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L261", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "target": "academiccalendaractivitytypedto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L272", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "findByTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "title", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "callee": "deleteById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", "callee": "findByAcademicYearIdOrderByStartDateAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "findByAcademicYearIdAndSemesterType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "semesterType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "setAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", "callee": "findAllByOrderByDisplayOrderAscCodeAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "findByCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "code", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L151", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L151", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "findByCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "code", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L172", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L172", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "existsByActivityTypeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "deleteById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "callee": "title", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "callee": "title", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "callee": "startDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L192", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "callee": "endDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L192", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "callee": "endDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", "callee": "startDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "callee": "semesterType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L202", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "callee": "startDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "callee": "endDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "callee": "endDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", "callee": "startDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "callee": "code", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "callee": "code", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "callee": "setTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "callee": "title", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "callee": "setStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "callee": "startDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "callee": "setEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L230", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", "callee": "endDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L230", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "callee": "setSemesterType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L234", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "callee": "semesterType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L234", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "callee": "setStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "callee": "startDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "callee": "setEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", "callee": "endDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "setCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "code", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "setAllowSchedule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L242", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L242", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "allowSchedule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L242", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "setColorCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "colorCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "colorCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L245", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "colorCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L245", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "setDisplayOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L246", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "displayOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L246", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "displayOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L246", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "setDescription", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "description", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "description", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", "callee": "description", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "callee": "findByAcademicYearIdOrderByStartDateAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L257", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "callee": "getTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L257", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L257", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", "callee": "getEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L257", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L262", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "callee": "getTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "callee": "getSemesterType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L265", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L266", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", "callee": "getEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L267", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L273", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L274", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "callee": "getAllowSchedule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "callee": "getColorCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "callee": "getDisplayOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L278", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", "callee": "getDescription", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", "source_location": "L279", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/8af90083420ca5d8a3fea2fce3da05eb0d1a6724b1aeb40099d38fe695abfc58.json b/graphify-out/cache/ast/v0.9.5/8af90083420ca5d8a3fea2fce3da05eb0d1a6724b1aeb40099d38fe695abfc58.json new file mode 100644 index 0000000..39ce383 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/8af90083420ca5d8a3fea2fce3da05eb0d1a6724b1aeb40099d38fe695abfc58.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_java", "label": "AcademicYearDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", "label": "AcademicYearDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L6", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java"}, {"id": "semesterdto", "label": "SemesterDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", "target": "semesterdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/8bc030df9b291691f2cc470f0c15bf0495c0a0b204ab8e1880ce13e14344fbb2.json b/graphify-out/cache/ast/v0.9.5/8bc030df9b291691f2cc470f0c15bf0495c0a0b204ab8e1880ce13e14344fbb2.json new file mode 100644 index 0000000..875700f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/8bc030df9b291691f2cc470f0c15bf0495c0a0b204ab8e1880ce13e14344fbb2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_java", "label": "AppConfig.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig", "label": "AppConfig", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L7", "_callable": true}, {"id": "configuration", "label": "Configuration", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/AppConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", "label": ".passwordEncoder()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L10", "_callable": true}, {"id": "bcryptpasswordencoder", "label": "BCryptPasswordEncoder", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/AppConfig.java"}, {"id": "bean", "label": "Bean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/AppConfig.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_java", "target": "bean", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_java", "target": "configuration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_java", "target": "bcryptpasswordencoder", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig", "target": "configuration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", "target": "bcryptpasswordencoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", "target": "bean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L10", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", "target": "bcryptpasswordencoder", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", "source_location": "L12", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/8caac7552948dc70f7ac2fd54032b9df6a7a5b8d8a9f4dad432092b2402b63e4.json b/graphify-out/cache/ast/v0.9.5/8caac7552948dc70f7ac2fd54032b9df6a7a5b8d8a9f4dad432092b2402b63e4.json new file mode 100644 index 0000000..93fd84b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/8caac7552948dc70f7ac2fd54032b9df6a7a5b8d8a9f4dad432092b2402b63e4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "label": "DepartmentWorkspaceControllerTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", "label": "DepartmentWorkspaceControllerTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L33", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_clearauthcontext", "label": ".clearAuthContext()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L35", "_callable": true}, {"id": "aftereach", "label": "AfterEach", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "label": ".commentsRejectSubjectWithoutDepartmentForDepartmentUserWithoutNpe()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L40", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "label": ".teachersUseAssignmentsAndFallbackWithoutDuplicates()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "label": ".departmentCanAddExistingTeacherAsSecondaryAssignment()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L89", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "label": ".assignment()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L122", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java"}, {"id": "teacherdepartmentassignment", "label": "TeacherDepartmentAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "label": ".user()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L131", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "authcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "authenticateduser", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "userresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "department", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "subject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "teacherdepartmentassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "subjectcommentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "subjectrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "departmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "teachercreationrequestrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "teacherdepartmentassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "schedulequeryservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "aftereach", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "argumentcaptor", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "mock", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "verify", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "when", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_clearauthcontext", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_clearauthcontext", "target": "aftereach", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L35", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L40", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L63", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L89", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L89", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L122", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L122", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L122", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "target": "teacherdepartmentassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L122", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L131", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L131", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L131", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L131", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L131", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L131", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "target": "teacherdepartmentassignment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L124", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "target": "user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L132", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_clearauthcontext", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L42", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "Subject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "setId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "DepartmentWorkspaceController", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "setCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "AuthenticatedUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "getComments", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "value", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", "callee": "getStatusCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "findDepartmentTeachersAtDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "findByRoleAndDepartmentIdAndStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "DepartmentWorkspaceController", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "getTeachers", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "containsExactly", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "extracting", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "Department", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "existsActiveAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "DepartmentWorkspaceController", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "setCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "AuthenticatedUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "addTeacherToDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "value", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "getStatusCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "forClass", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "verify", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "capture", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "getDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "getPrimaryAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", "callee": "getCreatedBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "callee": "Department", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "callee": "setTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "callee": "setDepartment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "callee": "setValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "callee": "setId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "callee": "setRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "callee": "setFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", "source_location": "L138", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/8da9ecee1ec08c5bb553614a6ed0eda974ab54a99660514c5a07b8d9344e5ac6.json b/graphify-out/cache/ast/v0.9.5/8da9ecee1ec08c5bb553614a6ed0eda974ab54a99660514c5a07b8d9344e5ac6.json new file mode 100644 index 0000000..645d857 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/8da9ecee1ec08c5bb553614a6ed0eda974ab54a99660514c5a07b8d9344e5ac6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_java", "label": "RequireRoles.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L10", "_callable": true}, {"id": "retention", "label": "Retention", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java"}, {"id": "target", "label": "Target", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_java", "target": "elementtype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_java", "target": "retention", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_java", "target": "retentionpolicy", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_java", "target": "target", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", "target": "retention", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L10", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", "target": "target", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "source_location": "L10", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/8ec23ac61eff33d020a3cb0f7f5721c0f40a9642fc4a845a9a76764ff443e856.json b/graphify-out/cache/ast/v0.9.5/8ec23ac61eff33d020a3cb0f7f5721c0f40a9642fc4a845a9a76764ff443e856.json new file mode 100644 index 0000000..e76ac63 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/8ec23ac61eff33d020a3cb0f7f5721c0f40a9642fc4a845a9a76764ff443e856.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "label": "GroupController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "label": "GroupController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L37", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "grouprepository", "label": "GroupRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "educationformrepository", "label": "EducationFormRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "specialtiesrepository", "label": "SpecialtiesRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "specialtyprofilerepository", "label": "SpecialtyProfileRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "academicyearrepository", "label": "AcademicYearRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "academiccalendarrepository", "label": "AcademicCalendarRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "academiccalendarsubjectrepository", "label": "AcademicCalendarSubjectRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "studentgroupcalendarassignmentrepository", "label": "StudentGroupCalendarAssignmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "studentgrouplifecycleservice", "label": "StudentGroupLifecycleService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "label": ".GroupController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "label": ".getAllGroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L77", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "groupresponse", "label": "GroupResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "label": ".getGroupsByDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L99", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "label": ".createGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L127", "_callable": true}, {"id": "creategrouprequest", "label": "CreateGroupRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "label": ".updateGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L173", "_callable": true}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "label": ".deleteGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L223", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "label": ".restoreGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L238", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "label": ".validateGroupRequest()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L250", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "label": ".validationError()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L275", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "label": ".mapToResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L280", "_callable": true}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "label": ".getCalendarAssignments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L309", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "label": ".saveCalendarAssignment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L322", "_callable": true}, {"id": "groupcalendarassignmentdto", "label": "GroupCalendarAssignmentDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "label": ".deleteCalendarAssignment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L368", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "label": ".loadCalendarSubjectsByCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L380", "_callable": true}, {"id": "studentgroupcalendarassignment", "label": "StudentGroupCalendarAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "academiccalendarsubjectdto", "label": "AcademicCalendarSubjectDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "label": ".toAssignmentDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L395", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "label": ".toCalendarSubjectDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L417", "_callable": true}, {"id": "academiccalendarsubject", "label": "AcademicCalendarSubject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "academiccalendarsubjectdto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "creategrouprequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "groupcalendarassignmentdto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "groupresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "academiccalendar", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "academiccalendarsubject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "academicyear", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "educationform", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "speciality", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "specialtyprofile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "subject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "studentgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "studentgroupcalendarassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "studentgroupstudystate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "schedulegeneratorservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "studentgrouplifecycleservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "courseandsemestercalculator", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "httpstatus", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "collections", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "set", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "collectors", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L37", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L37", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L37", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L42", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L44", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "educationformrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L45", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "specialtiesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L46", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "specialtyprofilerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L47", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "academicyearrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L48", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "academiccalendarrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L49", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "academiccalendarsubjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L50", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "studentgroupcalendarassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L51", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L52", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "studentgrouplifecycleservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L53", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "educationformrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "specialtiesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "specialtyprofilerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "academicyearrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "academiccalendarrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "academiccalendarsubjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "studentgroupcalendarassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", "target": "studentgrouplifecycleservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L77", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L77", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "target": "groupresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L77", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L77", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L99", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L99", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L99", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L99", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L127", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "target": "creategrouprequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L127", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L127", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L127", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L127", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L173", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L173", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "target": "creategrouprequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L173", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L173", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L173", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L173", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L223", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L223", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L223", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L223", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L223", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L238", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L238", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L238", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L238", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L238", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L250", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "target": "creategrouprequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L250", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L250", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L275", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L275", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L275", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L280", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L280", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "target": "groupresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L280", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L309", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L309", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L309", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L309", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L309", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L322", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L322", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "target": "groupcalendarassignmentdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L322", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L322", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L322", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L322", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L368", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L368", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L368", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L368", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L368", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L368", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L380", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L380", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "target": "studentgroupcalendarassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L380", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L380", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L380", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L380", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "target": "academiccalendarsubjectdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L380", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L395", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "studentgroupcalendarassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L395", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L395", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L395", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L395", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "academiccalendarsubjectdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L395", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "groupcalendarassignmentdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L395", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L403", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "studentgroupcalendarassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L403", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L403", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "academiccalendarsubjectdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L403", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "groupcalendarassignmentdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L403", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L417", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "target": "academiccalendarsubject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L417", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "target": "academiccalendarsubjectdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L417", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L133", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "target": "studentgroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L153", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L165", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L184", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L215", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L247", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L252", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "target": "groupresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L287", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L316", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L318", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L365", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "target": "groupcalendarassignmentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L405", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "target": "academiccalendarsubjectdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L419", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "isAvailableForSelection", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "findByDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "isAvailableForSelection", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getEducationFormId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getEducationFormId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getEffectiveSpecialtyId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getSpecialtyProfileId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "setGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "setEducationForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "setYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "setSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "setSpecialtyProfile", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L160", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L161", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getEducationFormId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L190", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getEffectiveSpecialtyId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L196", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L196", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L196", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getSpecialtyProfileId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L204", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "setGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "setEducationForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L207", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L207", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "setYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "setSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L210", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "setSpecialtyProfile", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L212", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L214", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L215", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L226", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L227", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L227", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L230", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L230", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L232", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L234", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L245", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L246", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L254", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getEducationFormId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L257", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L260", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L260", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getEffectiveSpecialtyId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L266", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getEffectiveSpecialtyId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L266", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getSpecialtyProfileId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", "callee": "getSpecialtyProfileId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getActualCourse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L281", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L281", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getActualSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L282", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L282", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L283", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getSpecialtyProfile", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L284", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L285", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getStudyState", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L286", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L288", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L289", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getGroupSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L290", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L291", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getEducationForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L291", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L292", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getEducationForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L292", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L293", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L294", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L297", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L298", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L300", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L301", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L302", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "isAvailableForSelection", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L303", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L304", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", "callee": "getLabel", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L305", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L312", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L313", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L313", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "callee": "findByGroupIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L315", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L317", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L317", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L317", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "academicYearId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L326", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "calendarId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L326", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L327", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L327", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L327", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L329", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L329", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L331", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L331", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L333", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L333", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "academicYearId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L333", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L335", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L335", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L335", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L337", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "findByIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L337", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "calendarId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L337", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L339", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L339", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L339", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L341", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L341", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L341", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L341", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L342", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L342", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L342", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L344", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L344", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L344", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L344", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L344", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L345", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L345", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getSpecialtyProfile", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L345", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L345", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getSpecialtyProfile", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L345", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L348", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L348", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getStudyForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L348", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L348", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getEducationForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L348", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L349", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L349", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L349", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L352", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "findByGroupIdAndAcademicYearIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L352", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L353", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L353", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "setStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L355", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "setAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L356", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "setAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L357", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L358", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L359", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L360", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L360", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "findByCalendarIdWithSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L360", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L361", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L365", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L371", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L371", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L372", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L372", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L372", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L373", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L373", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "delete", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L375", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L376", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L377", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L377", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L382", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L382", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L383", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L383", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "toSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L384", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L385", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "emptyMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L386", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L388", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L388", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "findByCalendarIdInWithSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L388", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "groupingBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L389", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L390", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L390", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "mapping", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L391", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L391", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getOrDefault", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L399", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L399", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L399", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L399", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L406", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L407", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L407", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L408", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L408", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L409", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L409", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L410", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L410", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L411", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L411", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L412", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L412", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L418", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L420", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L421", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L421", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getSemesterNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L422", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L423", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L424", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L425", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java", "source_location": "L426", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/923d324b97db7c6400429fbf0e2fc0d3ab18d78230c94d020be545cc7bd43bec.json b/graphify-out/cache/ast/v0.9.5/923d324b97db7c6400429fbf0e2fc0d3ab18d78230c94d020be545cc7bd43bec.json new file mode 100644 index 0000000..eaf105c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/923d324b97db7c6400429fbf0e2fc0d3ab18d78230c94d020be545cc7bd43bec.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "label": "AuthControllerTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest", "label": "AuthControllerTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L14", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_clearauthcontext", "label": ".clearAuthContext()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L16", "_callable": true}, {"id": "aftereach", "label": "AfterEach", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "label": ".meAllowsNullDepartmentId()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L21", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "authcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "authenticateduser", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "aftereach", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_clearauthcontext", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_clearauthcontext", "target": "aftereach", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L16", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L21", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_clearauthcontext", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L18", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "AuthController", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L23", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "setCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "AuthenticatedUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "me", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "value", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "getStatusCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "isInstanceOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "getBody", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "getBody", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "containsEntry", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "containsEntry", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "containsEntry", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "containsKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "isNull", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", "source_location": "L36", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/9478df3214f491838b7e9066acad39d734fdf523dfa941e8e71471546003ef4a.json b/graphify-out/cache/ast/v0.9.5/9478df3214f491838b7e9066acad39d734fdf523dfa941e8e71471546003ef4a.json new file mode 100644 index 0000000..eaaaebc --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/9478df3214f491838b7e9066acad39d734fdf523dfa941e8e71471546003ef4a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_java", "label": "StudentGroupStudyState.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", "label": "StudentGroupStudyState", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_getlabel", "label": "getLabel()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", "source_location": "L16", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_getlabel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroupstudystate_getlabel", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", "source_location": "L16", "weight": 1.0, "context": "return_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/95651757c3354557e9f9020ce9ed427ff58616d4b9472b2dc67d5d2881f2de03.json b/graphify-out/cache/ast/v0.9.5/95651757c3354557e9f9020ce9ed427ff58616d4b9472b2dc67d5d2881f2de03.json new file mode 100644 index 0000000..d5c00e0 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/95651757c3354557e9f9020ce9ed427ff58616d4b9472b2dc67d5d2881f2de03.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_java", "label": "GroupRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "label": "GroupRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L8", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/GroupRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/GroupRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", "label": ".findByEducationFormId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L10", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/GroupRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", "label": ".findByDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L12", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", "label": ".findByStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L14", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/GroupRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", "label": ".findByDepartmentIdAndStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L16", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_java", "target": "studentgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L14", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L14", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L16", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", "source_location": "L16", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/959e1381745900f960360d4b04937c6b812c01c8c1f010796b8c04be6a802484.json b/graphify-out/cache/ast/v0.9.5/959e1381745900f960360d4b04937c6b812c01c8c1f010796b8c04be6a802484.json new file mode 100644 index 0000000..b06150b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/959e1381745900f960360d4b04937c6b812c01c8c1f010796b8c04be6a802484.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java", "label": "TimeSlotScopeDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "label": "TimeSlotScopeDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L4", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/971c9f460dff5af36c7657f21d3a70f378c9d415c5035289021fb1170bf2f4aa.json b/graphify-out/cache/ast/v0.9.5/971c9f460dff5af36c7657f21d3a70f378c9d415c5035289021fb1170bf2f4aa.json new file mode 100644 index 0000000..d9153b3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/971c9f460dff5af36c7657f21d3a70f378c9d415c5035289021fb1170bf2f4aa.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java", "label": "ScheduleRuleSlotRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", "label": "ScheduleRuleSlotRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L8", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "scheduleruleslot", "label": "ScheduleRuleSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid", "label": ".existsBySubgroupId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L10", "_callable": true}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java", "target": "scheduleruleslot", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", "source_location": "L10", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/9b0cf5a307b3ee53505953abd8ef0ba84c0357ca364c55737c2874b78c0ab83d.json b/graphify-out/cache/ast/v0.9.5/9b0cf5a307b3ee53505953abd8ef0ba84c0357ca364c55737c2874b78c0ab83d.json new file mode 100644 index 0000000..5a351a6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/9b0cf5a307b3ee53505953abd8ef0ba84c0357ca364c55737c2874b78c0ab83d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java", "label": "TeacherDepartmentAssignment.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "label": "TeacherDepartmentAssignment", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L8", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "department", "label": "Department", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L42", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getteacher", "label": ".getTeacher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L46", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setteacher", "label": ".setTeacher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getdepartment", "label": ".getDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L54", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setdepartment", "label": ".setDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L58", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidfrom", "label": ".getValidFrom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L62", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidfrom", "label": ".setValidFrom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L66", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidto", "label": ".getValidTo()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L70", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidto", "label": ".setValidTo()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L74", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment", "label": ".getPrimaryAssignment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L78", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment", "label": ".setPrimaryAssignment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L82", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcomment", "label": ".getComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L86", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcomment", "label": ".setComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L90", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedat", "label": ".getCreatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L94", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedat", "label": ".setCreatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L98", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedby", "label": ".getCreatedBy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L102", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedby", "label": ".setCreatedBy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L106", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L8", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L8", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L36", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L39", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L42", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getteacher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getteacher", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L46", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setteacher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setteacher", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getdepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getdepartment", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L54", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setdepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setdepartment", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidfrom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidfrom", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L62", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidfrom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidfrom", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L66", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L70", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L78", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L82", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L82", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L86", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L86", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L90", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L90", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L94", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L98", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L98", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedby", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedby", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L102", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedby", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L106", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedby", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", "source_location": "L106", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/9bbc927463b006a86722789bbbcf3b24646d77a3d703cbed81b4b2cf0d0193bb.json b/graphify-out/cache/ast/v0.9.5/9bbc927463b006a86722789bbbcf3b24646d77a3d703cbed81b4b2cf0d0193bb.json new file mode 100644 index 0000000..9501fa5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/9bbc927463b006a86722789bbbcf3b24646d77a3d703cbed81b4b2cf0d0193bb.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_java", "label": "Department.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "label": "Department", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Department.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Department.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Department.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Department.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_department", "label": ".Department()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getdepartmentname", "label": ".getDepartmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setdepartmentname", "label": ".setDepartmentName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getdepartmentcode", "label": ".getDepartmentCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setdepartmentcode", "label": ".setDepartmentCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L47", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_department", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_department", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_department", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_department", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_department", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getdepartmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getdepartmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setdepartmentname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setdepartmentname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getdepartmentcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_getdepartmentcode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setdepartmentcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_department_department_setdepartmentcode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/a30da6ed8f89d6ae54d16367c6a858e2cb63805d2a2c4c3e9b4e81223e921edc.json b/graphify-out/cache/ast/v0.9.5/a30da6ed8f89d6ae54d16367c6a858e2cb63805d2a2c4c3e9b4e81223e921edc.json new file mode 100644 index 0000000..cf087b7 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/a30da6ed8f89d6ae54d16367c6a858e2cb63805d2a2c4c3e9b4e81223e921edc.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "label": "AcademicCalendarDayRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "label": "AcademicCalendarDayRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L13", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "academiccalendarday", "label": "AcademicCalendarDay", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", "label": ".findByCalendarIdWithActivity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L15", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", "label": ".findByCalendarIdAndCourseNumberAndDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L24", "_callable": true}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_existsbyactivitytypeid", "label": ".existsByActivityTypeId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L38", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", "label": ".deleteByCalendarId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L40", "_callable": true}, {"id": "modifying", "label": "Modifying", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "academiccalendarday", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "modifying", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "target": "academiccalendarday", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", "target": "academiccalendarday", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L15", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L24", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L24", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L24", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L24", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", "target": "academiccalendarday", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L24", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L24", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_existsbyactivitytypeid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_existsbyactivitytypeid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L38", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L40", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", "target": "modifying", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L40", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", "source_location": "L40", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/a490eeb4de5965ea87a969fc1d9224ad27e51faa3df40d353377aaaa6a7ea12a.json b/graphify-out/cache/ast/v0.9.5/a490eeb4de5965ea87a969fc1d9224ad27e51faa3df40d353377aaaa6a7ea12a.json new file mode 100644 index 0000000..d1afb0b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/a490eeb4de5965ea87a969fc1d9224ad27e51faa3df40d353377aaaa6a7ea12a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_role_java", "label": "Role.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Role.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_role_role", "label": "Role", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Role.java", "source_location": "L3", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_role_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_role_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Role.java", "source_location": "L3", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/a56354c92e778ceacda1ed01facc2f38f0e0e93b4965da0c2d9c2c140eb23616.json b/graphify-out/cache/ast/v0.9.5/a56354c92e778ceacda1ed01facc2f38f0e0e93b4965da0c2d9c2c140eb23616.json new file mode 100644 index 0000000..28d435c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/a56354c92e778ceacda1ed01facc2f38f0e0e93b4965da0c2d9c2c140eb23616.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "label": "TimeSlotAdminController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "label": "TimeSlotAdminController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L26", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "timeslotrepository", "label": "TimeSlotRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "timeslotscoperepository", "label": "TimeSlotScopeRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "timeslotdateassignmentrepository", "label": "TimeSlotDateAssignmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", "label": ".TimeSlotAdminController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", "label": ".getAll()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L47", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "timeslotdto", "label": "TimeSlotDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "label": ".getEffective()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L54", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", "label": ".getScopes()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L59", "_callable": true}, {"id": "timeslotscopedto", "label": "TimeSlotScopeDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "label": ".createScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L66", "_callable": true}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "label": ".updateScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L82", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "label": ".deleteScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L98", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "label": ".getDateAssignments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L111", "_callable": true}, {"id": "timeslotdateassignmentdto", "label": "TimeSlotDateAssignmentDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "label": ".saveDateAssignment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L120", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "label": ".deleteDateAssignment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L143", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "label": ".create()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L152", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "label": ".update()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L167", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "label": ".delete()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L186", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "label": ".validate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L199", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "label": ".apply()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L215", "_callable": true}, {"id": "timeslot", "label": "TimeSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "label": ".hasDuplicate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L227", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "label": ".effectiveSlots()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L233", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "label": ".effectiveScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L248", "_callable": true}, {"id": "timeslotscope", "label": "TimeSlotScope", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", "label": ".defaultScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L257", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", "label": ".nextManualDisplayOrder()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L262", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "label": ".toDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L270", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "label": ".toScopeDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L285", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "label": ".toAssignmentDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L297", "_callable": true}, {"id": "timeslotdateassignment", "label": "TimeSlotDateAssignment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslotdateassignmentdto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslotdto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslotscopedto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslot", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslotdateassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslotscope", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslotdateassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslotrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "timeslotscoperepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "dataintegrityviolationexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "duration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "arraylist", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "linkedhashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "uuid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L26", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L26", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L26", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "timeslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L35", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "timeslotscoperepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L36", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "timeslotdateassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L37", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", "target": "timeslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", "target": "timeslotscoperepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", "target": "timeslotdateassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", "target": "timeslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L47", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L47", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L54", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L54", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L54", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L59", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", "target": "timeslotscopedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L59", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L59", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "target": "timeslotscopedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L66", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L66", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L66", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L82", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L82", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "target": "timeslotscopedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L82", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L82", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L82", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L98", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L98", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L98", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L98", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L111", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L111", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L111", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L111", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "target": "timeslotdateassignmentdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L111", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L111", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L120", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "target": "timeslotdateassignmentdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L120", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L120", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L120", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L143", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L143", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L143", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L143", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L152", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "target": "timeslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L152", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L152", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L152", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L167", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L167", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "target": "timeslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L167", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L167", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L167", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L186", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L186", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L186", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L186", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L199", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "target": "timeslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L199", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L199", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L215", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L215", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "target": "timeslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L215", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L227", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "target": "timeslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L227", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L227", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L233", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L233", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L233", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L233", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L248", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L248", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L248", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L257", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L257", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L262", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L270", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L270", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "target": "timeslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L270", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L285", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L285", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "target": "timeslotscopedto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L285", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L297", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "target": "timeslotdateassignment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L297", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "target": "timeslotdateassignmentdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L297", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "target": "timeslotscope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L72", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L95", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L107", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L140", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L154", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L158", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "target": "timeslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L162", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L163", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L164", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L174", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L178", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L182", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L183", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L234", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L235", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "target": "timeslotdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L272", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "target": "timeslotscopedto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L286", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "target": "timeslotdateassignmentdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L299", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", "callee": "findAllByOrderByTimeSlotScopeDisplayOrderAscOrderNumberAscStartTimeAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", "callee": "findAllByOrderByDisplayOrderAscNameAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "setCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "replace", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "randomUUID", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "setApplyMode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "setDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "setSystemScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "setDisplayOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "getSystemScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "getSystemScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "callee": "findByDateBetweenOrderByDateAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "callee": "findAllByOrderByDateAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "scopeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "scopeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "getApplyMode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "findByDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "setDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "setTimeSlotScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "callee": "deleteById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L164", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L188", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "deleteById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L192", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "orderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "orderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "scopeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "scopeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "startTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "endTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "startTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", "callee": "endTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "setOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L216", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "orderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L216", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "setTimeSlotScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "scopeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "setStartTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "startTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "setEndTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "endTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "durationMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "durationMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "durationMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "toMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "between", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "startTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "endTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", "callee": "setDurationMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "callee": "findByTimeSlotScopeIdAndOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "callee": "scopeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "callee": "orderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "findAllByTimeSlotScopeIdOrderByOrderNumberAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L237", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L237", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L237", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L242", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L242", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L242", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "findAllByTimeSlotScopeIdOrderByOrderNumberAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L245", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L245", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "callee": "or", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "callee": "findByDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "callee": "findByApplyModeAndDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L258", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", "callee": "findFirstByApplyModeOrderByDisplayOrderAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L258", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", "callee": "IllegalStateException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L259", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", "callee": "findAllByOrderByDisplayOrderAscNameAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getTimeSlotScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L271", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L273", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L274", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getApplyMode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L278", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getStartTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L279", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getEndTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", "callee": "getDurationMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L281", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L287", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L288", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L289", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "callee": "getApplyMode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L290", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L291", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "callee": "getSystemScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L292", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", "callee": "getDisplayOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L293", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "callee": "getTimeSlotScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L298", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L300", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "callee": "getDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L301", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L302", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", "source_location": "L303", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/a6b6fb3d678d1bc2c81884861b2ebccee131f533288b8f497cd1dea2fa918171.json b/graphify-out/cache/ast/v0.9.5/a6b6fb3d678d1bc2c81884861b2ebccee131f533288b8f497cd1dea2fa918171.json new file mode 100644 index 0000000..284904a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/a6b6fb3d678d1bc2c81884861b2ebccee131f533288b8f497cd1dea2fa918171.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_java", "label": "ClassroomRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", "label": "ClassroomRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "classroom", "label": "Classroom", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", "label": ".findByName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L10", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", "label": ".findByStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L12", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_java", "target": "classroom", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/a6fe5a669a29407387f4a470bf421e5b76db7bd7eb34708474a94e91f5e7894f.json b/graphify-out/cache/ast/v0.9.5/a6fe5a669a29407387f4a470bf421e5b76db7bd7eb34708474a94e91f5e7894f.json new file mode 100644 index 0000000..94f7749 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/a6fe5a669a29407387f4a470bf421e5b76db7bd7eb34708474a94e91f5e7894f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "label": "ScheduleGeneratorService.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L21", "_callable": true}, {"id": "service", "label": "Service", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "schedulerulerepository", "label": "ScheduleRuleRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "grouprepository", "label": "GroupRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "academicdateservice", "label": "AcademicDateService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "timeslotrepository", "label": "TimeSlotRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "timeslotscoperepository", "label": "TimeSlotScopeRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "timeslotdateassignmentrepository", "label": "TimeSlotDateAssignmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "label": ".ScheduleGeneratorService()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "label": ".buildScheduleForGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L53", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "renderedlessondto", "label": "RenderedLessonDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "label": ".buildScheduleForTeacher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L96", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache", "label": ".clearCache()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L130", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "label": ".validateRange()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L135", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "label": ".sortRules()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L147", "_callable": true}, {"id": "schedulerule", "label": "ScheduleRule", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "label": ".sortRenderedLessons()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L155", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "label": ".primeConsumedHoursBeforeRange()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "_callable": true}, {"id": "semester", "label": "Semester", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", "label": ".minDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L183", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "label": ".processRuleForDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "label": ".eligibleGroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L297", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", "label": ".consumptionBucket()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L311", "_callable": true}, {"id": "schedulelessoncategory", "label": "ScheduleLessonCategory", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "label": ".consumptionProgressKey()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L315", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "label": ".lessonScopesForSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L325", "_callable": true}, {"id": "scheduleruleslot", "label": "ScheduleRuleSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "lessonscope", "label": "LessonScope", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "label": "LessonScope", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L353", "_callable": true}, {"id": "subgroup", "label": "Subgroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_activelessonscope", "label": "ActiveLessonScope", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L356", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "label": ".toRenderedLesson()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "_callable": true}, {"id": "scheduleparity", "label": "ScheduleParity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", "label": ".formatSubgroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L414", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "label": ".resolveEffectiveTimeSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L418", "_callable": true}, {"id": "timeslot", "label": "TimeSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "label": ".effectiveScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L429", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "timeslotscope", "label": "TimeSlotScope", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "label": ".dayName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L437", "_callable": true}, {"id": "dayofweek", "label": "DayOfWeek", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "label": ".displayUserName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L442", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "renderedlessondto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "grouprepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "schedulerulerepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "timeslotdateassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "timeslotrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "timeslotscoperepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "service", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "dayofweek", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "textstyle", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "collectors", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "service", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L21", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "schedulerulerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "academicdateservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "timeslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "timeslotscoperepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "timeslotdateassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L35", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "target": "schedulerulerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "target": "academicdateservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "target": "timeslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "target": "timeslotscoperepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", "target": "timeslotdateassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L53", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L53", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L96", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L96", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L96", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L96", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L96", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L96", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L130", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L135", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L135", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L135", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L147", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L147", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L147", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L147", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L147", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L155", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L155", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L155", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L155", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L155", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L164", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L183", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L183", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L183", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L183", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L187", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L297", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L297", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L297", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "target": "semester", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L297", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L297", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L297", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L297", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L311", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", "target": "schedulelessoncategory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L311", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L311", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L311", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L315", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L315", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L315", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "target": "schedulelessoncategory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L315", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L315", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L315", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L325", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L325", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "target": "schedulelessoncategory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L325", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L325", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L325", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L325", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "target": "lessonscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L325", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L353", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L353", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L353", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L353", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L353", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L353", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_activelessonscope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L356", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_activelessonscope", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L356", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L359", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L414", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L414", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L414", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L418", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L418", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L418", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L418", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L429", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L429", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L429", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L429", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L437", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "target": "dayofweek", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L437", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L437", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L442", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L442", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L442", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L85", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L89", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L93", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L97", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L119", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L122", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L123", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L127", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L170", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L175", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L178", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L211", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L247", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L254", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_activelessonscope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L260", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L285", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L321", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L331", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L369", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "renderedlessondto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L379", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L384", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L394", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L401", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L422", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "plusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "findSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "hasCalendarAssignment", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "getTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "isTheoryDay", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "computeIfAbsent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "findByGroupIdAndSemesterId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "plusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "findSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "computeIfAbsent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "findByTeacherIdAndSemesterId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "callee": "between", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", "callee": "nullsLast", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "callee": "nullsLast", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", "callee": "nullsLast", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L160", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "callee": "plusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "callee": "getEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", "callee": "plusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getLectureAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getLaboratoryAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L194", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getPracticeAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L195", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "findSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L199", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L210", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L212", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L216", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getWeekNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getSlots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "nullsLast", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "startWeekFor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "academicHoursFor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L252", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "subgroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L254", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getOrDefault", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L255", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L260", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L268", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L270", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L271", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "groups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L271", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "scope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L271", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "putIfAbsent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L271", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L271", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "subgroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "scope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "putIfAbsent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L274", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L274", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "mapToInt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "mapToInt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L285", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L289", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "subgroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L290", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "scope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L290", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", "callee": "consumedHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L291", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "isTheoryDay", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L300", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L301", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L304", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L304", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L304", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L305", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "isTheoryDay", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L306", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L307", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L312", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L319", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L320", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L328", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getSubgroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L328", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L329", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L330", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L331", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L331", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L334", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L334", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "toSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L336", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L337", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L337", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "toMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L338", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L340", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L340", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getSubgroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L340", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L341", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L341", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L341", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L342", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L342", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L343", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L343", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L347", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L348", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L369", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L370", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L370", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L371", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L373", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L373", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L374", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L374", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L375", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L375", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L380", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L381", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L383", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L383", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L384", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L387", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L388", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getStartTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L389", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getEndTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L390", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L391", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L391", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L392", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L392", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L393", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L393", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L394", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L395", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L395", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L396", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L396", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L397", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L397", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L398", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L398", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getLessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L399", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L400", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L400", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L400", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L401", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L401", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L402", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L402", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L403", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L403", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L404", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L404", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L405", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L405", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L405", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", "callee": "getParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L410", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L415", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L415", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L415", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L419", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L422", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "callee": "flatMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L422", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "callee": "findByTimeSlotScopeIdAndOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L423", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L424", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L425", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "callee": "or", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L430", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "callee": "findByDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L430", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "callee": "findByApplyModeAndDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L432", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L434", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L434", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "callee": "getDisplayName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L438", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "callee": "forLanguageTag", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L438", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "callee": "toUpperCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L439", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "callee": "substring", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L439", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "callee": "forLanguageTag", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L439", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", "callee": "substring", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L439", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L443", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L443", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L443", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "callee": "getFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L444", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", "source_location": "L446", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/a73eda6953d4bb6bdfded32ca69287ce0ef8b28525b09c29dcfa8291f54e3007.json b/graphify-out/cache/ast/v0.9.5/a73eda6953d4bb6bdfded32ca69287ce0ef8b28525b09c29dcfa8291f54e3007.json new file mode 100644 index 0000000..5194254 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/a73eda6953d4bb6bdfded32ca69287ce0ef8b28525b09c29dcfa8291f54e3007.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java", "label": "SpecialtyProfileRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", "label": "SpecialtyProfileRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "specialtyprofile", "label": "SpecialtyProfile", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", "label": ".findBySpecialityIdOrderByNameAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L11", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", "label": ".findBySpecialityIdAndName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L13", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java", "target": "specialtyprofile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L11", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/a83fc0fa84b3fd73988cc2eebee0ee41444693efab397708a6d2705372ce5af8.json b/graphify-out/cache/ast/v0.9.5/a83fc0fa84b3fd73988cc2eebee0ee41444693efab397708a6d2705372ce5af8.json new file mode 100644 index 0000000..48ce9cc --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/a83fc0fa84b3fd73988cc2eebee0ee41444693efab397708a6d2705372ce5af8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "label": "DatabaseController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "label": "DatabaseController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L27", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "tenantroutingdatasource", "label": "TenantRoutingDataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "configmapupdater", "label": "ConfigMapUpdater", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "tenantconfigwatcher", "label": "TenantConfigWatcher", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", "label": ".DatabaseController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "label": ".getStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L47", "_callable": true}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "label": ".getTenants()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L68", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "label": ".addTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L88", "_callable": true}, {"id": "tenantconfig", "label": "TenantConfig", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "label": ".removeTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L131", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "label": ".testConnection()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "label": ".persistToConfigMap()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L177", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "configmapupdater", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "tenantconfig", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "tenantconfigwatcher", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "tenantcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "tenantroutingdatasource", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "arraylist", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "hashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L27", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L27", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L27", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "configmapupdater", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "tenantconfigwatcher", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", "target": "configmapupdater", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", "target": "tenantconfigwatcher", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L47", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L47", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L47", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L47", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L68", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L68", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L68", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L68", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L68", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L68", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L88", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L88", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L88", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L88", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L88", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L131", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L131", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L131", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L131", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L131", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L131", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L131", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L152", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L177", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L105", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L116", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L142", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "getCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "getTenantConfigs", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "getUrl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "getTenantConfigs", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "getUrl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "getUrl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "getUrl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "hasTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "initDatabaseForTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", "callee": "internalServerError", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "hasTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L144", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L160", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L161", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "testExternalConnection", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "callee": "getTenantConfigs", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "callee": "updateTenantsConfig", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", "callee": "refreshHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "source_location": "L181", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/a9617d704b490595e0963de486fc21651f25608a37e9613b797d15fb1504e0b0.json b/graphify-out/cache/ast/v0.9.5/a9617d704b490595e0963de486fc21651f25608a37e9613b797d15fb1504e0b0.json new file mode 100644 index 0000000..8546d45 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/a9617d704b490595e0963de486fc21651f25608a37e9613b797d15fb1504e0b0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "label": "AcademicCalendarController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "label": "AcademicCalendarController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L19", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "academiccalendarrepository", "label": "AcademicCalendarRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "academiccalendardayrepository", "label": "AcademicCalendarDayRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "academiccalendaractivitytyperepository", "label": "AcademicCalendarActivityTypeRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "academicyearrepository", "label": "AcademicYearRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "specialtiesrepository", "label": "SpecialtiesRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "specialtyprofilerepository", "label": "SpecialtyProfileRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "educationformrepository", "label": "EducationFormRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "subjectrepository", "label": "SubjectRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "academiccalendarsubjectrepository", "label": "AcademicCalendarSubjectRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "label": ".AcademicCalendarController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "label": ".getCalendars()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L57", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "academiccalendardto", "label": "AcademicCalendarDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "label": ".getCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L66", "_callable": true}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "label": ".createCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L73", "_callable": true}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "label": ".updateCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L85", "_callable": true}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "label": ".deleteCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L100", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "label": ".getGrid()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L115", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "label": ".saveGrid()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L125", "_callable": true}, {"id": "academiccalendargriddaydto", "label": "AcademicCalendarGridDayDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "transactional", "label": "Transactional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "label": ".getSubjects()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L149", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "label": ".saveSubjects()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L159", "_callable": true}, {"id": "academiccalendarsubjectdto", "label": "AcademicCalendarSubjectDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "label": ".applyCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L178", "_callable": true}, {"id": "academiccalendar", "label": "AcademicCalendar", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "label": ".buildGridDay()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L216", "_callable": true}, {"id": "academiccalendarday", "label": "AcademicCalendarDay", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "label": ".resolveActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L242", "_callable": true}, {"id": "academiccalendaractivitytype", "label": "AcademicCalendarActivityType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "label": ".replaceCalendarSubjects()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L254", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "label": ".toCalendarDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L301", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "label": ".toGridDayDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L324", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "label": ".toCalendarSubjectDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L340", "_callable": true}, {"id": "academiccalendarsubject", "label": "AcademicCalendarSubject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "dto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "schedulegeneratorservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "transactional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "hashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "hashset", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "set", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "collectors", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "academiccalendarrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "academiccalendardayrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "academiccalendaractivitytyperepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "academicyearrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "specialtiesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "specialtyprofilerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "educationformrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "academiccalendarsubjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "academiccalendarrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "academiccalendardayrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "academiccalendaractivitytyperepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "academicyearrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "specialtiesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "specialtyprofilerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "educationformrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "academiccalendarsubjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L57", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L57", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L57", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L57", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "target": "academiccalendardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L57", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L57", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L66", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L66", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L66", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L73", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "target": "academiccalendardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L73", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L73", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L73", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L85", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L85", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "target": "academiccalendardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L85", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L85", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L85", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L100", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L100", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L100", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L100", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L115", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L115", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L115", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L115", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L125", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L125", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L125", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "target": "academiccalendargriddaydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L125", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L125", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L125", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L125", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L149", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L149", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L149", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L149", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L159", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L159", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L159", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "target": "academiccalendarsubjectdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L159", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L159", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L159", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L159", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L178", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L178", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "target": "academiccalendardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L178", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L216", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L216", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "target": "academiccalendargriddaydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L216", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "target": "academiccalendarday", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L216", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L242", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "target": "academiccalendargriddaydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L242", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L242", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L254", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L254", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L254", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "target": "academiccalendarsubjectdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L254", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L301", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L301", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "target": "academiccalendardto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L301", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L324", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "target": "academiccalendarday", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L324", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "target": "academiccalendargriddaydto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L324", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L340", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "target": "academiccalendarsubject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L340", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "target": "academiccalendarsubjectdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L340", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L69", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "target": "academiccalendar", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L76", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L77", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L92", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L139", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L168", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L231", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "target": "academiccalendarday", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L232", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "target": "academiccalendarsubject", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L291", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "target": "academiccalendardto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L306", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "target": "academiccalendargriddaydto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L326", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "target": "academiccalendarsubjectdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L342", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", "callee": "findAllWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "callee": "findByIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "deleteById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", "callee": "findByCalendarIdWithActivity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "findByIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "deleteByCalendarId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L151", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", "callee": "findByCalendarIdWithSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "findByIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "findByCalendarIdWithSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L174", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L174", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L174", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L174", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "title", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L182", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L182", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "title", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L182", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "courseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "courseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L186", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "courseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L188", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "academicYearId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "specialtyId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "specialtyProfileId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L192", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "studyFormId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L192", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L196", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L196", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "academicYearId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L196", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L197", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "specialtyId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L199", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "specialtyProfileId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L202", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L202", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L202", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L202", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "studyFormId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "setTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "title", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "setAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "setSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L210", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "setSpecialtyProfile", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "setStudyForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L212", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "setCourseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L213", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", "callee": "courseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L213", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "courseNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "courseNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "weekNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "weekNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L219", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L221", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "getEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L225", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "courseNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L227", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "getCourseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L227", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "setAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "setCourseNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L234", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "courseNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L234", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "setDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "setWeekNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "weekNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "setDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L237", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L237", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", "callee": "setActivityType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L238", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "activityTypeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L243", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "activityTypeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L245", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "activityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "activityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "findByCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "activityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L255", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L256", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "getCourseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L259", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "getCourseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L259", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L260", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L261", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "semesterNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "semesterNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L266", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "semesterNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L266", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L267", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "semesterNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L270", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "findAllById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "toMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L278", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L280", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L282", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L283", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "deleteByAcademicCalendar_Id", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L287", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L287", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "flush", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L288", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L289", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L289", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "setAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L292", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "setSemesterNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L293", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "semesterNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L293", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "setSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L294", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L294", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L294", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", "callee": "saveAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L298", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L302", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L303", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getSpecialtyProfile", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L304", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getStudyForm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L305", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L307", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L308", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L309", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L310", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L311", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L312", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L313", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L314", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L315", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L316", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L317", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L318", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L319", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", "callee": "getCourseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L320", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getActivityType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L325", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L327", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L328", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L328", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getCourseNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L329", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L330", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getWeekNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L331", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L332", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L333", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L334", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L335", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", "callee": "getAllowSchedule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L336", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L341", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L343", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L344", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getAcademicCalendar", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L344", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getSemesterNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L345", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L347", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L348", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", "source_location": "L349", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/aacc2599d9197ae3aa13be821741d1139e6dac363c574df68a5d5cfa77e1405f.json b/graphify-out/cache/ast/v0.9.5/aacc2599d9197ae3aa13be821741d1139e6dac363c574df68a5d5cfa77e1405f.json new file mode 100644 index 0000000..c934ddf --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/aacc2599d9197ae3aa13be821741d1139e6dac363c574df68a5d5cfa77e1405f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_java", "label": "Subject.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "label": "Subject", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subject.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subject.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subject.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subject.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_subject", "label": ".Subject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L22", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L32", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L40", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L44", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getcode", "label": ".getCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L48", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setcode", "label": ".setCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L52", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L56", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L60", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_subject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_subject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_subject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_subject", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_subject", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_subject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L25", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L32", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L40", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L48", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setcode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L52", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setcode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L52", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L56", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L60", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subject_subject_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", "source_location": "L60", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ab1975e88bebccd704a87c4ffff93b2eff4d0e9e703fd9048e9e261ffa752e7f.json b/graphify-out/cache/ast/v0.9.5/ab1975e88bebccd704a87c4ffff93b2eff4d0e9e703fd9048e9e261ffa752e7f.json new file mode 100644 index 0000000..d51a33c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ab1975e88bebccd704a87c4ffff93b2eff4d0e9e703fd9048e9e261ffa752e7f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java", "label": "ScheduleLessonCategoryTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", "label": "ScheduleLessonCategoryTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L8", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "label": ".mapsCanonicalLessonTypes()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L10", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", "label": ".rejectsAmbiguousLessonType()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L20", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", "label": ".rejectsUnsupportedLessonType()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "label": ".lessonType()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L34", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java"}, {"id": "lessontype", "label": "LessonType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java", "target": "assertthatthrownby", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L10", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L20", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L27", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "target": "lessontype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L34", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "target": "lessontype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L35", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L12", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L12", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L12", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L14", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L14", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L14", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", "callee": "hasMessageContaining", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L22", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", "callee": "isInstanceOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L22", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", "callee": "assertThatThrownBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L22", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L22", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", "callee": "hasMessageContaining", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", "callee": "isInstanceOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", "callee": "assertThatThrownBy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", "callee": "setLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", "source_location": "L36", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ac34a2a98158b62313730d5d8b14acd2c95a9cc7d2f686176ca671ddfe2f972b.json b/graphify-out/cache/ast/v0.9.5/ac34a2a98158b62313730d5d8b14acd2c95a9cc7d2f686176ca671ddfe2f972b.json new file mode 100644 index 0000000..2ae7bd2 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ac34a2a98158b62313730d5d8b14acd2c95a9cc7d2f686176ca671ddfe2f972b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_java", "label": "Subgroup.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "label": "Subgroup", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subgroup.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subgroup.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subgroup.java"}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subgroup.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subgroup.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subgroup.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentgroup", "label": ".getStudentGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentgroup", "label": ".setStudentGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentcapacity", "label": ".getStudentCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentcapacity", "label": ".setStudentCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L51", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L23", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentgroup", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentgroup", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L39", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ac68444e9cfedae3650952b82039f753db314fa8682f4269ccfedaf4e98fe93f.json b/graphify-out/cache/ast/v0.9.5/ac68444e9cfedae3650952b82039f753db314fa8682f4269ccfedaf4e98fe93f.json new file mode 100644 index 0000000..671c947 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ac68444e9cfedae3650952b82039f753db314fa8682f4269ccfedaf4e98fe93f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "label": "SpecialityController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "label": "SpecialityController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L22", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "specialtiesrepository", "label": "SpecialtiesRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "specialtyprofilerepository", "label": "SpecialtyProfileRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_specialitycontroller", "label": ".SpecialityController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L32", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "label": ".getAllSpecialties()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L38", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "speciality", "label": "Speciality", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "label": ".createSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L60", "_callable": true}, {"id": "createspecialityrequest", "label": "CreateSpecialityRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "label": ".updateSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L111", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "label": ".deleteSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L167", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "label": ".restoreSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L181", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "label": ".getAllProfiles()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L196", "_callable": true}, {"id": "specialtyprofiledto", "label": "SpecialtyProfileDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "label": ".getProfiles()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L206", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "label": ".createProfile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L216", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "label": ".updateProfile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L234", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "label": ".deleteProfile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L252", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "label": ".validateProfile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L268", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "label": ".toProfileDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L281", "_callable": true}, {"id": "specialtyprofile", "label": "SpecialtyProfile", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", "label": ".trimToNull()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L293", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "createspecialityrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "specialityresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "specialtyprofiledto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "speciality", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "specialtyprofile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "specialtiesrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "specialtyprofilerepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "httpstatus", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L22", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L22", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L22", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "specialtiesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "specialtyprofilerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_specialitycontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_specialitycontroller", "target": "specialtiesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L32", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_specialitycontroller", "target": "specialtyprofilerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L32", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L38", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L38", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L38", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L60", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "target": "createspecialityrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L60", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L60", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L60", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L111", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L111", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "target": "createspecialityrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L111", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L111", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L111", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L167", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L167", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L167", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L167", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L181", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L181", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L181", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L181", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L196", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L196", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "target": "specialtyprofiledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L196", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L196", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L206", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L206", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L206", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L206", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L216", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L216", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "target": "specialtyprofiledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L216", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L216", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L216", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L234", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L234", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L234", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "target": "specialtyprofiledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L234", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L234", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L234", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L252", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L252", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L252", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L252", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L252", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L268", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L268", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L268", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "target": "specialtyprofiledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L268", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L268", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L281", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L281", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "target": "specialtyprofiledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L281", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L293", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L293", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L293", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "target": "speciality", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "target": "speciality", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L86", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "target": "specialtyprofile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L90", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L222", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "target": "specialtyprofile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L227", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L230", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L231", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L242", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L248", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L249", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "target": "specialtyprofiledto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L283", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "findByStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "findBySpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "findBySpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "setSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "setSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "setSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "SpecialityResponse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "findBySpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "findBySpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "setSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "setSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L151", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "SpecialityResponse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L161", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L161", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L170", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L172", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L175", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L187", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L188", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "SpecialityResponse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L190", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L192", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L199", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L199", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L199", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "isActiveRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "compareToIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "callee": "existsById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L208", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L209", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", "callee": "findBySpecialityIdOrderByNameAsc", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L218", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L220", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "setSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L228", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L229", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "setDescription", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L230", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "description", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L230", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L231", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L231", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L238", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L238", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L244", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L247", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "setDescription", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "description", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L254", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L254", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L255", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L255", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L255", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L256", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L256", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "delete", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L259", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L260", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L260", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L262", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L262", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "findBySpecialityIdAndName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "callee": "getSpeciality", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L282", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L284", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L285", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "callee": "getSpecialityCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L286", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "callee": "getSpecialityName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L287", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L288", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", "callee": "getDescription", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L289", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L294", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java", "source_location": "L297", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ac8a3dab9e7e1fde4a8bbeaeb64ec71d2a631010b25d77a5e9f136a9e1cdecad.json b/graphify-out/cache/ast/v0.9.5/ac8a3dab9e7e1fde4a8bbeaeb64ec71d2a631010b25d77a5e9f136a9e1cdecad.json new file mode 100644 index 0000000..6b904d1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ac8a3dab9e7e1fde4a8bbeaeb64ec71d2a631010b25d77a5e9f136a9e1cdecad.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java", "label": "SubjectCommentRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", "label": "SubjectCommentRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L8", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "subjectcomment", "label": "SubjectComment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", "label": ".findBySubjectIdOrderByCreatedAtDesc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L9", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java", "target": "subjectcomment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", "target": "subjectcomment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L9", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L9", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", "target": "subjectcomment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b0af6daf86596dac582602616509b1a129fb8c5c7f18926d58f1431fd6442b4b.json b/graphify-out/cache/ast/v0.9.5/b0af6daf86596dac582602616509b1a129fb8c5c7f18926d58f1431fd6442b4b.json new file mode 100644 index 0000000..fa3f7cd --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b0af6daf86596dac582602616509b1a129fb8c5c7f18926d58f1431fd6442b4b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "label": "DepartmentController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "label": "DepartmentController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L19", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "departmentrepository", "label": "DepartmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_departmentcontroller", "label": ".DepartmentController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L28", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "label": ".getAllDepartments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L32", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "department", "label": "Department", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "label": ".createDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L55", "_callable": true}, {"id": "createdepartmentrequest", "label": "CreateDepartmentRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "label": ".updateDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L102", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "label": ".deleteDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L157", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "label": ".restoreDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L171", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "createdepartmentrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "departmentresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "department", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "departmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "httpstatus", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_departmentcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_departmentcontroller", "target": "departmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L32", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "target": "createdepartmentrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L55", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L55", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L102", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "target": "createdepartmentrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L102", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L102", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L102", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L157", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L157", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L157", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L157", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L171", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L171", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L171", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L171", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "target": "department", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "target": "department", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L81", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "findByStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L42", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "findByDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "findByDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "setDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "setDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "DepartmentResponse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "findByDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "findByDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "setDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "setDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L144", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "DepartmentResponse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L151", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L151", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L160", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L160", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L175", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L175", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "DepartmentResponse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L179", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L180", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "getDepartmentName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", "callee": "getDepartmentCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java", "source_location": "L182", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b1968aea9603214305f7bb3e5e3b0ff05d2d7e6094f09e98648341f452749532.json b/graphify-out/cache/ast/v0.9.5/b1968aea9603214305f7bb3e5e3b0ff05d2d7e6094f09e98648341f452749532.json new file mode 100644 index 0000000..5cd3324 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b1968aea9603214305f7bb3e5e3b0ff05d2d7e6094f09e98648341f452749532.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_java", "label": "AcademicCalendarDay.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "label": "AcademicCalendarDay", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L7", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java"}, {"id": "academiccalendar", "label": "AcademicCalendar", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java"}, {"id": "academiccalendaractivitytype", "label": "AcademicCalendarActivityType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getacademiccalendar", "label": ".getAcademicCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setacademiccalendar", "label": ".setAcademicCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getcoursenumber", "label": ".getCourseNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setcoursenumber", "label": ".setCourseNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdate", "label": ".getDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdate", "label": ".setDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getweeknumber", "label": ".getWeekNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setweeknumber", "label": ".setWeekNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdayofweek", "label": ".getDayOfWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L75", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdayofweek", "label": ".setDayOfWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L79", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getactivitytype", "label": ".getActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L83", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setactivitytype", "label": ".setActivityType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L87", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getacademiccalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getacademiccalendar", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setacademiccalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setacademiccalendar", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getcoursenumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getcoursenumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L51", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setcoursenumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setcoursenumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L59", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L63", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getweeknumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getweeknumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L67", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setweeknumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setweeknumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L71", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdayofweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdayofweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L75", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdayofweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdayofweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getactivitytype", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L83", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setactivitytype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L87", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setactivitytype", "target": "academiccalendaractivitytype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", "source_location": "L87", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b1b69f31bd2a1a9dba7926772b206bd7f47576a85540570e1f223b6065bebfce.json b/graphify-out/cache/ast/v0.9.5/b1b69f31bd2a1a9dba7926772b206bd7f47576a85540570e1f223b6065bebfce.json new file mode 100644 index 0000000..b08c8bf --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b1b69f31bd2a1a9dba7926772b206bd7f47576a85540570e1f223b6065bebfce.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java", "label": "ReviewTeacherCreationRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "label": "ReviewTeacherCreationRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L12", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setusername", "label": ".setUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L16", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getfullname", "label": ".getFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L20", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setfullname", "label": ".setFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L24", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getjobtitle", "label": ".getJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L28", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setjobtitle", "label": ".setJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L32", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L40", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getpassword", "label": ".getPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L44", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setpassword", "label": ".setPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L48", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getreviewcomment", "label": ".getReviewComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L52", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setreviewcomment", "label": ".setReviewComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L56", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L20", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L24", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L28", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L32", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L36", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L40", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L44", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L48", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getreviewcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L52", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getreviewcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L52", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setreviewcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setreviewcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", "source_location": "L56", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b284327f524071bc219daa3d0849370bc435d15e1fbbd72086f51bf65db34e40.json b/graphify-out/cache/ast/v0.9.5/b284327f524071bc219daa3d0849370bc435d15e1fbbd72086f51bf65db34e40.json new file mode 100644 index 0000000..bcb67d5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b284327f524071bc219daa3d0849370bc435d15e1fbbd72086f51bf65db34e40.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "label": "SubjectController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "label": "SubjectController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L20", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "subjectrepository", "label": "SubjectRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_subjectcontroller", "label": ".SubjectController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L29", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "label": ".getAllSubjects()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L33", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "subject", "label": "Subject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "label": ".getSubjectsByDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L57", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "label": ".createSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L79", "_callable": true}, {"id": "createsubjectrequest", "label": "CreateSubjectRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "label": ".deleteSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L129", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "label": ".restoreSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L143", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "createsubjectrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "subjectresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "subject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "subjectrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "httpstatus", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "httpstatuscode", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L20", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L20", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L20", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_subjectcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_subjectcontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L29", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L33", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L33", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L33", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L33", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L57", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L57", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L57", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L57", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "target": "createsubjectrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L79", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L79", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L129", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L129", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L129", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L129", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L143", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L143", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L143", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L143", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L143", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "target": "subject", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "target": "subject", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L106", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "findByStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "findByDepartmentIdAndStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "findByName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "setCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "SubjectResponse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L151", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "SubjectResponse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "getCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java", "source_location": "L156", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b34280a17941a1e66a16b4916811873f4b5bb65ecf127f44aa428485a8f85c3c.json b/graphify-out/cache/ast/v0.9.5/b34280a17941a1e66a16b4916811873f4b5bb65ecf127f44aa428485a8f85c3c.json new file mode 100644 index 0000000..cfdcbf8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b34280a17941a1e66a16b4916811873f4b5bb65ecf127f44aa428485a8f85c3c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_java", "label": "SubjectRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "label": "SubjectRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "subject", "label": "Subject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", "label": ".findByName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L10", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", "label": ".findByDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L12", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", "label": ".findByStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L14", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", "label": ".findByDepartmentIdAndStatusNot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L16", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_java", "target": "subject", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L12", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L14", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L14", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L16", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", "source_location": "L16", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b3688a3438336965040a4a8e29482b46c358f482ee5b54bdfb60e0099affce87.json b/graphify-out/cache/ast/v0.9.5/b3688a3438336965040a4a8e29482b46c358f482ee5b54bdfb60e0099affce87.json new file mode 100644 index 0000000..ce4f93f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b3688a3438336965040a4a8e29482b46c358f482ee5b54bdfb60e0099affce87.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java", "label": "AuthRefreshTokenRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", "label": "AuthRefreshTokenRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L8", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "authrefreshtoken", "label": "AuthRefreshToken", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", "label": ".findByTokenHash()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L10", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java", "target": "authrefreshtoken", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", "target": "authrefreshtoken", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L8", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", "target": "authrefreshtoken", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", "source_location": "L10", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b4ab949ae96d73acc8882efc60bdf0c56ca1b84add35698e4609147fdfb93682.json b/graphify-out/cache/ast/v0.9.5/b4ab949ae96d73acc8882efc60bdf0c56ca1b84add35698e4609147fdfb93682.json new file mode 100644 index 0000000..ed85150 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b4ab949ae96d73acc8882efc60bdf0c56ca1b84add35698e4609147fdfb93682.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "label": "ScheduleQueryService.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "label": "ScheduleQueryService", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L15", "_callable": true}, {"id": "service", "label": "Service", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "grouprepository", "label": "GroupRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "scheduleoverriderepository", "label": "ScheduleOverrideRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "studentgrouplifecycleservice", "label": "StudentGroupLifecycleService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", "label": ".ScheduleQueryService()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L26", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "label": ".search()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "renderedlessondto", "label": "RenderedLessonDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "label": ".applyOverrides()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "label": ".applyOverride()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L88", "_callable": true}, {"id": "scheduleoverride", "label": "ScheduleOverride", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", "label": ".overrideKey()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L144", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "label": ".validateRange()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L148", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "label": ".resolveGroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L160", "_callable": true}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "label": ".deduplicate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L183", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "label": ".lessonKey()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L198", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "label": ".sortedSignature()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L210", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "label": "MutableLesson", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L220", "_callable": true}, {"id": "linkedhashset", "label": "LinkedHashSet", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_mutablelesson", "label": ".MutableLesson()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L227", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "label": ".merge()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L231", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "label": ".toDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L246", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "renderedlessondto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "scheduleoverride", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "studentgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "grouprepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "scheduleoverriderepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "service", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "chronounit", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "collectors", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "service", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "scheduleoverriderepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "studentgrouplifecycleservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", "target": "scheduleoverriderepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", "target": "studentgrouplifecycleservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L36", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L67", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L67", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L67", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "target": "scheduleoverride", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L88", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L144", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L144", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L144", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L144", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L148", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L148", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L148", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L160", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L160", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L160", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L160", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L160", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L160", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L160", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L183", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L183", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L183", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L183", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L183", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L198", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L198", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L198", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L210", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L210", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L210", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L210", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L220", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L221", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "linkedhashset", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L222", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L222", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "linkedhashset", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L223", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L223", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "linkedhashset", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L224", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L224", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "linkedhashset", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L225", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L225", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_mutablelesson", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L227", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_mutablelesson", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L227", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L231", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L231", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L246", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "target": "renderedlessondto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L246", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L64", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L72", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L82", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "target": "renderedlessondto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L109", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L186", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L187", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_mutablelesson", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L187", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L206", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "target": "renderedlessondto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L247", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "buildScheduleForTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "flatMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "buildScheduleForGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L53", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "teacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "classroomId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "lessonTypeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "timeSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "equalsIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", "callee": "parity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "findByLessonDateBetweenWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "toMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "getBaseRuleSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "getLessonDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "scheduleRuleSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getAction", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "timeSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "timeSlotOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "startTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L94", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "endTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getStartTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getEndTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "classroomId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "classroomName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "teacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "teacherName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "displayUserName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewLessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "lessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "getNewLessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "scheduleRuleId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "scheduleRuleSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "dayName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "weekNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "parity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "subjectName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "lessonTypeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "lessonTypeName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "subgroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "subgroupName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "subgroupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "subgroupNames", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "groupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "groupNames", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "activityType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "lessonTypeAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "consumedLessonTypeAcademicHoursBeforeLesson", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "remainingLessonTypeAcademicHoursAfterLesson", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", "callee": "ruleParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "callee": "between", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L155", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L162", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "mayHaveScheduleInRange", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "findByDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "mayHaveScheduleInRange", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L174", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L176", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "computeIfAbsent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L187", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L191", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "nullsLast", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", "callee": "nullsLast", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L194", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "join", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L199", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L200", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "scheduleRuleSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L201", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L202", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "classroomId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L202", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "timeSlotOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L204", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "teacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L204", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", "callee": "subgroupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L211", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L214", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L214", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", "callee": "joining", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L217", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "groupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L232", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "addAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "groupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L233", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "groupNames", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L235", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "addAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "groupNames", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L236", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "subgroupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L238", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "addAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "subgroupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L239", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "subgroupNames", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "addAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L242", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", "callee": "subgroupNames", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L242", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "scheduleRuleId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L248", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "scheduleRuleSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L249", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "date", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L250", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "dayName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L252", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "weekNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "parity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L254", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "timeSlotId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L255", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "timeSlotOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L256", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "startTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L257", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "endTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L258", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L259", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "subjectName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L260", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "teacherId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L261", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "teacherName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L262", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "classroomId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "classroomName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "lessonTypeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L265", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "lessonTypeName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L266", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "lessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L267", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L268", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "iterator", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L268", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "iterator", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "copyOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L270", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "copyOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L271", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "copyOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L272", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "copyOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L273", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "activityType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L274", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "lessonTypeAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L275", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "consumedLessonTypeAcademicHoursBeforeLesson", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L276", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "remainingLessonTypeAcademicHoursAfterLesson", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", "callee": "ruleParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "source_location": "L278", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b4b483386882f50c054f21e8f8cda5021a2a7a7799c69656cdd39cdf1d88ec37.json b/graphify-out/cache/ast/v0.9.5/b4b483386882f50c054f21e8f8cda5021a2a7a7799c69656cdd39cdf1d88ec37.json new file mode 100644 index 0000000..189b525 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b4b483386882f50c054f21e8f8cda5021a2a7a7799c69656cdd39cdf1d88ec37.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_java", "label": "TimeSlot.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "label": "TimeSlot", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L7", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlot.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlot.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlot.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlot.java"}, {"id": "timeslotscope", "label": "TimeSlotScope", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlot.java"}, {"id": "localtime", "label": "LocalTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlot.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber", "label": ".getOrderNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setordernumber", "label": ".setOrderNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_gettimeslotscope", "label": ".getTimeSlotScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_settimeslotscope", "label": ".setTimeSlotScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime", "label": ".getStartTime()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setstarttime", "label": ".setStartTime()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime", "label": ".getEndTime()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setendtime", "label": ".setEndTime()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getdurationminutes", "label": ".getDurationMinutes()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setdurationminutes", "label": ".setDurationMinutes()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L75", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_java", "target": "localtime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L39", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setordernumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setordernumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_gettimeslotscope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_gettimeslotscope", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_settimeslotscope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_settimeslotscope", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L55", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setstarttime", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setstarttime", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L63", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setendtime", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setendtime", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getdurationminutes", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getdurationminutes", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L71", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setdurationminutes", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setdurationminutes", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", "source_location": "L75", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b5bd4538cada8a2683b40996d2a0188a4f027a5a6fdc21bb4267903896fe3d51.json b/graphify-out/cache/ast/v0.9.5/b5bd4538cada8a2683b40996d2a0188a4f027a5a6fdc21bb4267903896fe3d51.json new file mode 100644 index 0000000..85eb6f9 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b5bd4538cada8a2683b40996d2a0188a4f027a5a6fdc21bb4267903896fe3d51.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java", "label": "TenantConfig.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "label": "TenantConfig", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L8", "_callable": true}, {"id": "jsonignoreproperties", "label": "JsonIgnoreProperties", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", "label": ".TenantConfig()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L17", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L28", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain", "label": ".getDomain()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L30", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setdomain", "label": ".setDomain()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl", "label": ".getUrl()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L33", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_seturl", "label": ".setUrl()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L34", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setusername", "label": ".setUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L37", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getpassword", "label": ".getPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setpassword", "label": ".setPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L40", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java", "target": "jsonignoreproperties", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "jsonignoreproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L8", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L30", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setdomain", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setdomain", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L33", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_seturl", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_seturl", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L36", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L39", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "source_location": "L40", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b8a22adcc580c23dec6a60b8ff0188cf7e95da29bd5299d52030f80aa9b688b5.json b/graphify-out/cache/ast/v0.9.5/b8a22adcc580c23dec6a60b8ff0188cf7e95da29bd5299d52030f80aa9b688b5.json new file mode 100644 index 0000000..6bb8703 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b8a22adcc580c23dec6a60b8ff0188cf7e95da29bd5299d52030f80aa9b688b5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_java", "label": "SubjectComment.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "label": "SubjectComment", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L7", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SubjectComment.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SubjectComment.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SubjectComment.java"}, {"id": "subject", "label": "Subject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SubjectComment.java"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SubjectComment.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SubjectComment.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SubjectComment.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L29", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getsubject", "label": ".getSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L33", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setsubject", "label": ".setSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L37", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getauthor", "label": ".getAuthor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L41", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setauthor", "label": ".setAuthor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L45", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcomment", "label": ".getComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L49", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcomment", "label": ".setComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L53", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcreatedat", "label": ".getCreatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L57", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcreatedat", "label": ".setCreatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L61", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L29", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getsubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L33", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setsubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L37", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getauthor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getauthor", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L41", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setauthor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setauthor", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L45", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L49", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L49", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcreatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcreatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L57", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcreatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L61", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcreatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", "source_location": "L61", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b9964788c4fa92cf94208d7af0d269803714ba887b3c683880bf4d49891e66b5.json b/graphify-out/cache/ast/v0.9.5/b9964788c4fa92cf94208d7af0d269803714ba887b3c683880bf4d49891e66b5.json new file mode 100644 index 0000000..e3c2fd3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b9964788c4fa92cf94208d7af0d269803714ba887b3c683880bf4d49891e66b5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "label": "JwtTokenServiceTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "label": "JwtTokenServiceTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L20", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "label": ".authenticatesValidTokenForSameTenant()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L22", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "label": ".rejectsTokenForDifferentTenant()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "label": ".rejectsTokenWithDifferentSignature()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L44", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "label": ".rejectsExpiredToken()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L53", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "label": ".expiredToken()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L62", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "label": ".properties()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L85", "_callable": true}, {"id": "duration", "label": "Duration", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java"}, {"id": "jwtproperties", "label": "JwtProperties", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "label": ".user()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L93", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "joseexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "jwsalgorithm", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "jwsheader", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "macsigner", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "jwtclaimsset", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "signedjwt", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "standardcharsets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "duration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "instant", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "date", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L22", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L36", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L44", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L53", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L62", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L62", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L85", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L85", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "target": "duration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L85", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "target": "jwtproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L85", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L93", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L93", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "target": "jwtproperties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L86", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "target": "user", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L94", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "JwtTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "ofMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "createAccessToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "authenticate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L27", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "username", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "isEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "callee": "JwtTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "callee": "ofMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "callee": "createAccessToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", "callee": "authenticate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L41", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "callee": "JwtTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "callee": "ofMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "callee": "JwtTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "callee": "ofMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "callee": "createAccessToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", "callee": "authenticate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L50", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "callee": "JwtTokenService", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "callee": "ofMinutes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", "callee": "authenticate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "expirationTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "issueTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "jwtID", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "subject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "issuer", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "Builder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "from", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "minusSeconds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "from", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "minusSeconds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "SignedJWT", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "JWSHeader", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "sign", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "MACSigner", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "getBytes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "serialize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", "callee": "IllegalStateException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "callee": "setSecret", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "callee": "setAccessTtl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "callee": "setRefreshTtl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", "callee": "ofDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "callee": "setId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "callee": "setRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "callee": "setDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "callee": "setFullName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "callee": "setJobTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", "callee": "setPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", "source_location": "L101", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/b9c7865439db193a8a8dd698198da2830c5440da2867853bd9f9e7f0e2dbb466.json b/graphify-out/cache/ast/v0.9.5/b9c7865439db193a8a8dd698198da2830c5440da2867853bd9f9e7f0e2dbb466.json new file mode 100644 index 0000000..4f0a27e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/b9c7865439db193a8a8dd698198da2830c5440da2867853bd9f9e7f0e2dbb466.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "label": "ClassroomController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "label": "ClassroomController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L19", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "classroomrepository", "label": "ClassroomRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "equipmentrepository", "label": "EquipmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_classroomcontroller", "label": ".ClassroomController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "label": ".getAllClassrooms()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L32", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "classroomresponse", "label": "ClassroomResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "label": ".createClassroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L43", "_callable": true}, {"id": "classroomrequest", "label": "ClassroomRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "label": ".updateClassroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L73", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "label": ".deleteClassroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L119", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "label": ".restoreClassroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L132", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "label": ".mapToResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L145", "_callable": true}, {"id": "classroom", "label": "Classroom", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", "label": ".cleanText()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L151", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "classroomrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "classroomresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "classroom", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "equipment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "classroomrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "equipmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L19", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "classroomrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "equipmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_classroomcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_classroomcontroller", "target": "classroomrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_classroomcontroller", "target": "equipmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L32", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "target": "classroomresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "target": "classroomrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L43", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L73", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L73", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "target": "classroomrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L73", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L73", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L73", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L119", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L119", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L119", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L119", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L132", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L132", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L132", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L132", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L145", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L145", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "target": "classroomresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L145", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L151", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L151", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L151", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "target": "classroom", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L96", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L116", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L142", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "target": "classroomresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L146", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "callee": "findByStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "findByName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L51", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L52", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "setCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "setBuilding", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getBuilding", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "setFloor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getFloor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "setIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getEquipmentIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getEquipmentIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "findAllById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "getEquipmentIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "setEquipments", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "isPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "findByName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "setCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getBuilding", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "setBuilding", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getBuilding", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getFloor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "setFloor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getFloor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "setIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getEquipmentIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "findAllById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "getEquipmentIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "setEquipments", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L116", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "setIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "setIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getBuilding", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getFloor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getArchivedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getArchiveReason", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", "callee": "getEquipments", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L148", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L152", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "source_location": "L152", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/bd12d3db04c78d514ec10aaa2f919098d467042c2f013286983051a7ffac7274.json b/graphify-out/cache/ast/v0.9.5/bd12d3db04c78d514ec10aaa2f919098d467042c2f013286983051a7ffac7274.json new file mode 100644 index 0000000..17c4a3d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/bd12d3db04c78d514ec10aaa2f919098d467042c2f013286983051a7ffac7274.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "label": "TenantConfigWatcher.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "label": "TenantConfigWatcher", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L28", "_callable": true}, {"id": "component", "label": "Component", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "tenantroutingdatasource", "label": "TenantRoutingDataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "datasource", "label": "DataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "objectmapper", "label": "ObjectMapper", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_tenantconfigwatcher", "label": ".TenantConfigWatcher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "label": ".watchForChanges()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L51", "_callable": true}, {"id": "scheduled", "label": "Scheduled", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", "label": ".refreshHash()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L78", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "label": ".configHash()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L90", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "label": ".syncTenants()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L102", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "tenantconfig", "label": "TenantConfig", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "label": ".initDatabaseForTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L133", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "typereference", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "objectmapper", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "value", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "classpathresource", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "scheduled", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "component", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "datasource", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "file", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "standardcharsets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "messagedigest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "nosuchalgorithmexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "hexformat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "collectors", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "component", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L28", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "datasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "objectmapper", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L35", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L37", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L41", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_tenantconfigwatcher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_tenantconfigwatcher", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_tenantconfigwatcher", "target": "datasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "target": "scheduled", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L51", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L90", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L90", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L90", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L102", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L102", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L133", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L133", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L115", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "exists", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "readAllBytes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "toPath", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "readValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "TypeReference", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", "callee": "exists", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", "callee": "readAllBytes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", "callee": "toPath", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "callee": "getInstance", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "callee": "formatHex", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "callee": "digest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "callee": "getBytes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", "callee": "IllegalStateException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "getTenantConfigs", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L103", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L104", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "toLowerCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "toSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "toLowerCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L110", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "containsKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "addTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L113", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "keySet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L122", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", "callee": "removeTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L123", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L134", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "setCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L136", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "getResolvedDataSources", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "load", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "baselineVersion", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "baselineOnMigrate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "dataSource", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "configure", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L147", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "migrate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L153", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L154", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L157", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "source_location": "L159", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/bf07ab2f446c732add756aea062c4f231d9423bfc268c7be0589fe599ddd8461.json b/graphify-out/cache/ast/v0.9.5/bf07ab2f446c732add756aea062c4f231d9423bfc268c7be0589fe599ddd8461.json new file mode 100644 index 0000000..f071d67 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/bf07ab2f446c732add756aea062c4f231d9423bfc268c7be0589fe599ddd8461.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java", "label": "TeacherSubjectResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "label": "TeacherSubjectResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", "label": ".TeacherSubjectResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L10", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getuserid", "label": ".getUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L17", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L21", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectid", "label": ".getSubjectId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L25", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectname", "label": ".getSubjectName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L29", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L10", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L17", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L21", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L25", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", "source_location": "L29", "weight": 1.0, "context": "return_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/bfe9c32ef2d10d80d38eed23b60dd884890ae28f6895b74efa730be8c5838c5c.json b/graphify-out/cache/ast/v0.9.5/bfe9c32ef2d10d80d38eed23b60dd884890ae28f6895b74efa730be8c5838c5c.json new file mode 100644 index 0000000..19c7347 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/bfe9c32ef2d10d80d38eed23b60dd884890ae28f6895b74efa730be8c5838c5c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "label": "ConfigMapUpdater.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "label": "ConfigMapUpdater", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L28", "_callable": true}, {"id": "service", "label": "Service", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java"}, {"id": "objectmapper", "label": "ObjectMapper", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_configmapupdater", "label": ".ConfigMapUpdater()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L41", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "label": ".updateTenantsConfig()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L52", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java"}, {"id": "tenantconfig", "label": "TenantConfig", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "label": ".createInsecureClient()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L104", "_callable": true}, {"id": "httpclient", "label": "HttpClient", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "objectmapper", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "service", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "uri", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "httpclient", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "httprequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "httpresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "files", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "path", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "securerandom", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "x509certificate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "sslcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "trustmanager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "x509trustmanager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "service", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L28", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L35", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L36", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "objectmapper", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L38", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_configmapupdater", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L52", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L52", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L52", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L104", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "target": "httpclient", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L104", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L76", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_configmapupdater", "callee": "exists", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L42", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_configmapupdater", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L42", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_configmapupdater", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "readString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "readString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "writeValueAsString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "writerWithDefaultPrettyPrinter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "writeValueAsString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "format", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "method", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "header", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "header", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "uri", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "newBuilder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "create", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "ofString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "send", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "ofString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "statusCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "statusCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "error", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "X509TrustManager", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "getInstance", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "init", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "SecureRandom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "sslContext", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "newBuilder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L121", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", "callee": "newHttpClient", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "source_location": "L122", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/c11badd9f6abe4c8c89666e8bae1daf6b92e3af1aeac756d94dc76a8a44b6841.json b/graphify-out/cache/ast/v0.9.5/c11badd9f6abe4c8c89666e8bae1daf6b92e3af1aeac756d94dc76a8a44b6841.json new file mode 100644 index 0000000..8ba1e85 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/c11badd9f6abe4c8c89666e8bae1daf6b92e3af1aeac756d94dc76a8a44b6841.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_java", "label": "User.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "label": "User", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/User.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/User.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/User.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/User.java"}, {"id": "role", "label": "Role", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/User.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_user", "label": ".User()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L32", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setusername", "label": ".setUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getpassword", "label": ".getPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setpassword", "label": ".setPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getrole", "label": ".getRole()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setrole", "label": ".setRole()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getfullname", "label": ".getFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setfullname", "label": ".setFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getjobtitle", "label": ".getJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L75", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setjobtitle", "label": ".setJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L79", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L83", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L87", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_user", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L51", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getrole", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getrole", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L59", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setrole", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setrole", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L63", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L67", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L71", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L75", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L83", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L87", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_user_user_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/User.java", "source_location": "L87", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/c21b133c9613b7199787d1a1ddccedf8a3b90d45728ec750262fcdeef9043257.json b/graphify-out/cache/ast/v0.9.5/c21b133c9613b7199787d1a1ddccedf8a3b90d45728ec750262fcdeef9043257.json new file mode 100644 index 0000000..8c4f759 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/c21b133c9613b7199787d1a1ddccedf8a3b90d45728ec750262fcdeef9043257.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java", "label": "TimeSlotDateAssignment.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "label": "TimeSlotDateAssignment", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L7", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java"}, {"id": "timeslotscope", "label": "TimeSlotScope", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L22", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L26", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getdate", "label": ".getDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L30", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setdate", "label": ".setDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L34", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_gettimeslotscope", "label": ".getTimeSlotScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L38", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_settimeslotscope", "label": ".setTimeSlotScope()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L42", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L22", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L30", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_gettimeslotscope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_gettimeslotscope", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L38", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_settimeslotscope", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_settimeslotscope", "target": "timeslotscope", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/c5e5292e47cd8aeebd8e91b1aef93536cd31ba2d8c535faf405eac06fa7957d1.json b/graphify-out/cache/ast/v0.9.5/c5e5292e47cd8aeebd8e91b1aef93536cd31ba2d8c535faf405eac06fa7957d1.json new file mode 100644 index 0000000..c2ff451 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/c5e5292e47cd8aeebd8e91b1aef93536cd31ba2d8c535faf405eac06fa7957d1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_java", "label": "AuthenticatedUser.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", "label": "AuthenticatedUser", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java"}, {"id": "role", "label": "Role", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", "target": "role", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", "source_location": "L5", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/c9471440549598f2460dbb3359416b2b79acd36ae87b9c98cea67dabe487e9d5.json b/graphify-out/cache/ast/v0.9.5/c9471440549598f2460dbb3359416b2b79acd36ae87b9c98cea67dabe487e9d5.json new file mode 100644 index 0000000..1b1557b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/c9471440549598f2460dbb3359416b2b79acd36ae87b9c98cea67dabe487e9d5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_lessontyperesponse_java", "label": "LessonTypeResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", "label": "LessonTypeResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_lessontyperesponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", "source_location": "L4", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", "source_location": "L5", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/caf427b0a3d211bfe95579b4a2544235ee68f8fd0e161f2faaa28e864085f70c.json b/graphify-out/cache/ast/v0.9.5/caf427b0a3d211bfe95579b4a2544235ee68f8fd0e161f2faaa28e864085f70c.json new file mode 100644 index 0000000..3fa5b56 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/caf427b0a3d211bfe95579b4a2544235ee68f8fd0e161f2faaa28e864085f70c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_java", "label": "CreateSpecialityRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "label": "CreateSpecialityRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_createspecialityrequest", "label": ".CreateSpecialityRequest()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L8", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialityname", "label": ".getSpecialityName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L10", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialityname", "label": ".setSpecialityName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L14", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialitycode", "label": ".getSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L18", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialitycode", "label": ".setSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L22", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_createspecialityrequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialityname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialityname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L10", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialityname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialityname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialitycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L18", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialitycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/cc5d2d897bfda809ceb8d750b6c04dea1e10af9a5fc723ad6a9ca4cde4bf72c7.json b/graphify-out/cache/ast/v0.9.5/cc5d2d897bfda809ceb8d750b6c04dea1e10af9a5fc723ad6a9ca4cde4bf72c7.json new file mode 100644 index 0000000..18c43e7 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/cc5d2d897bfda809ceb8d750b6c04dea1e10af9a5fc723ad6a9ca4cde4bf72c7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "label": "StudentGroupLifecycleService.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "label": "StudentGroupLifecycleService", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L14", "_callable": true}, {"id": "service", "label": "Service", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java"}, {"id": "studentgroupcalendarassignmentrepository", "label": "StudentGroupCalendarAssignmentRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_studentgrouplifecycleservice", "label": ".StudentGroupLifecycleService()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", "label": ".isAvailableForSelection()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L23", "_callable": true}, {"id": "studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "label": ".mayHaveScheduleInRange()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L30", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "label": ".getStudyState()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L43", "_callable": true}, {"id": "studentgroupstudystate", "label": "StudentGroupStudyState", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", "label": ".hasStarted()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "label": ".isGraduatedOn()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L63", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "label": ".resolveCourseLimit()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L72", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "studentgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "studentgroupcalendarassignment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "studentgroupstudystate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "studentgroupcalendarassignmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "courseandsemestercalculator", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "service", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "comparator", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "service", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "studentgroupcalendarassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_studentgrouplifecycleservice", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "studentgroupcalendarassignmentrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L30", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L30", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L30", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "target": "studentgroupstudystate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L63", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L63", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L67", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L67", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L72", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "target": "studentgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L72", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L72", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L72", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L64", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", "callee": "isActiveRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "callee": "isBefore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "callee": "plusDays", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", "callee": "getActualCourse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "callee": "getActualCourse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "callee": "getYearStartStudy", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "callee": "findByGroupIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "callee": "getCourseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "callee": "getCourseCount", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", "callee": "naturalOrder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", "source_location": "L80", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/cd226bd3d5bf0b6fbda2555676faf630c3a29e226fcfb2589e71a242e5b9fe0b.json b/graphify-out/cache/ast/v0.9.5/cd226bd3d5bf0b6fbda2555676faf630c3a29e226fcfb2589e71a242e5b9fe0b.json new file mode 100644 index 0000000..0973d31 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/cd226bd3d5bf0b6fbda2555676faf630c3a29e226fcfb2589e71a242e5b9fe0b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "label": "JwtTokenService.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "label": "JwtTokenService", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L25", "_callable": true}, {"id": "service", "label": "Service", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "jwtproperties", "label": "JwtProperties", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "jwtencoder", "label": "JwtEncoder", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "jwtdecoder", "label": "JwtDecoder", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "label": ".JwtTokenService()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L34", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "label": ".createAccessToken()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L44", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "authenticateduser", "label": "AuthenticatedUser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "label": ".authenticate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L74", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "label": ".asLong()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L97", "_callable": true}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "immutablesecret", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "securitycontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "macalgorithm", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "jwt", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "jwtclaimsset", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "jwtdecoder", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "jwtencoder", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "jwtencoderparameters", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "jwtexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "jwsheader", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "nimbusjwtdecoder", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "nimbusjwtencoder", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "service", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "secretkey", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "secretkeyspec", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "instant", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "uuid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L25", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "service", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L25", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "jwtproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "jwtencoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "jwtdecoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "target": "jwtproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L34", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L44", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "target": "authenticateduser", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L53", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L74", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "target": "authenticateduser", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L74", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L97", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L97", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L97", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L97", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "target": "authenticateduser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L86", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "target": "authenticateduser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L91", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "callee": "SecretKeySpec", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "callee": "secretBytes", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "callee": "NimbusJwtEncoder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "callee": "ImmutableSecret", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "callee": "macAlgorithm", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", "callee": "withSecretKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L48", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L49", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "subject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "expiresAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "issuedAt", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "issuer", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "builder", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L55", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "plus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "getAccessTtl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "randomUUID", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "username", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L66", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "claim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "with", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "getTokenValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "encode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "from", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L71", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "decode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L80", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "getClaimAsString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "equalsIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "getClaim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "getClaimAsString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L87", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "getClaimAsString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L88", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "getClaim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L99", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "callee": "longValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L102", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "callee": "valueOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "source_location": "L107", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ce58ebe0a2cf2329029fb5adae8394d1a69ba45069190a3bb42925b6a78fa125.json b/graphify-out/cache/ast/v0.9.5/ce58ebe0a2cf2329029fb5adae8394d1a69ba45069190a3bb42925b6a78fa125.json new file mode 100644 index 0000000..912a3ad --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ce58ebe0a2cf2329029fb5adae8394d1a69ba45069190a3bb42925b6a78fa125.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java", "label": "TenantWebMvcConfig.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "label": "TenantWebMvcConfig", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L9", "_callable": true}, {"id": "webmvcconfigurer", "label": "WebMvcConfigurer", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "configuration", "label": "Configuration", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java"}, {"id": "tenantroutingdatasource", "label": "TenantRoutingDataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java"}, {"id": "authorizationinterceptor", "label": "AuthorizationInterceptor", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantwebmvcconfig", "label": ".TenantWebMvcConfig()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", "label": ".tenantInterceptor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L21", "_callable": true}, {"id": "tenantinterceptor", "label": "TenantInterceptor", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java"}, {"id": "bean", "label": "Bean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "label": ".addInterceptors()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L28", "_callable": true}, {"id": "interceptorregistry", "label": "InterceptorRegistry", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java"}, {"id": "override", "label": "Override", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java", "target": "authorizationinterceptor", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java", "target": "bean", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java", "target": "configuration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java", "target": "interceptorregistry", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java", "target": "webmvcconfigurer", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "target": "webmvcconfigurer", "relation": "implements", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "target": "configuration", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L9", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "target": "authorizationinterceptor", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantwebmvcconfig", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantwebmvcconfig", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantwebmvcconfig", "target": "authorizationinterceptor", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", "target": "tenantinterceptor", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L21", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", "target": "bean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L21", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "target": "interceptorregistry", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L28", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", "target": "tenantinterceptor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L30", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", "callee": "setRoutingDataSource", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "callee": "addPathPatterns", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "callee": "addInterceptor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "callee": "addPathPatterns", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", "callee": "addInterceptor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", "source_location": "L31", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ceae897064e8c2e21f452f90273ad6241c52979c140e7206f7e8ff6b8eebdb4e.json b/graphify-out/cache/ast/v0.9.5/ceae897064e8c2e21f452f90273ad6241c52979c140e7206f7e8ff6b8eebdb4e.json new file mode 100644 index 0000000..7a0c01d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ceae897064e8c2e21f452f90273ad6241c52979c140e7206f7e8ff6b8eebdb4e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_java", "label": "SubgroupDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", "label": "SubgroupDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubgroupDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubgroupDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubgroupDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", "source_location": "L4", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/cec1ec25f32d091d51d427c7a49ceae21e4dc426abc0fd3335da1ee7673afa77.json b/graphify-out/cache/ast/v0.9.5/cec1ec25f32d091d51d427c7a49ceae21e4dc426abc0fd3335da1ee7673afa77.json new file mode 100644 index 0000000..b63b847 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/cec1ec25f32d091d51d427c7a49ceae21e4dc426abc0fd3335da1ee7673afa77.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_java", "label": "ScheduleRuleTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest", "label": "ScheduleRuleTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L9", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "label": ".activeOnUsesStatusAndValidityRange()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L11", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "label": ".archiveAndRestoreToggleStatus()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L27", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L11", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L27", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "ScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L13", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "setValidFrom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L14", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L14", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "setValidTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L17", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L17", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L17", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L17", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isTrue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L18", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L18", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L18", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L18", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isTrue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L19", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L19", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L19", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L19", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L20", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L20", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L20", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L20", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L22", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "ScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "archive", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "isTrue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "isFalse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "isActiveOn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "restore", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "isTrue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "isActiveRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "isNull", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", "callee": "getValidTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "source_location": "L39", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d089ed980c0c60fd352ddea7d30598b1ab1169cba1eb22c370f99911fc066a3c.json b/graphify-out/cache/ast/v0.9.5/d089ed980c0c60fd352ddea7d30598b1ab1169cba1eb22c370f99911fc066a3c.json new file mode 100644 index 0000000..fbf78f1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d089ed980c0c60fd352ddea7d30598b1ab1169cba1eb22c370f99911fc066a3c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_java", "label": "Equipment.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "label": "Equipment", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Equipment.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Equipment.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Equipment.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Equipment.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", "label": ".Equipment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L16", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L24", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L28", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L32", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L36", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L24", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L32", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_equipment_equipment_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", "source_location": "L36", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d0f69d372b91b6241ad38de003e2e096535d6ae59e5791988dfa1825932016eb.json b/graphify-out/cache/ast/v0.9.5/d0f69d372b91b6241ad38de003e2e096535d6ae59e5791988dfa1825932016eb.json new file mode 100644 index 0000000..c0487a2 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d0f69d372b91b6241ad38de003e2e096535d6ae59e5791988dfa1825932016eb.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "label": "AuthorizationInterceptor.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "label": "AuthorizationInterceptor", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L15", "_callable": true}, {"id": "handlerinterceptor", "label": "HandlerInterceptor", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "component", "label": "Component", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "jwttokenservice", "label": "JwtTokenService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "objectmapper", "label": "ObjectMapper", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_authorizationinterceptor", "label": ".AuthorizationInterceptor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L21", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "label": ".preHandle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L26", "_callable": true}, {"id": "httpservletrequest", "label": "HttpServletRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "httpservletresponse", "label": "HttpServletResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "override", "label": "Override", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "label": ".isPublicAuthEndpoint()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", "label": ".afterCompletion()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L65", "_callable": true}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", "label": ".resolveRoles()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L70", "_callable": true}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "label": ".bearerToken()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L81", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "label": ".writeError()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L88", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "objectmapper", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "httpservletrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "httpservletresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "component", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "handlermethod", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "handlerinterceptor", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "ioexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "arrays", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "handlerinterceptor", "relation": "implements", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "component", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "jwttokenservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "objectmapper", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_authorizationinterceptor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_authorizationinterceptor", "target": "jwttokenservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_authorizationinterceptor", "target": "objectmapper", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L21", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "target": "httpservletresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L26", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L65", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L65", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", "target": "httpservletresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L65", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L65", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", "target": "exception", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L65", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L65", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L70", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L70", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L81", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L81", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L81", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "target": "httpservletresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L46", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "startsWith", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "equalsIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "getMethod", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "getHeader", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "authenticate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L36", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "getCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L38", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "setCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "noneMatch", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "value", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "startsWith", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L56", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "equalsIgnoreCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "getMethod", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", "callee": "getMethodAnnotation", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", "callee": "getAnnotation", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", "callee": "getBeanType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "callee": "startsWith", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "callee": "substring", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", "callee": "length", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L85", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "callee": "setContentType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L90", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "callee": "writeValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "callee": "getOutputStream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "source_location": "L91", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d1a3c0544e8b7660e2c00fcf5a246c0a95e4de3794359a176cae2cd9840c2bde.json b/graphify-out/cache/ast/v0.9.5/d1a3c0544e8b7660e2c00fcf5a246c0a95e4de3794359a176cae2cd9840c2bde.json new file mode 100644 index 0000000..c4994cf --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d1a3c0544e8b7660e2c00fcf5a246c0a95e4de3794359a176cae2cd9840c2bde.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_java", "label": "ClassroomResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "label": "ClassroomResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L7", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java"}, {"id": "equipment", "label": "Equipment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "label": ".ClassroomResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L42", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L46", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L54", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getcapacity", "label": ".getCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L58", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setcapacity", "label": ".setCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L62", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getbuilding", "label": ".getBuilding()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L66", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setbuilding", "label": ".setBuilding()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L70", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getfloor", "label": ".getFloor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L74", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setfloor", "label": ".setFloor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L78", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getisavailable", "label": ".getIsAvailable()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L82", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setisavailable", "label": ".setIsAvailable()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L86", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getstatus", "label": ".getStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L90", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setstatus", "label": ".setStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L94", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivedat", "label": ".getArchivedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L98", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivedat", "label": ".setArchivedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L102", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivereason", "label": ".getArchiveReason()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L106", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivereason", "label": ".setArchiveReason()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L110", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getequipments", "label": ".getEquipments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L114", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setequipments", "label": ".setEquipments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L118", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_java", "target": "equipment", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L17", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L22", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L27", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L42", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L46", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L50", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L54", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L58", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L62", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getbuilding", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getbuilding", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L66", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setbuilding", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setbuilding", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L70", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getfloor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getfloor", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L74", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setfloor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setfloor", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L78", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getisavailable", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L82", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getisavailable", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L82", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setisavailable", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L86", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setisavailable", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L86", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L90", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L90", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L94", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L98", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L98", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L102", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivereason", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L106", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivereason", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L106", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivereason", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L110", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivereason", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L110", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getequipments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L114", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getequipments", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L114", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getequipments", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L114", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setequipments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L118", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setequipments", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L118", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setequipments", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", "source_location": "L118", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d1c1efee47504f84a1a34a1174fa7ad74004f3f0ff5a0cc85e8e0bf80e96fe61.json b/graphify-out/cache/ast/v0.9.5/d1c1efee47504f84a1a34a1174fa7ad74004f3f0ff5a0cc85e8e0bf80e96fe61.json new file mode 100644 index 0000000..be885b6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d1c1efee47504f84a1a34a1174fa7ad74004f3f0ff5a0cc85e8e0bf80e96fe61.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java", "label": "CourseAndSemesterCalculator.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "label": "CourseAndSemesterCalculator", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L8", "_callable": true}, {"id": "service", "label": "Service", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "label": ".getActualCourse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L11", "_callable": true}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "label": ".getActualSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L24", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", "label": ".getFutureCourse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L42", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", "label": ".getFutureSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L47", "_callable": true}, {"id": "semestertype", "label": "SemesterType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java", "target": "semestertype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java", "target": "service", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "target": "service", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L8", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L11", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L24", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", "target": "semestertype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L48", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L12", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "callee": "getYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L16", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", "callee": "getMonthValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L17", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", "callee": "getMonthValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", "callee": "substring", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L43", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", "source_location": "L58", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d319dc499991dcab92c9d0e0131ccdbd7b25e06a2b2ad27449bc2c20e87c0e15.json b/graphify-out/cache/ast/v0.9.5/d319dc499991dcab92c9d0e0131ccdbd7b25e06a2b2ad27449bc2c20e87c0e15.json new file mode 100644 index 0000000..5a9c17c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d319dc499991dcab92c9d0e0131ccdbd7b25e06a2b2ad27449bc2c20e87c0e15.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_java", "label": "Semester.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "label": "Semester", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L7", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Semester.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Semester.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Semester.java"}, {"id": "academicyear", "label": "AcademicYear", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Semester.java"}, {"id": "semestertype", "label": "SemesterType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Semester.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Semester.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L29", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L33", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getacademicyear", "label": ".getAcademicYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L37", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setacademicyear", "label": ".setAcademicYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L41", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getsemestertype", "label": ".getSemesterType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L45", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setsemestertype", "label": ".setSemesterType()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L49", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getstartdate", "label": ".getStartDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L53", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setstartdate", "label": ".setStartDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L57", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getenddate", "label": ".getEndDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L61", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setenddate", "label": ".setEndDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L65", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "semestertype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L29", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L33", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getacademicyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getacademicyear", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L37", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setacademicyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setacademicyear", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L41", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getsemestertype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getsemestertype", "target": "semestertype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L45", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setsemestertype", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L49", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setsemestertype", "target": "semestertype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L49", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getstartdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getstartdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L53", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setstartdate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setstartdate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L57", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getenddate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L61", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_getenddate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L61", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setenddate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L65", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semester_semester_setenddate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "source_location": "L65", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d3a0713b6c80856f0341e8eb0ce9530154a3c4684b0c9797b9f94e2fa9b1fda6.json b/graphify-out/cache/ast/v0.9.5/d3a0713b6c80856f0341e8eb0ce9530154a3c4684b0c9797b9f94e2fa9b1fda6.json new file mode 100644 index 0000000..e7ed096 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d3a0713b6c80856f0341e8eb0ce9530154a3c4684b0c9797b9f94e2fa9b1fda6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "label": "GlobalExceptionHandler.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "label": "GlobalExceptionHandler", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L18", "_callable": true}, {"id": "restcontrolleradvice", "label": "RestControllerAdvice", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "label": ".handleIllegalArgument()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "_callable": true}, {"id": "illegalargumentexception", "label": "IllegalArgumentException", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "httpservletrequest", "label": "HttpServletRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "exceptionhandler", "label": "ExceptionHandler", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "label": ".handleNotFound()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "_callable": true}, {"id": "nosuchelementexception", "label": "NoSuchElementException", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "label": ".handleBadRequest()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "_callable": true}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "label": ".handleUnexpected()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "label": ".error()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "_callable": true}, {"id": "httpstatus", "label": "HttpStatus", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", "label": ".reason()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L68", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "httpservletrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "httpstatus", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "httpmessagenotreadableexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "exceptionhandler", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "restcontrolleradvice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "methodargumenttypemismatchexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "linkedhashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "nosuchelementexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "target": "restcontrolleradvice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L18", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "target": "illegalargumentexception", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "target": "exceptionhandler", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L23", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "target": "nosuchelementexception", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "target": "exceptionhandler", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L32", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "target": "exception", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "target": "exceptionhandler", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L41", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "target": "exception", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "target": "exceptionhandler", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L51", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "target": "httpstatus", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L58", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", "target": "httpstatus", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L68", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L68", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L62", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "callee": "getMethod", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L47", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "callee": "getMethod", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L60", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "value", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "getRequestURI", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L64", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "source_location": "L73", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d5a19f5d5aad38c53ea9130cf0755343fa4706719edd198ab05a18069161c9c1.json b/graphify-out/cache/ast/v0.9.5/d5a19f5d5aad38c53ea9130cf0755343fa4706719edd198ab05a18069161c9c1.json new file mode 100644 index 0000000..bca4ceb --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d5a19f5d5aad38c53ea9130cf0755343fa4706719edd198ab05a18069161c9c1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_java", "label": "GroupResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "label": "GroupResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L5", "_callable": true}, {"id": "jsoninclude", "label": "JsonInclude", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupResponse.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupResponse.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupResponse.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupResponse.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupResponse.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "label": ".GroupResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L65", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L69", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getgroupsize", "label": ".getGroupSize()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L73", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformid", "label": ".getEducationFormId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L77", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformname", "label": ".getEducationFormName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L81", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L85", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getcourse", "label": ".getCourse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L89", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getsemester", "label": ".getSemester()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L93", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getyearstartstudy", "label": ".getYearStartStudy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L97", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialitycode", "label": ".getSpecialityCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L101", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyid", "label": ".getSpecialtyId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L105", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtycode", "label": ".getSpecialtyCode()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L109", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyname", "label": ".getSpecialtyName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L113", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofileid", "label": ".getSpecialtyProfileId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L117", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofilename", "label": ".getSpecialtyProfileName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L121", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstatus", "label": ".getStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L125", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getactive", "label": ".getActive()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L129", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystate", "label": ".getStudyState()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L133", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystatename", "label": ".getStudyStateName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L137", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_java", "target": "jsoninclude", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "jsoninclude", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L65", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L65", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L69", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L69", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getgroupsize", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L73", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getgroupsize", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L73", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L77", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L77", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L81", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L81", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L85", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L85", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getcourse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L89", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getcourse", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L89", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getsemester", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L93", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getsemester", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L93", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getyearstartstudy", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L97", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getyearstartstudy", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L97", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialitycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L101", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialitycode", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L101", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L105", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L105", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtycode", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L109", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtycode", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L109", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L113", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L113", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofileid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L117", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofileid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L117", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofilename", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L121", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofilename", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L121", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L125", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L125", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getactive", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L129", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getactive", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L129", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L133", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystate", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L133", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystatename", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L137", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystatename", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", "source_location": "L137", "weight": 1.0, "context": "return_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d60d317b6bb7e6d9b493499067dd6da9cd6b937757dd01c46c9ce647df0d7c44.json b/graphify-out/cache/ast/v0.9.5/d60d317b6bb7e6d9b493499067dd6da9cd6b937757dd01c46c9ce647df0d7c44.json new file mode 100644 index 0000000..e2b0604 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d60d317b6bb7e6d9b493499067dd6da9cd6b937757dd01c46c9ce647df0d7c44.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_java", "label": "Classroom.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "label": "Classroom", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L7", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java"}, {"id": "set", "label": "Set", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java"}, {"id": "equipment", "label": "Equipment", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_classroom", "label": ".Classroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L33", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L36", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L40", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L44", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L48", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getcapacity", "label": ".getCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L52", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setcapacity", "label": ".setCapacity()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L56", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getbuilding", "label": ".getBuilding()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L60", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setbuilding", "label": ".setBuilding()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L64", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getfloor", "label": ".getFloor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L68", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setfloor", "label": ".setFloor()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L72", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getisavailable", "label": ".getIsAvailable()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L76", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setisavailable", "label": ".setIsAvailable()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L80", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getequipments", "label": ".getEquipments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L84", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setequipments", "label": ".setEquipments()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L88", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_java", "target": "hashset", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_java", "target": "set", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L29", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_classroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L36", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L36", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L40", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L44", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L48", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L52", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L52", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setcapacity", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setcapacity", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L56", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getbuilding", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L60", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getbuilding", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L60", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setbuilding", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L64", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setbuilding", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L64", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getfloor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getfloor", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L68", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setfloor", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L72", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setfloor", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L72", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getisavailable", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L76", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getisavailable", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L76", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setisavailable", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L80", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setisavailable", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L80", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getequipments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L84", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getequipments", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L84", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_getequipments", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L84", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setequipments", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setequipments", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_classroom_classroom_setequipments", "target": "equipment", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "source_location": "L88", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d703dd077feff0aa2c278dd7fddcce860c59f80865fb05aaa8b89fcde74b5163.json b/graphify-out/cache/ast/v0.9.5/d703dd077feff0aa2c278dd7fddcce860c59f80865fb05aaa8b89fcde74b5163.json new file mode 100644 index 0000000..ccf3de2 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d703dd077feff0aa2c278dd7fddcce860c59f80865fb05aaa8b89fcde74b5163.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_java", "label": "TeacherCreationRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "label": "TeacherCreationRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L7", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java"}, {"id": "department", "label": "Department", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java"}, {"id": "teachercreationrequeststatus", "label": "TeacherCreationRequestStatus", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_touch", "label": ".touch()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L56", "_callable": true}, {"id": "preupdate", "label": "PreUpdate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L61", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getdepartment", "label": ".getDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L65", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setdepartment", "label": ".setDepartment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L69", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L73", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setusername", "label": ".setUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L77", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getfullname", "label": ".getFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L81", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setfullname", "label": ".setFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L85", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getjobtitle", "label": ".getJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L89", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setjobtitle", "label": ".setJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L93", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcomment", "label": ".getComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L97", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcomment", "label": ".setComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L101", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getstatus", "label": ".getStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L105", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setstatus", "label": ".setStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L109", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getrequestedby", "label": ".getRequestedBy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L113", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setrequestedby", "label": ".setRequestedBy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L117", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedat", "label": ".getCreatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L121", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedat", "label": ".setCreatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L125", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getupdatedat", "label": ".getUpdatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L129", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setupdatedat", "label": ".setUpdatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L133", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedby", "label": ".getReviewedBy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L137", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedby", "label": ".setReviewedBy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L141", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedat", "label": ".getReviewedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L145", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedat", "label": ".setReviewedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L149", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewcomment", "label": ".getReviewComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L153", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewcomment", "label": ".setReviewComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L157", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedteacherid", "label": ".getCreatedTeacherId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L161", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedteacherid", "label": ".setCreatedTeacherId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L165", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L7", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "teachercreationrequeststatus", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L35", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L38", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L41", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L44", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L47", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L50", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L53", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_touch", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_touch", "target": "preupdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L56", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L61", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L61", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getdepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L65", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getdepartment", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L65", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setdepartment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L69", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setdepartment", "target": "department", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L69", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L73", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L73", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L77", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L77", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L81", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L81", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L85", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L85", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L89", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L89", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L93", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L93", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L97", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L97", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L101", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L101", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L105", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getstatus", "target": "teachercreationrequeststatus", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L105", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L109", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setstatus", "target": "teachercreationrequeststatus", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L109", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getrequestedby", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L113", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getrequestedby", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L113", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setrequestedby", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L117", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setrequestedby", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L117", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L121", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L121", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L125", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L125", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getupdatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L129", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getupdatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L129", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setupdatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L133", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setupdatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L133", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedby", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L137", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedby", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L137", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedby", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L141", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedby", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L141", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L145", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L145", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L149", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L149", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L153", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L153", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L157", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L157", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedteacherid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L161", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedteacherid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L161", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedteacherid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L165", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedteacherid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L165", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_touch", "callee": "now", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", "source_location": "L58", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/d9367be6b0af7d7af2384fddfc0e9879bfda5f3290a3ca1cd5da6f37d972b808.json b/graphify-out/cache/ast/v0.9.5/d9367be6b0af7d7af2384fddfc0e9879bfda5f3290a3ca1cd5da6f37d972b808.json new file mode 100644 index 0000000..ae7ad2b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/d9367be6b0af7d7af2384fddfc0e9879bfda5f3290a3ca1cd5da6f37d972b808.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_java", "label": "EducationFormRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", "label": "EducationFormRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "educationform", "label": "EducationForm", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", "label": ".findByName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L11", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java"}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc", "label": ".findAllByOrderByNameAsc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L13", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_java", "target": "educationform", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L11", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/db778026ef0b1a3424ac5b3f99a42569ac5268cd86d6e3008536ec97a7ad4dfc.json b/graphify-out/cache/ast/v0.9.5/db778026ef0b1a3424ac5b3f99a42569ac5268cd86d6e3008536ec97a7ad4dfc.json new file mode 100644 index 0000000..229a61d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/db778026ef0b1a3424ac5b3f99a42569ac5268cd86d6e3008536ec97a7ad4dfc.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "label": "AuthRefreshToken.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "label": "AuthRefreshToken", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L15", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuser", "label": ".getUser()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser", "label": ".setUser()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant", "label": ".getTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant", "label": ".setTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettokenhash", "label": ".getTokenHash()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L75", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash", "label": ".setTokenHash()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L79", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getissuedat", "label": ".getIssuedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L83", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat", "label": ".setIssuedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L87", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getexpiresat", "label": ".getExpiresAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L91", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat", "label": ".setExpiresAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L95", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat", "label": ".getRevokedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L99", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrevokedat", "label": ".setRevokedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L103", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrotatedtotokenhash", "label": ".getRotatedToTokenHash()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L107", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrotatedtotokenhash", "label": ".setRotatedToTokenHash()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L111", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuseragent", "label": ".getUserAgent()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L115", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuseragent", "label": ".setUserAgent()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L119", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getipaddress", "label": ".getIpAddress()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L123", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setipaddress", "label": ".setIpAddress()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L127", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_isactive", "label": ".isActive()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L131", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "column", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "entity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "fetchtype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "generatedvalue", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "generationtype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "id", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "joincolumn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "manytoone", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "table", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L36", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L39", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L42", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L45", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L48", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L51", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuser", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L59", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L63", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L67", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L71", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettokenhash", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettokenhash", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L75", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getissuedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getissuedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L83", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L87", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L87", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getexpiresat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L91", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getexpiresat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L91", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L95", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L95", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L99", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L99", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrevokedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L103", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrevokedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L103", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrotatedtotokenhash", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L107", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrotatedtotokenhash", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L107", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrotatedtotokenhash", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L111", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrotatedtotokenhash", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L111", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuseragent", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L115", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuseragent", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L115", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuseragent", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L119", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuseragent", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L119", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getipaddress", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L123", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getipaddress", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L123", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setipaddress", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L127", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setipaddress", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L127", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_isactive", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L131", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_isactive", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L131", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_isactive", "callee": "isAfter", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", "source_location": "L132", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/de045e07f8dee74796ba4fa28064d80740ff383456b29aa8d8f7a4d140b7ee7f.json b/graphify-out/cache/ast/v0.9.5/de045e07f8dee74796ba4fa28064d80740ff383456b29aa8d8f7a4d140b7ee7f.json new file mode 100644 index 0000000..e64085f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/de045e07f8dee74796ba4fa28064d80740ff383456b29aa8d8f7a4d140b7ee7f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_java", "label": "AcademicCalendar.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "label": "AcademicCalendar", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L5", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "academicyear", "label": "AcademicYear", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "speciality", "label": "Speciality", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "specialtyprofile", "label": "SpecialtyProfile", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "educationform", "label": "EducationForm", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_gettitle", "label": ".getTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_settitle", "label": ".setTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getacademicyear", "label": ".getAcademicYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setacademicyear", "label": ".setAcademicYear()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspeciality", "label": ".getSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L59", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspeciality", "label": ".setSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L63", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspecialtyprofile", "label": ".getSpecialtyProfile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L67", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspecialtyprofile", "label": ".setSpecialtyProfile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getstudyform", "label": ".getStudyForm()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L75", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setstudyform", "label": ".setStudyForm()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L79", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount", "label": ".getCourseCount()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L83", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setcoursecount", "label": ".setCourseCount()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L87", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L35", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L39", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_gettitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_gettitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L43", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_settitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_settitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L47", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getacademicyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getacademicyear", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L51", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setacademicyear", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setacademicyear", "target": "academicyear", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L55", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspeciality", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L59", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L63", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspeciality", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L63", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspecialtyprofile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L67", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspecialtyprofile", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L67", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspecialtyprofile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspecialtyprofile", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L71", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getstudyform", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L75", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getstudyform", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L75", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setstudyform", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L79", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setstudyform", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L79", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L83", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L83", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setcoursecount", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L87", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setcoursecount", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", "source_location": "L87", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/de836e575475806685ba4f137b7f5d6a56be8afa1c3f4b530ea224dc66494931.json b/graphify-out/cache/ast/v0.9.5/de836e575475806685ba4f137b7f5d6a56be8afa1c3f4b530ea224dc66494931.json new file mode 100644 index 0000000..46474bd --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/de836e575475806685ba4f137b7f5d6a56be8afa1c3f4b530ea224dc66494931.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "label": "AuthController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "label": "AuthController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L26", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "bcryptpasswordencoder", "label": "BCryptPasswordEncoder", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "jwttokenservice", "label": "JwtTokenService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "refreshtokenservice", "label": "RefreshTokenService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "jwtproperties", "label": "JwtProperties", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", "label": ".AuthController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L45", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "label": ".login()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L57", "_callable": true}, {"id": "loginrequest", "label": "LoginRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "httpservletrequest", "label": "HttpServletRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "loginresponse", "label": "LoginResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "label": ".refresh()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L88", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "label": ".logout()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L112", "_callable": true}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "label": ".me()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L122", "_callable": true}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "label": ".loginResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L136", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", "label": ".unauthorized()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L149", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "label": ".unauthorizedWithClearedCookie()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L155", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "label": ".refreshCookie()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L162", "_callable": true}, {"id": "responsecookie", "label": "ResponseCookie", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "label": ".clearRefreshCookie()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L172", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "label": ".refreshCookieValue()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L182", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "label": ".clientIp()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L195", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "authcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "jwtproperties", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "jwttokenservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "refreshtokenrotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "refreshtokenservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "tenantcontext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "loginrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "loginresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "user", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "cookie", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "httpservletrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "bcryptpasswordencoder", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "httpheaders", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "responsecookie", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "duration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L21", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "linkedhashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L24", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L26", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L26", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "bcryptpasswordencoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "jwttokenservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "refreshtokenservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "jwtproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L36", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L36", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L36", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L45", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L45", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", "target": "bcryptpasswordencoder", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L45", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", "target": "jwttokenservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L45", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", "target": "refreshtokenservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L45", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", "target": "jwtproperties", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L45", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L57", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "loginrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L57", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L57", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L57", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "loginresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L57", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L57", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L88", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "loginresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L88", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L88", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L112", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L112", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L112", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L112", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L112", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L112", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L112", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L122", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L122", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L122", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L136", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L136", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L136", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "target": "loginresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L136", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L149", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L149", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", "target": "loginresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L149", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L155", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L155", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "target": "loginresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L155", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L162", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L162", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "target": "responsecookie", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L162", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L172", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "target": "responsecookie", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L172", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L182", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L182", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L182", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L182", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L195", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "target": "httpservletrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L195", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L195", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "loginresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L65", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L80", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L84", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L85", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L90", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L92", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L99", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L108", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L109", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L114", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L118", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "target": "loginresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L138", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", "target": "loginresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L152", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L158", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "target": "loginresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L159", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "findByUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L59", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "matches", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L63", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L70", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "getCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "createAccessToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L75", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "createSession", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "getHeader", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L79", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "header", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L83", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L84", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L91", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "rotate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "getCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "getHeader", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L101", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "user", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "createAccessToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "getCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "header", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "refreshToken", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "callee": "ifPresent", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "callee": "revoke", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "callee": "getCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L115", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "callee": "header", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L118", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "getCurrentUser", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L124", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "LinkedHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "username", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L130", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "role", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L131", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "departmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L133", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "callee": "name", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "callee": "getRole", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "callee": "getOrDefault", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "callee": "getDepartmentId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L144", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L150", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "callee": "header", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L158", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "maxAge", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "path", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "sameSite", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "secure", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "httpOnly", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "from", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "getRefreshCookieName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L163", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "isRefreshCookieSecure", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L165", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", "callee": "getRefreshTtl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "maxAge", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "path", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "sameSite", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "secure", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "httpOnly", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "from", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "getRefreshCookieName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", "callee": "isRefreshCookieSecure", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L175", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "getCookies", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L188", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "getRefreshCookieName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L188", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L188", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "ofNullable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "getValue", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", "callee": "empty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L192", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "callee": "getHeader", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L196", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L197", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "callee": "split", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", "callee": "getRemoteAddr", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java", "source_location": "L200", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/df9141b52f117a2b55e03a98af5c54ad9beaa596bda0f50de7bf90f8835d4588.json b/graphify-out/cache/ast/v0.9.5/df9141b52f117a2b55e03a98af5c54ad9beaa596bda0f50de7bf90f8835d4588.json new file mode 100644 index 0000000..868307e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/df9141b52f117a2b55e03a98af5c54ad9beaa596bda0f50de7bf90f8835d4588.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_java", "label": "StudentGroup.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "label": "StudentGroup", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L5", "_callable": true}, {"id": "lifecycleentity", "label": "LifecycleEntity", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java"}, {"id": "educationform", "label": "EducationForm", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java"}, {"id": "speciality", "label": "Speciality", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java"}, {"id": "specialtyprofile", "label": "SpecialtyProfile", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_studentgroup", "label": ".StudentGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L37", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L40", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L44", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getname", "label": ".getName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L48", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setname", "label": ".setName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L52", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getgroupsize", "label": ".getGroupSize()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L56", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setgroupsize", "label": ".setGroupSize()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L60", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_geteducationform", "label": ".getEducationForm()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L64", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_seteducationform", "label": ".setEducationForm()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L68", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L72", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L76", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspeciality", "label": ".getSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L80", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspeciality", "label": ".setSpeciality()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L84", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspecialtyprofile", "label": ".getSpecialtyProfile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L88", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspecialtyprofile", "label": ".setSpecialtyProfile()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L92", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getyearstartstudy", "label": ".getYearStartStudy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L96", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setyearstartstudy", "label": ".setYearStartStudy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L100", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "lifecycleentity", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_studentgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L37", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L40", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L40", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L44", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L44", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L48", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L48", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L52", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L52", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getgroupsize", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L56", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getgroupsize", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L56", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setgroupsize", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L60", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setgroupsize", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L60", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_geteducationform", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L64", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_geteducationform", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L64", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_seteducationform", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L68", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_seteducationform", "target": "educationform", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L68", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L72", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L72", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L76", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L76", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L80", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspeciality", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L80", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspeciality", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L84", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspeciality", "target": "speciality", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L84", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspecialtyprofile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspecialtyprofile", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L88", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspecialtyprofile", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L92", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspecialtyprofile", "target": "specialtyprofile", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L92", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getyearstartstudy", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L96", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getyearstartstudy", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L96", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setyearstartstudy", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L100", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setyearstartstudy", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "source_location": "L100", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/e08dafc17dc6fca4a01dacf9f8ab33653abd759b90ddca739ae3360c50179f1a.json b/graphify-out/cache/ast/v0.9.5/e08dafc17dc6fca4a01dacf9f8ab33653abd759b90ddca739ae3360c50179f1a.json new file mode 100644 index 0000000..38be06c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/e08dafc17dc6fca4a01dacf9f8ab33653abd759b90ddca739ae3360c50179f1a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "label": "TenantRoutingDataSource.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "label": "TenantRoutingDataSource", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L19", "_callable": true}, {"id": "abstractroutingdatasource", "label": "AbstractRoutingDataSource", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java"}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java"}, {"id": "tenantconfig", "label": "TenantConfig", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java"}, {"id": "object", "label": "Object", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_tenantroutingdatasource", "label": ".TenantRoutingDataSource()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "label": ".determineCurrentLookupKey()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L33", "_callable": true}, {"id": "override", "label": "Override", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "label": ".addTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L53", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "label": ".removeTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L71", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "label": ".testConnection()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L88", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "label": ".testExternalConnection()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L103", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", "label": ".getTenantConfigs()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L123", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant", "label": ".hasTenant()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L127", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_isinitialized", "label": ".isInitialized()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L131", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "label": ".createDataSource()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L135", "_callable": true}, {"id": "hikaridatasource", "label": "HikariDataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "hikaridatasource", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "abstractroutingdatasource", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "datasource", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "connection", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "sqlexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "hashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "concurrenthashmap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "abstractroutingdatasource", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L24", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L24", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_tenantroutingdatasource", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "target": "object", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L33", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L33", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L53", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L53", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L71", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L71", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L88", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L88", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L103", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L103", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L103", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L103", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L103", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L123", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L123", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L123", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L123", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L127", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L127", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_isinitialized", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L131", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L135", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "target": "tenantconfig", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L135", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "target": "hikaridatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L135", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "target": "hikaridatasource", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L104", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "target": "hikaridatasource", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L136", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_tenantroutingdatasource", "callee": "setTargetDataSources", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_tenantroutingdatasource", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_tenantroutingdatasource", "callee": "setLenientFallback", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "callee": "getCurrentTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "callee": "toString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "callee": "iterator", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", "callee": "keySet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "callee": "toLowerCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L54", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L57", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L58", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "callee": "setTargetDataSources", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L61", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "callee": "afterPropertiesSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L62", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", "callee": "getUrl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L65", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "callee": "toLowerCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L72", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "callee": "remove", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L73", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "callee": "remove", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L74", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "callee": "close", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "callee": "setTargetDataSources", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L81", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", "callee": "afterPropertiesSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L82", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "callee": "toLowerCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L89", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "callee": "getConnection", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "callee": "isValid", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L93", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "callee": "warn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L95", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "setJdbcUrl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L105", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L106", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "setPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "setMaximumPoolSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L108", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "setConnectionTimeout", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "getConnection", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L111", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "isValid", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L112", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L117", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", "callee": "close", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L119", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant", "callee": "containsKey", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant", "callee": "toLowerCase", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L128", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_isinitialized", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L132", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setJdbcUrl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "getUrl", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "getUsername", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L138", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "getPassword", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setPoolName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "getDomain", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setMaximumPoolSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setMinimumIdle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setConnectionTimeout", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L143", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setIdleTimeout", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L144", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setMaxLifetime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L145", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", "callee": "setInitializationFailTimeout", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "source_location": "L147", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/e1646704403f9fa714c1e2c8133111c0e03559ea48e3e3f1f0001efa8e472af6.json b/graphify-out/cache/ast/v0.9.5/e1646704403f9fa714c1e2c8133111c0e03559ea48e3e3f1f0001efa8e472af6.json new file mode 100644 index 0000000..ec23198 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/e1646704403f9fa714c1e2c8133111c0e03559ea48e3e3f1f0001efa8e472af6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semestertype_java", "label": "SemesterType.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SemesterType.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semestertype_semestertype", "label": "SemesterType", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/SemesterType.java", "source_location": "L3", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semestertype_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_semestertype_semestertype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/SemesterType.java", "source_location": "L3", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/e2788c00c62ec8dea26485571f596921f3f1c26607f38633a7ce236f016bbed1.json b/graphify-out/cache/ast/v0.9.5/e2788c00c62ec8dea26485571f596921f3f1c26607f38633a7ce236f016bbed1.json new file mode 100644 index 0000000..4ccdb44 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/e2788c00c62ec8dea26485571f596921f3f1c26607f38633a7ce236f016bbed1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_java", "label": "ScheduleOverride.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "label": "ScheduleOverride", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L8", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "scheduleruleslot", "label": "ScheduleRuleSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "timeslot", "label": "TimeSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "classroom", "label": "Classroom", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getbaseruleslot", "label": ".getBaseRuleSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L54", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setbaseruleslot", "label": ".setBaseRuleSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L58", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getlessondate", "label": ".getLessonDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L62", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setlessondate", "label": ".setLessonDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L66", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getaction", "label": ".getAction()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L70", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setaction", "label": ".setAction()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L74", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewtimeslot", "label": ".getNewTimeSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L78", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewtimeslot", "label": ".setNewTimeSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L82", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewclassroom", "label": ".getNewClassroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L86", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewclassroom", "label": ".setNewClassroom()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L90", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewteacher", "label": ".getNewTeacher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L94", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewteacher", "label": ".setNewTeacher()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L98", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewlessonformat", "label": ".getNewLessonFormat()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L102", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewlessonformat", "label": ".setNewLessonFormat()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L106", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcomment", "label": ".getComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L110", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcomment", "label": ".setComment()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L114", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedby", "label": ".getCreatedBy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L118", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedby", "label": ".setCreatedBy()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L122", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedat", "label": ".getCreatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L126", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedat", "label": ".setCreatedAt()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L130", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L8", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L8", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L38", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L41", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L44", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L47", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L50", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getbaseruleslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getbaseruleslot", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L54", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setbaseruleslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setbaseruleslot", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getlessondate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getlessondate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L62", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setlessondate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setlessondate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L66", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getaction", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getaction", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L70", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setaction", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setaction", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewtimeslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewtimeslot", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L78", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewtimeslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L82", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewtimeslot", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L82", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewclassroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L86", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewclassroom", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L86", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewclassroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L90", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewclassroom", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L90", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewteacher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewteacher", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L94", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewteacher", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L98", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewteacher", "target": "user", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L98", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewlessonformat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L102", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewlessonformat", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L102", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewlessonformat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L106", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewlessonformat", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L106", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L110", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L110", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcomment", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L114", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcomment", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L114", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedby", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L118", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedby", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L118", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedby", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L122", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedby", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L122", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L126", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L126", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedat", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L130", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedat", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", "source_location": "L130", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/e3ba6f8ea997c75aff88d2da99984ee0077d95cb3355750cbc4b1cccbea241f4.json b/graphify-out/cache/ast/v0.9.5/e3ba6f8ea997c75aff88d2da99984ee0077d95cb3355750cbc4b1cccbea241f4.json new file mode 100644 index 0000000..d576d50 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/e3ba6f8ea997c75aff88d2da99984ee0077d95cb3355750cbc4b1cccbea241f4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_java", "label": "RenderedLessonDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "label": "RenderedLessonDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L9", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java"}, {"id": "scheduleparity", "label": "ScheduleParity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java"}, {"id": "localtime", "label": "LocalTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_java", "target": "scheduleparity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_java", "target": "localtime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "localtime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L29", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L32", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L33", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L34", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L35", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L35", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L36", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L37", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L38", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L39", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", "source_location": "L40", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/e5fb32ccd6b96c30b7ee8f6b5ad63bb31d1a3de855d2bc95f0eb730bbaf22231.json b/graphify-out/cache/ast/v0.9.5/e5fb32ccd6b96c30b7ee8f6b5ad63bb31d1a3de855d2bc95f0eb730bbaf22231.json new file mode 100644 index 0000000..cd6f3a1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/e5fb32ccd6b96c30b7ee8f6b5ad63bb31d1a3de855d2bc95f0eb730bbaf22231.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java", "label": "DepartmentTransferRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", "label": "DepartmentTransferRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", "source_location": "L8", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/e85c89504dafbb0b863385b1cc507d7c051474fec9e50d2be76149770d7659a2.json b/graphify-out/cache/ast/v0.9.5/e85c89504dafbb0b863385b1cc507d7c051474fec9e50d2be76149770d7659a2.json new file mode 100644 index 0000000..c0b631e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/e85c89504dafbb0b863385b1cc507d7c051474fec9e50d2be76149770d7659a2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_java", "label": "SemesterDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", "label": "SemesterDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L7", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SemesterDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SemesterDto.java"}, {"id": "semestertype", "label": "SemesterType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SemesterDto.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SemesterDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_java", "target": "semestertype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", "target": "semestertype", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/e8d2b8511427830a9b574fdd45603c8f6c977c6abc657e2e400097e976aa3a03.json b/graphify-out/cache/ast/v0.9.5/e8d2b8511427830a9b574fdd45603c8f6c977c6abc657e2e400097e976aa3a03.json new file mode 100644 index 0000000..c62537d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/e8d2b8511427830a9b574fdd45603c8f6c977c6abc657e2e400097e976aa3a03.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_java", "label": "LoginResponse.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "label": "LoginResponse", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/LoginResponse.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/LoginResponse.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "label": ".LoginResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L13", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_issuccess", "label": ".isSuccess()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L30", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setsuccess", "label": ".setSuccess()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L34", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage", "label": ".getMessage()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L38", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setmessage", "label": ".setMessage()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L42", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_gettoken", "label": ".getToken()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L46", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_settoken", "label": ".setToken()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getrole", "label": ".getRole()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L54", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setrole", "label": ".setRole()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L58", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getredirect", "label": ".getRedirect()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L62", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setredirect", "label": ".setRedirect()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L66", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L70", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L74", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getuserid", "label": ".getUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L78", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setuserid", "label": ".setUserId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L82", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_issuccess", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L30", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setsuccess", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L38", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setmessage", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setmessage", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_gettoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_gettoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L46", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_settoken", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_settoken", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L50", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getrole", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getrole", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L54", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setrole", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setrole", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L58", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getredirect", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getredirect", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L62", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setredirect", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L66", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setredirect", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L66", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L70", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L70", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L78", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L78", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setuserid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L82", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setuserid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", "source_location": "L82", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/e9adf63725ace0ff0380cb4a13982994c44cc4f8352886bf65dfd91aff21d1af.json b/graphify-out/cache/ast/v0.9.5/e9adf63725ace0ff0380cb4a13982994c44cc4f8352886bf65dfd91aff21d1af.json new file mode 100644 index 0000000..e85f5b5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/e9adf63725ace0ff0380cb4a13982994c44cc4f8352886bf65dfd91aff21d1af.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java", "label": "SubjectCommentDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", "label": "SubjectCommentDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L5", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java"}, {"id": "localdatetime", "label": "LocalDateTime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java", "target": "localdatetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", "target": "localdatetime", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ea09fc348c675220c5720260a17d708cea525bea66b89365f35dce3e02ca0afa.json b/graphify-out/cache/ast/v0.9.5/ea09fc348c675220c5720260a17d708cea525bea66b89365f35dce3e02ca0afa.json new file mode 100644 index 0000000..c0e7eb3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ea09fc348c675220c5720260a17d708cea525bea66b89365f35dce3e02ca0afa.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_java", "label": "CreateUserRequest.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "label": "CreateUserRequest", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L3", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_createuserrequest", "label": ".CreateUserRequest()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L12", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getusername", "label": ".getUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setusername", "label": ".setUsername()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L19", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getpassword", "label": ".getPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setpassword", "label": ".setPassword()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L27", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getrole", "label": ".getRole()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L31", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setrole", "label": ".setRole()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L35", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getfullname", "label": ".getFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L39", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setfullname", "label": ".setFullName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L43", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getjobtitle", "label": ".getJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L47", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setjobtitle", "label": ".setJobTitle()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L51", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getdepartmentid", "label": ".getDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L55", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setdepartmentid", "label": ".setDepartmentId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L59", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_createuserrequest", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setusername", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L19", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setusername", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L19", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L23", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setpassword", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setpassword", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getrole", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L31", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getrole", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L31", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setrole", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setrole", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L35", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L39", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L39", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setfullname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L43", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setfullname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L43", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L47", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L47", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setjobtitle", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L51", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setjobtitle", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L51", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L55", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L55", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setdepartmentid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L59", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setdepartmentid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", "source_location": "L59", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/eaf1d03da73c5c0738658044f09f67068afe368dddd1fc14597de09c3a372dc7.json b/graphify-out/cache/ast/v0.9.5/eaf1d03da73c5c0738658044f09f67068afe368dddd1fc14597de09c3a372dc7.json new file mode 100644 index 0000000..01c563b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/eaf1d03da73c5c0738658044f09f67068afe368dddd1fc14597de09c3a372dc7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "label": "ScheduleOverrideRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", "label": "ScheduleOverrideRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L12", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "scheduleoverride", "label": "ScheduleOverride", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", "label": ".findByLessonDateBetweenWithDetails()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L14", "_callable": true}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", "label": ".findByBaseRuleSlotIdAndLessonDate()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L28", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "target": "scheduleoverride", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", "target": "scheduleoverride", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L12", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L14", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L14", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", "target": "scheduleoverride", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L14", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L28", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L28", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L28", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", "target": "scheduleoverride", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", "source_location": "L28", "weight": 1.0, "context": "generic_arg"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ebe1ebe0efd275c104dbdde1a72c8b1d5ddb5729f01a7259d8879412e43774ce.json b/graphify-out/cache/ast/v0.9.5/ebe1ebe0efd275c104dbdde1a72c8b1d5ddb5729f01a7259d8879412e43774ce.json new file mode 100644 index 0000000..757232a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ebe1ebe0efd275c104dbdde1a72c8b1d5ddb5729f01a7259d8879412e43774ce.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java", "label": "AcademicCalendarRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", "label": "AcademicCalendarRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L11", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "academiccalendar", "label": "AcademicCalendar", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_countbystudyformid", "label": ".countByStudyFormId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L13", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", "label": ".findAllWithDetails()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L15", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java"}, {"id": "query", "label": "Query", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", "label": ".findByIdWithDetails()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L33", "_callable": true}, {"id": "optional", "label": "Optional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java", "target": "academiccalendar", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java", "target": "query", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java", "target": "param", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java", "target": "optional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_countbystudyformid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_countbystudyformid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L15", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L15", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L33", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L33", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", "target": "optional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L33", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L33", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", "target": "query", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", "source_location": "L33", "weight": 1.0, "context": "attribute"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/f123890af1bd409b02d0dff44c18e57181710b30ef746d6eee9d014a1e4444f6.json b/graphify-out/cache/ast/v0.9.5/f123890af1bd409b02d0dff44c18e57181710b30ef746d6eee9d014a1e4444f6.json new file mode 100644 index 0000000..332a2ba --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/f123890af1bd409b02d0dff44c18e57181710b30ef746d6eee9d014a1e4444f6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java", "label": "TeacherCreationRequestRepository.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "label": "TeacherCreationRequestRepository", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L9", "_callable": true}, {"id": "jparepository", "label": "JpaRepository", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "teachercreationrequest", "label": "TeacherCreationRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", "label": ".findByDepartment_IdOrderByCreatedAtDesc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L11", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", "label": ".findByStatusOrderByCreatedAtDesc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L13", "_callable": true}, {"id": "teachercreationrequeststatus", "label": "TeacherCreationRequestStatus", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc", "label": ".findAllByOrderByCreatedAtDesc()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L15", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus", "label": ".existsByUsernameAndStatus()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L17", "_callable": true}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java", "target": "teachercreationrequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java", "target": "teachercreationrequeststatus", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java", "target": "jparepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "target": "jparepository", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "target": "teachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L9", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L11", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L11", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", "target": "teachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L11", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", "target": "teachercreationrequeststatus", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L13", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L13", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", "target": "teachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L13", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L15", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc", "target": "teachercreationrequest", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L15", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L17", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus", "target": "teachercreationrequeststatus", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", "source_location": "L17", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/f3c2e0a3d96a72e199821f0c1ed0590041a00a99ad0b4e1286d447bde5d17a90.json b/graphify-out/cache/ast/v0.9.5/f3c2e0a3d96a72e199821f0c1ed0590041a00a99ad0b4e1286d447bde5d17a90.json new file mode 100644 index 0000000..ab8319f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/f3c2e0a3d96a72e199821f0c1ed0590041a00a99ad0b4e1286d447bde5d17a90.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java", "label": "AcademicCalendarSubject.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "label": "AcademicCalendarSubject", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L5", "_callable": true}, {"id": "entity", "label": "Entity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java"}, {"id": "table", "label": "Table", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java"}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java"}, {"id": "academiccalendar", "label": "AcademicCalendar", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java"}, {"id": "subject", "label": "Subject", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getid", "label": ".getId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L34", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setid", "label": ".setId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L38", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getacademiccalendar", "label": ".getAcademicCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L42", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setacademiccalendar", "label": ".setAcademicCalendar()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L46", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsemesternumber", "label": ".getSemesterNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L50", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsemesternumber", "label": ".setSemesterNumber()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L54", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsubject", "label": ".getSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L58", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsubject", "label": ".setSubject()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L62", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java", "target": "persistence", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "entity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "table", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L5", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L34", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L34", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L38", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L38", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getacademiccalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getacademiccalendar", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L42", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setacademiccalendar", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L46", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setacademiccalendar", "target": "academiccalendar", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L46", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsemesternumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L50", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsemesternumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L50", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsemesternumber", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L54", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsemesternumber", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L54", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L58", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L58", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsubject", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L62", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsubject", "target": "subject", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", "source_location": "L62", "weight": 1.0, "context": "parameter_type"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/f520e9a8fa8cd7b3a2ea36ae0e2de8efd35b5bf90275ece0479b68d1c4ade5e5.json b/graphify-out/cache/ast/v0.9.5/f520e9a8fa8cd7b3a2ea36ae0e2de8efd35b5bf90275ece0479b68d1c4ade5e5.json new file mode 100644 index 0000000..b5fc1ce --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/f520e9a8fa8cd7b3a2ea36ae0e2de8efd35b5bf90275ece0479b68d1c4ade5e5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "label": "ScheduleRuleAdminController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "label": "ScheduleRuleAdminController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L18", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "set", "label": "Set", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "scheduleparity", "label": "ScheduleParity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "schedulerulerepository", "label": "ScheduleRuleRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "subjectrepository", "label": "SubjectRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "semesterrepository", "label": "SemesterRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "grouprepository", "label": "GroupRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "timeslotrepository", "label": "TimeSlotRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "userrepository", "label": "UserRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "classroomrepository", "label": "ClassroomRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "lessontypesrepository", "label": "LessonTypesRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "subgrouprepository", "label": "SubgroupRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "label": ".ScheduleRuleAdminController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "label": ".getAll()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L64", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "scheduleruledto", "label": "ScheduleRuleDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "label": ".getById()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L74", "_callable": true}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "label": ".create()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L81", "_callable": true}, {"id": "postmapping", "label": "PostMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "transactional", "label": "Transactional", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "label": ".update()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L104", "_callable": true}, {"id": "putmapping", "label": "PutMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "label": ".delete()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L133", "_callable": true}, {"id": "deletemapping", "label": "DeleteMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "label": ".validateRule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L145", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "label": ".applyRule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L165", "_callable": true}, {"id": "schedulerule", "label": "ScheduleRule", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "label": ".conflictResponse()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L202", "_callable": true}, {"id": "scheduleruleconflict", "label": "ScheduleRuleConflict", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfieldlabel", "label": ".conflictFieldLabel()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L211", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "label": ".findConflict()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L220", "_callable": true}, {"id": "collection", "label": "Collection", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "scheduleruleslot", "label": "ScheduleRuleSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "label": ".toConflict()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "_callable": true}, {"id": "map", "label": "Map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "label": ".conflictFields()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L248", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "label": ".sameTimeSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L262", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "label": ".teacherId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L268", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "label": ".classroomId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L272", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "label": ".timeSlotId()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L276", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", "label": ".parityOverlaps()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L280", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "label": ".sameAudience()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L287", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "label": ".groupIds()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L306", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", "label": ".slotAppliesToWholeGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L317", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "label": ".subgroupIdsForGroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L321", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "label": ".activeWeeksBySlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L332", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "label": ".activeWeeksOverlap()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L381", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "label": ".maxWeeksForRule()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L390", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "label": ".compareSlotsForGeneration()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L399", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", "label": ".slotAppliesToWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L417", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "label": ".consumptionScopes()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L426", "_callable": true}, {"id": "schedulelessoncategory", "label": "ScheduleLessonCategory", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "label": ".buildSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L440", "_callable": true}, {"id": "scheduleruleslotdto", "label": "ScheduleRuleSlotDto", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "label": ".resolveSubgroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L484", "_callable": true}, {"id": "subgroup", "label": "Subgroup", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "label": ".validateTypeHours()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L524", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "label": ".validateTypeCoverage()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L549", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_ismissing", "label": ".isMissing()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L567", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isnegative", "label": ".isNegative()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L571", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isinvalidstartweek", "label": ".isInvalidStartWeek()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L575", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_valueorzero", "label": ".valueOrZero()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L579", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "label": ".toDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L583", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "label": ".toSlotDto()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L614", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", "label": ".dayName()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L639", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", "label": ".formatTimeSlot()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L646", "_callable": true}, {"id": "timeslot", "label": "TimeSlot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", "label": ".formatSubgroup()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L650", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "label": ".sortedSubgroups()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L654", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", "label": "ScheduleRuleConflict", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L662", "_callable": true}, {"id": "linkedhashset", "label": "LinkedHashSet", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "scheduleruledto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "scheduleruleslotdto", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "model", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "schedulegeneratorservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "httpstatus", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "transactional", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "dayofweek", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "chronounit", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L18", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L18", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L18", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L25", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "schedulerulerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L31", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L32", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "semesterrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L33", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L34", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "timeslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L35", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L36", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "classroomrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L37", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "lessontypesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L38", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "subgrouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L39", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L40", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "schedulerulerepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "subjectrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "semesterrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "grouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "timeslotrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "userrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "classroomrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "lessontypesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "subgrouprepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "schedulegeneratorservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L64", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L64", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L64", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L64", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "target": "scheduleruledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L64", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L64", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L74", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L74", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L74", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L74", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L81", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "scheduleruledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L81", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L81", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "postmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L81", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L81", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L104", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L104", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "scheduleruledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L104", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L104", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "putmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L104", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "transactional", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L104", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L133", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L133", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L133", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "target": "deletemapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L133", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L145", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "target": "scheduleruledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L145", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L145", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L165", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L165", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "target": "scheduleruledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L165", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L202", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "target": "scheduleruleconflict", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L202", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L202", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfieldlabel", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L211", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfieldlabel", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L211", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfieldlabel", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L211", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L220", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "target": "scheduleruledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L220", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "target": "collection", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L220", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L220", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L220", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "target": "scheduleruleconflict", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L220", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "collection", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "collection", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "scheduleruleconflict", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L231", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L248", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L248", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L248", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L248", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L248", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L262", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L262", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L262", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L268", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L268", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L268", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L272", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L272", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L272", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L276", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L276", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L276", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L280", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L280", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L280", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L287", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L287", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L287", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L306", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L306", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L306", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L306", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L317", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L317", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L317", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L321", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L321", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L321", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L321", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L321", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L332", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "collection", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L332", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L332", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L332", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L332", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L332", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L332", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L381", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L381", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L381", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L381", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L381", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L390", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L390", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L399", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L399", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L399", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L417", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L417", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L426", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L426", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "target": "schedulelessoncategory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L426", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L426", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L426", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L440", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L440", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "target": "scheduleruleslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L440", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L440", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L484", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L484", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "target": "scheduleruleslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L484", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "target": "schedulelessoncategory", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L484", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "target": "set", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L484", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L484", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L524", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "target": "scheduleruledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L524", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L524", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L549", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L549", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L549", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L549", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_ismissing", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L567", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_ismissing", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L567", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isnegative", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L571", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isnegative", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L571", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isinvalidstartweek", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L575", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isinvalidstartweek", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L575", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_valueorzero", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L579", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_valueorzero", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L579", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L583", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L583", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "target": "scheduleruledto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L583", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L614", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L614", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "target": "scheduleruleslotdto", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L614", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L639", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L639", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L639", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L646", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", "target": "timeslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L646", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L646", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L650", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L650", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L650", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L654", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "target": "scheduleruleslot", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L654", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L654", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "target": "subgroup", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L654", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L662", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", "target": "schedulerule", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L662", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", "target": "linkedhashset", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L662", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L662", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L77", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L84", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "schedulerule", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L90", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L91", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L92", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L94", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L98", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L112", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "schedulerule", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L118", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L119", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L120", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L122", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L127", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L152", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L156", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L173", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L194", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L196", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L205", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L221", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L225", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L235", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "linkedhashset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L236", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L239", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L240", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L241", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L245", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "target": "linkedhashset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L249", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L250", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L253", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L256", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L264", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L265", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L288", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L293", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L296", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L318", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L344", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L363", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L367", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L447", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L453", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L458", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L466", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "target": "scheduleruleslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L471", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "target": "linkedhashset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L485", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_ismissing", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L525", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isnegative", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L530", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isinvalidstartweek", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L535", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_valueorzero", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L540", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "target": "scheduleruledto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L595", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L616", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "target": "scheduleruleslotdto", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L617", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L620", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L624", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L626", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "findAllWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L67", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L68", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "anyMatch", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L69", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "callee": "orElseGet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "callee": "findByIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L76", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L77", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L78", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L86", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "getSlots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L92", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L96", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L97", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L98", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L100", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "findByIdWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L107", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L109", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L114", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "getSlots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L120", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L125", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L126", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L127", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "badRequest", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", "callee": "getMessage", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L129", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L135", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "build", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "notFound", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L137", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "setStatus", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L139", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "save", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L140", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "clearCache", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L141", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L142", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L146", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "callee": "semesterId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L149", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L156", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "callee": "slots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", "callee": "slots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L159", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "subjectId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L166", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L167", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L168", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L169", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "semesterId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L171", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L172", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "findAllById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L173", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L174", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L174", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L174", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L175", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "anyMatch", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L177", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L178", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "setSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L181", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "setSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L182", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "setLectureAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "lectureAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L183", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "setLaboratoryAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "laboratoryAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L184", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "setPracticeAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "practiceAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L185", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "setLectureStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L186", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "lectureStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L186", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "setLaboratoryStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L187", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "laboratoryStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L187", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "setPracticeStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L188", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "practiceStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L188", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L189", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "addAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L190", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L190", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "ArrayList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L192", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "slots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L193", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L194", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "clear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "getSlots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L198", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "addAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L199", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", "callee": "getSlots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L199", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "body", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "status", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L203", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "rule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L205", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "fields", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L206", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L207", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L207", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", "callee": "fields", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L207", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "orElse", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "findAllWithDetails", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L222", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L223", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "semesterId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L224", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "getSlots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L225", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L227", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L227", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", "callee": "rule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L227", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L240", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "callee": "addAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L241", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L245", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L250", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L251", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L253", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L254", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L257", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L263", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "callee": "getParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "callee": "getParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L264", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L265", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L269", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "callee": "getClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L273", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L273", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", "callee": "getClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L273", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L277", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L281", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "callee": "retainAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L290", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "callee": "retainAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L298", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L299", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L307", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "callee": "getScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L308", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L311", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "callee": "getScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L311", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L312", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L312", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L318", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L322", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "callee": "getSubgroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L323", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L324", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L325", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L325", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L325", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L326", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L326", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "IdentityHashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L333", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L334", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L334", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L334", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L335", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "getScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L339", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "iterator", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L339", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L340", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L345", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "academicHoursFor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L346", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L351", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L351", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L352", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L352", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L355", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "HashMap", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L359", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "startWeekFor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L360", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "getOrDefault", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L368", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L372", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L372", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", "callee": "put", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L373", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L382", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L382", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L385", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "callee": "retainAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L386", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L387", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L391", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L392", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "callee": "getEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L392", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "callee": "between", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L393", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "callee": "getStartDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L393", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "callee": "getEndDate", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L393", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", "callee": "ceil", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L394", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "compare", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L400", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L401", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L401", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L402", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L402", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "compare", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L407", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L408", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L408", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L408", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L408", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L408", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L409", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L409", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L409", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L409", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L409", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "compare", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L414", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L414", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L414", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L414", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L414", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", "callee": "getParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L418", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L427", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getSubgroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L427", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L428", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L428", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getSubgroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L428", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L429", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L432", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L432", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L432", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L432", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L433", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L435", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L435", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L435", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L435", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L436", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L441", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L441", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L441", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L442", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "parity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L444", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L444", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "parity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L444", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L445", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L447", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L447", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L448", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "getTimeSlotScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L449", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L450", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "getApplyMode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L450", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "getTimeSlotScope", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L450", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L451", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L453", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L453", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L454", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L455", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L456", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L458", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L458", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L459", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "isArchivedRecord", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L460", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "equals", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L460", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "getIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L460", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L461", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L463", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L463", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "lessonTypeId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L463", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L464", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L465", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "lessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L467", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "isBlank", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L467", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "lessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L467", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L468", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setScheduleRule", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L472", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L473", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "dayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L473", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L474", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "parity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L474", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L475", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setSubgroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L476", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L477", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L478", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L479", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "setLessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L480", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "trim", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L480", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", "callee": "lessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L480", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "subgroupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L486", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "forEach", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L487", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L487", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "subgroupIds", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L487", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "subgroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L491", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L492", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "subgroupId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L492", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L494", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L499", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "collect", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L502", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L502", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L502", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "toSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L504", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "HashSet", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L505", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "orElseThrow", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L509", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "findById", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L509", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L510", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L511", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L511", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L512", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L513", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L515", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L516", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L518", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "lectureAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L525", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "laboratoryAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L526", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "practiceAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L527", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "lectureAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L530", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "laboratoryAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L531", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "practiceAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L532", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "lectureStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L535", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "laboratoryStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L536", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "practiceStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L537", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "lectureAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L540", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "laboratoryAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L541", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", "callee": "practiceAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L542", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "noneOf", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L550", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "add", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L552", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "fromLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L552", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L552", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L555", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "academicHoursFor", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L556", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "contains", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L557", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L559", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "getDisplayName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L559", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "IllegalArgumentException", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L562", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", "callee": "getDisplayName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L562", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L584", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L584", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getGroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L584", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L585", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L587", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L587", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getSlots", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L587", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L588", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L588", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L588", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L590", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L590", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L596", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L597", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L597", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L598", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getSubject", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L598", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L599", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L599", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getTitle", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L600", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getAcademicYear", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L600", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L600", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getSemesterType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L601", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getSemester", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L601", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getLectureAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L602", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getLaboratoryAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L603", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getPracticeAcademicHours", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L604", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getLectureStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L605", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getLaboratoryStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L606", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "getPracticeStartWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L607", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L608", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L608", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L609", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L609", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getTimeSlot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L615", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L618", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L619", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getDayOfWeek", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L620", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getParity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L621", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L622", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getOrderNumber", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L623", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L625", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L625", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L625", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "isEmpty", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L626", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "get", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L626", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L627", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L627", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L628", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L628", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L629", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L629", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "displayUserName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L630", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getTeacher", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L630", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L631", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L631", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L632", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getClassroom", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L632", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L633", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L633", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L634", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L634", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", "callee": "getLessonFormat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L635", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L643", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", "callee": "getStartTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L647", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", "callee": "getEndTime", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L647", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L651", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L651", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L651", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L655", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L655", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "callee": "getSubgroups", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L655", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "callee": "thenComparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L656", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L656", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "callee": "getName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L657", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", "callee": "getStudentGroup", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "source_location": "L657", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/f5d40bd2d7b3a235a358c14eb1fd73f0d66f3a986312c7ce8199c90b54bd74f9.json b/graphify-out/cache/ast/v0.9.5/f5d40bd2d7b3a235a358c14eb1fd73f0d66f3a986312c7ce8199c90b54bd74f9.json new file mode 100644 index 0000000..f9631ec --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/f5d40bd2d7b3a235a358c14eb1fd73f0d66f3a986312c7ce8199c90b54bd74f9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "label": "DataInitializer.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "label": "DataInitializer", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L15", "_callable": true}, {"id": "commandlinerunner", "label": "CommandLineRunner", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "component", "label": "Component", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java"}, {"id": "tenantroutingdatasource", "label": "TenantRoutingDataSource", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java"}, {"id": "tenantconfigwatcher", "label": "TenantConfigWatcher", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_datainitializer", "label": ".DataInitializer()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "label": ".run()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L29", "_callable": true}, {"id": "override", "label": "Override", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "target": "tenantconfig", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "target": "tenantconfigwatcher", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "target": "tenantroutingdatasource", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "target": "commandlinerunner", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "target": "component", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "target": "commandlinerunner", "relation": "implements", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "target": "component", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "target": "tenantconfigwatcher", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_datainitializer", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_datainitializer", "target": "tenantroutingdatasource", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_datainitializer", "target": "tenantconfigwatcher", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L29", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "target": "override", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L29", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "callee": "size", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "callee": "getTenantConfigs", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L31", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "callee": "values", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "callee": "getTenantConfigs", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "callee": "initDatabaseForTenant", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java", "source_location": "L37", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/f725738bee0191dbb098f835781c50d03516474117eaaad42ee82ea56593e051.json b/graphify-out/cache/ast/v0.9.5/f725738bee0191dbb098f835781c50d03516474117eaaad42ee82ea56593e051.json new file mode 100644 index 0000000..9805266 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/f725738bee0191dbb098f835781c50d03516474117eaaad42ee82ea56593e051.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "label": "WorkloadControllerTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest", "label": "WorkloadControllerTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L20", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "label": ".freeClassroomsSkipsNullAvailabilityWithoutNpe()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L22", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "label": ".classroom()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L42", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java"}, {"id": "classroom", "label": "Classroom", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "classroom", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "lifecycleentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "classroomrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "departmentrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "userrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "schedulequeryservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L11", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "any", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "eq", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L16", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "mock", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L17", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "when", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L20", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L22", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L42", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L42", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "target": "classroom", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L42", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L35", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "target": "classroom", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L43", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L24", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L25", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "WorkloadController", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L26", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "mock", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "search", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "eq", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L32", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L33", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "thenReturn", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "when", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "findByStatusNot", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L34", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L35", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "freeClassrooms", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "of", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L37", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "containsExactly", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "extracting", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L39", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "callee": "setId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L44", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "callee": "setName", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L45", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "callee": "setCapacity", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L46", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", "callee": "setIsAvailable", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", "source_location": "L47", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/f780074f83ea0da3ffe0f31d4280b6d3a220bc2d4a76ba9541102610fa193e09.json b/graphify-out/cache/ast/v0.9.5/f780074f83ea0da3ffe0f31d4280b6d3a220bc2d4a76ba9541102610fa193e09.json new file mode 100644 index 0000000..6359380 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/f780074f83ea0da3ffe0f31d4280b6d3a220bc2d4a76ba9541102610fa193e09.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_java", "label": "AcademicCalendarSubjectDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "label": "AcademicCalendarSubjectDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L4", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/f9f765f10868004c0a6ff2488b74a8cd7f709e99981f65ea511a4d41a092007f.json b/graphify-out/cache/ast/v0.9.5/f9f765f10868004c0a6ff2488b74a8cd7f709e99981f65ea511a4d41a092007f.json new file mode 100644 index 0000000..d4d64a4 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/f9f765f10868004c0a6ff2488b74a8cd7f709e99981f65ea511a4d41a092007f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "label": "ScheduleSearchController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "label": "ScheduleSearchController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L14", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "logger", "label": "Logger", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "schedulequeryservice", "label": "ScheduleQueryService", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_schedulesearchcontroller", "label": ".ScheduleSearchController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L23", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "label": ".search()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "localdate", "label": "LocalDate", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "responseentity", "label": "ResponseEntity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "schedulequeryservice", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "loggerfactory", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "datetimeformat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "responseentity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "annotation", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "localdate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L14", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L14", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "target": "logger", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "target": "schedulequeryservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_schedulesearchcontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L23", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_schedulesearchcontroller", "target": "schedulequeryservice", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L23", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "localdate", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "responseentity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L27", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "callee": "info", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L40", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", "callee": "ok", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", "source_location": "L42", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/fb33a9b25cf6a2ab5b936660fa1bdad0694ef97e7dc842176254ffffb984d02b.json b/graphify-out/cache/ast/v0.9.5/fb33a9b25cf6a2ab5b936660fa1bdad0694ef97e7dc842176254ffffb984d02b.json new file mode 100644 index 0000000..5a10a67 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/fb33a9b25cf6a2ab5b936660fa1bdad0694ef97e7dc842176254ffffb984d02b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "label": "LessonTypeController.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", "label": "LessonTypeController", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L15", "_callable": true}, {"id": "restcontroller", "label": "RestController", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java"}, {"id": "requestmapping", "label": "RequestMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java"}, {"id": "requireroles", "label": "RequireRoles", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java"}, {"id": "lessontypesrepository", "label": "LessonTypesRepository", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_lessontypecontroller", "label": ".LessonTypeController()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L22", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "label": ".getAllLessonTypes()", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L26", "_callable": true}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java"}, {"id": "lessontyperesponse", "label": "LessonTypeResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java"}, {"id": "getmapping", "label": "GetMapping", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "requireroles", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "lessontyperesponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L4", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "lessontype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "role", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L6", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "lessontypesrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "getmapping", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L8", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "requestmapping", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "restcontroller", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L10", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "comparator", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L12", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L13", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L15", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", "target": "restcontroller", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", "target": "requestmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", "target": "requireroles", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L15", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", "target": "lessontypesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_lessontypecontroller", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L22", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_lessontypecontroller", "target": "lessontypesrepository", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L22", "weight": 1.0, "context": "parameter_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L26", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L26", "weight": 1.0, "context": "return_type"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "target": "lessontyperesponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L26", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "target": "getmapping", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L26", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "target": "lessontyperesponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L30", "weight": 1.0}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "callee": "toList", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "callee": "stream", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "callee": "findAll", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L28", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "callee": "comparing", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L29", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "callee": "getId", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L30", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", "callee": "getLessonType", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", "source_location": "L30", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/fc268b7d990d94fd110dad6d6975423d6cabf98db7fe1563f6dbaa43acdee728.json b/graphify-out/cache/ast/v0.9.5/fc268b7d990d94fd110dad6d6975423d6cabf98db7fe1563f6dbaa43acdee728.json new file mode 100644 index 0000000..16e891e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/fc268b7d990d94fd110dad6d6975423d6cabf98db7fe1563f6dbaa43acdee728.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java", "label": "ScheduleRuleSlotDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "label": "ScheduleRuleSlotDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L7", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java"}, {"id": "scheduleparity", "label": "ScheduleParity", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java"}, {"id": "list", "label": "List", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java", "target": "scheduleparity", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java", "target": "list", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "scheduleparity", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L11", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L12", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L13", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L14", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L15", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L16", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L17", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L17", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "list", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L18", "weight": 1.0, "context": "generic_arg"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L19", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L20", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", "source_location": "L25", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ff3851273041230b15d39b3122b064cc7621d1977abcc6db0981dbbd4e9ff408.json b/graphify-out/cache/ast/v0.9.5/ff3851273041230b15d39b3122b064cc7621d1977abcc6db0981dbbd4e9ff408.json new file mode 100644 index 0000000..bd66749 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ff3851273041230b15d39b3122b064cc7621d1977abcc6db0981dbbd4e9ff408.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_java", "label": "TenantConfigWatcherTest.java", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest", "label": "TenantConfigWatcherTest", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L7", "_callable": true}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "label": ".configHashUsesSha256Hex()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L9", "_callable": true}, {"id": "test", "label": "Test", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", "label": ".configHashChangesWhenContentChanges()", "file_type": "code", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L18", "_callable": true}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_java", "target": "test", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_java", "target": "assertthat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L5", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L7", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L9", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L9", "weight": 1.0, "context": "attribute"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest", "target": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L18", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", "target": "test", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L18", "weight": 1.0, "context": "attribute"}], "raw_calls": [{"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "configHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L11", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "hasSize", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L13", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L13", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "matches", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L14", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L14", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "isNotEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "toHexString", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", "callee": "hashCode", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L15", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", "callee": "isNotEqualTo", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L20", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", "callee": "assertThat", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L20", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", "callee": "configHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L20", "receiver": null}, {"caller_nid": "mnt_hdd_projectmagistr_magistr_backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", "callee": "configHash", "is_member_call": false, "source_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", "source_location": "L21", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.5/ffa074c174080e33f759e902458714b94cbbfd6602cb6e2886ff19946fa77d92.json b/graphify-out/cache/ast/v0.9.5/ffa074c174080e33f759e902458714b94cbbfd6602cb6e2886ff19946fa77d92.json new file mode 100644 index 0000000..9c4821d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.5/ffa074c174080e33f759e902458714b94cbbfd6602cb6e2886ff19946fa77d92.json @@ -0,0 +1 @@ +{"nodes": [{"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java", "label": "AcademicCalendarActivityTypeDto.java", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L1"}, {"id": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "label": "AcademicCalendarActivityTypeDto", "file_type": "code", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L3", "_callable": true}, {"id": "long", "label": "Long", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java"}, {"id": "string", "label": "String", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java"}, {"id": "boolean", "label": "Boolean", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java"}, {"id": "integer", "label": "Integer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java"}], "edges": [{"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java", "target": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L3", "weight": 1.0}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "target": "long", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L4", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L5", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L6", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "target": "boolean", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L7", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L8", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "target": "integer", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L9", "weight": 1.0, "context": "field"}, {"source": "mnt_hdd_projectmagistr_magistr_backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", "source_location": "L10", "weight": 1.0, "context": "field"}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/03cb3b24fd230d64d15f36c5af1a96adeb89b080ab1bd9f58fe072464fb44ae1.json b/graphify-out/cache/semantic/03cb3b24fd230d64d15f36c5af1a96adeb89b080ab1bd9f58fe072464fb44ae1.json new file mode 100644 index 0000000..620ea53 --- /dev/null +++ b/graphify-out/cache/semantic/03cb3b24fd230d64d15f36c5af1a96adeb89b080ab1bd9f58fe072464fb44ae1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_academic_calendar_academic_calendar_view", "label": "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a", "file_type": "code", "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_academic_calendar_academic_year_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0447\u0435\u0431\u043d\u044b\u043c\u0438 \u0433\u043e\u0434\u0430\u043c\u0438", "file_type": "code", "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_academic_calendar_semester_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u043c\u0435\u0441\u0442\u0440\u0430\u043c\u0438", "file_type": "code", "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_academic_calendar_calendar_grid_editor", "label": "\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0433\u043e\u0434\u043e\u0432\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430", "file_type": "code", "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_academic_calendar_calendar_subject_bindings", "label": "\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d \u0433\u0440\u0430\u0444\u0438\u043a\u0430", "file_type": "code", "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_academic_calendar_calendar_day_dialog", "label": "\u0414\u0438\u0430\u043b\u043e\u0433 \u044f\u0447\u0435\u0439\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430", "file_type": "code", "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_academic_calendar_academic_calendar_view", "target": "frontend_admin_views_academic_calendar_academic_year_management", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_academic_calendar_academic_calendar_view", "target": "frontend_admin_views_academic_calendar_semester_management", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_academic_calendar_academic_calendar_view", "target": "frontend_admin_views_academic_calendar_calendar_grid_editor", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_academic_calendar_academic_calendar_view", "target": "frontend_admin_views_academic_calendar_calendar_subject_bindings", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_academic_calendar_academic_calendar_view", "target": "frontend_admin_views_academic_calendar_calendar_day_dialog", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_academic_calendar_calendar_grid_editor", "target": "docs_schedule_tasks_daily_academic_calendar_grid", "relation": "implements", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_academic_calendar_calendar_grid_editor", "target": "docs_schedule_tasks_activity_codes", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_academic_calendar_calendar_subject_bindings", "target": "frontend_admin_views_subjects_subject_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_academic_calendar_calendar_day_dialog", "target": "frontend_admin_settings_views_time_slots_time_slot_scope", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/academic-calendar.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/15a9d9065c1bb9bbbbadff87f1ebeec88481d2038094e0932c26061ca679295d.json b/graphify-out/cache/semantic/15a9d9065c1bb9bbbbadff87f1ebeec88481d2038094e0932c26061ca679295d.json new file mode 100644 index 0000000..8f03158 --- /dev/null +++ b/graphify-out/cache/semantic/15a9d9065c1bb9bbbbadff87f1ebeec88481d2038094e0932c26061ca679295d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_teacher_index_teacher_schedule_page", "label": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_teacher_identity", "label": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u0437 userId", "file_type": "concept", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_week_navigation", "label": "\u041d\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", "file_type": "concept", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_schedule_grid", "label": "\u0421\u0435\u0442\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", "file_type": "concept", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_responsive_schedule_layout", "label": "\u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", "file_type": "concept", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_loadschedule", "label": "loadSchedule", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_renderweek", "label": "renderWeek", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_rendermobileweek", "label": "renderMobileWeek", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_renderemptyweek", "label": "renderEmptyWeek", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_renderhead", "label": "renderHead", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_rendercell", "label": "renderCell", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_renderlesson", "label": "renderLesson", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_collectslots", "label": "collectSlots", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_fetchjson", "label": "fetchJson", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_refreshaccesstoken", "label": "refreshAccessToken", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_logout", "label": "logout", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_storeauthstate", "label": "storeAuthState", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_clearauthstate", "label": "clearAuthState", "file_type": "code", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_teacher_auth_state", "label": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", "file_type": "concept", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_api_schedule_teacher_endpoint", "label": "GET /api/schedule \u043f\u043e teacherId", "file_type": "concept", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_api_auth_refresh_endpoint", "label": "POST /api/auth/refresh", "file_type": "concept", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_teacher_index_api_auth_logout_endpoint", "label": "POST /api/auth/logout", "file_type": "concept", "source_file": "frontend/teacher/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_teacher_index_teacher_schedule_page", "target": "frontend_teacher_index_teacher_identity", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_teacher_schedule_page", "target": "frontend_teacher_index_week_navigation", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_teacher_schedule_page", "target": "frontend_teacher_index_schedule_grid", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_teacher_schedule_page", "target": "frontend_teacher_index_responsive_schedule_layout", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_teacher_schedule_page", "target": "frontend_teacher_index_loadschedule", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_teacher_identity", "target": "frontend_teacher_index_teacher_auth_state", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_loadschedule", "target": "frontend_teacher_index_api_schedule_teacher_endpoint", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_loadschedule", "target": "frontend_teacher_index_fetchjson", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_loadschedule", "target": "frontend_teacher_index_renderemptyweek", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_loadschedule", "target": "frontend_teacher_index_renderweek", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_renderweek", "target": "frontend_teacher_index_rendermobileweek", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_renderweek", "target": "frontend_teacher_index_collectslots", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_renderweek", "target": "frontend_teacher_index_renderhead", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_renderweek", "target": "frontend_teacher_index_rendercell", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_rendermobileweek", "target": "frontend_teacher_index_renderhead", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_rendermobileweek", "target": "frontend_teacher_index_renderlesson", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_renderemptyweek", "target": "frontend_teacher_index_renderhead", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_rendercell", "target": "frontend_teacher_index_renderlesson", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_fetchjson", "target": "frontend_teacher_index_refreshaccesstoken", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_fetchjson", "target": "frontend_teacher_index_clearauthstate", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_refreshaccesstoken", "target": "frontend_teacher_index_api_auth_refresh_endpoint", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_refreshaccesstoken", "target": "frontend_teacher_index_storeauthstate", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_logout", "target": "frontend_teacher_index_api_auth_logout_endpoint", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_logout", "target": "frontend_teacher_index_clearauthstate", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_fetchjson", "target": "frontend_teacher_index_teacher_auth_state", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_storeauthstate", "target": "frontend_teacher_index_teacher_auth_state", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_teacher_index_clearauthstate", "target": "frontend_teacher_index_teacher_auth_state", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/teacher/index.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/173a76139b84ae48e45be7485c218ff9562e98b43ba8d4f83d7149d3b8b5933c.json b/graphify-out/cache/semantic/173a76139b84ae48e45be7485c218ff9562e98b43ba8d4f83d7149d3b8b5933c.json new file mode 100644 index 0000000..b79a751 --- /dev/null +++ b/graphify-out/cache/semantic/173a76139b84ae48e45be7485c218ff9562e98b43ba8d4f83d7149d3b8b5933c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_schedule_tasks_dynamic_schedule_tasks", "label": "\u0417\u0430\u0434\u0430\u0447\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "document", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_tasks_daily_academic_calendar_grid", "label": "\u0414\u043d\u0435\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u043a\u0430 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f", "file_type": "concept", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_tasks_group_calendar_assignment", "label": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0433\u0440\u0443\u043f\u043f\u0435", "file_type": "concept", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_tasks_academicdateservice", "label": "AcademicDateService", "file_type": "code", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_tasks_schedulegeneratorservice", "label": "ScheduleGeneratorService", "file_type": "code", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_tasks_activity_codes", "label": "\u041a\u043e\u0434\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0439 Excel-\u0433\u0440\u0430\u0444\u0438\u043a\u0430", "file_type": "concept", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_tasks_laboratory_subgroups", "label": "\u041f\u043e\u0434\u0433\u0440\u0443\u043f\u043f\u044b \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0441\u043b\u043e\u0442\u043e\u0432", "file_type": "concept", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_tasks_schedule_api_endpoint", "label": "GET /api/schedule", "file_type": "concept", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_tasks_rule_conflict_validation", "label": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "docs_schedule_tasks_daily_academic_calendar_grid", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "docs_schedule_tasks_group_calendar_assignment", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "docs_schedule_tasks_activity_codes", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "docs_schedule_tasks_laboratory_subgroups", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "docs_schedule_tasks_schedule_api_endpoint", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "docs_schedule_tasks_rule_conflict_validation", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_academicdateservice", "target": "docs_schedule_tasks_group_calendar_assignment", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_schedulegeneratorservice", "target": "docs_schedule_tasks_daily_academic_calendar_grid", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "frontend_admin_views_academic_calendar_academic_calendar_view", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "frontend_admin_views_groups_group_management", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_tasks_dynamic_schedule_tasks", "target": "frontend_admin_views_schedule_schedule_rule_constructor", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/SCHEDULE_TASKS.md", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "schedule_generation_workspace", "label": "\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "nodes": ["docs_schedule_tasks_dynamic_schedule_tasks", "docs_schedule_tasks_daily_academic_calendar_grid", "docs_schedule_tasks_group_calendar_assignment", "frontend_admin_views_academic_calendar_academic_calendar_view", "frontend_admin_views_groups_group_management", "frontend_admin_views_schedule_schedule_rule_constructor", "frontend_admin_views_schedule_view_schedule_view_shell", "frontend_admin_settings_views_time_slots_time_slots_settings"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/SCHEDULE_TASKS.md"}]} \ No newline at end of file diff --git a/graphify-out/cache/semantic/1a20e690492ebe75e2010b6221d85ba6b9d96d75387a56ed75605e4a72e8eb91.json b/graphify-out/cache/semantic/1a20e690492ebe75e2010b6221d85ba6b9d96d75387a56ed75605e4a72e8eb91.json new file mode 100644 index 0000000..9aa0154 --- /dev/null +++ b/graphify-out/cache/semantic/1a20e690492ebe75e2010b6221d85ba6b9d96d75387a56ed75605e4a72e8eb91.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", "label": "\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "document", "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_dynamic_schedule_implementation_schedule_generator_service", "label": "ScheduleGeneratorService", "file_type": "concept", "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", "target": "docs_dynamic_schedule_implementation_schedule_generator_service", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", "source_location": null, "weight": 1.0}, {"source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", "target": "docs_business_logic_dynamic_schedule_model", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", "source_location": null, "weight": 1.0}, {"source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", "target": "docs_schedule_proposal_dynamic_schedule_concept", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/24b87c2c54b97822e5e74f04630d63ff30d55be451eeefa626c361a3cd551905.json b/graphify-out/cache/semantic/24b87c2c54b97822e5e74f04630d63ff30d55be451eeefa626c361a3cd551905.json new file mode 100644 index 0000000..f5f52cd --- /dev/null +++ b/graphify-out/cache/semantic/24b87c2c54b97822e5e74f04630d63ff30d55be451eeefa626c361a3cd551905.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_department_workspace_department_workspace_view", "label": "\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043a\u0430\u0444\u0435\u0434\u0440\u044b", "file_type": "code", "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_department_workspace_department_subject_import", "label": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d \u043a\u0430\u0444\u0435\u0434\u0440\u044b", "file_type": "code", "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_department_workspace_teacher_assignment", "label": "\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f \u043a \u043a\u0430\u0444\u0435\u0434\u0440\u0435", "file_type": "code", "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_department_workspace_teacher_request_form", "label": "\u0417\u0430\u044f\u0432\u043a\u0430 \u043a\u0430\u0444\u0435\u0434\u0440\u044b \u043d\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", "file_type": "code", "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_department_workspace_department_comments", "label": "\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a\u0430\u0444\u0435\u0434\u0440\u044b \u043f\u043e \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c", "file_type": "code", "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_department_workspace_department_workspace_view", "target": "frontend_admin_views_department_workspace_department_subject_import", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_department_workspace_department_workspace_view", "target": "frontend_admin_views_department_workspace_teacher_assignment", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_department_workspace_department_workspace_view", "target": "frontend_admin_views_department_workspace_teacher_request_form", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_department_workspace_department_workspace_view", "target": "frontend_admin_views_department_workspace_department_comments", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_department_workspace_teacher_request_form", "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_department_workspace_department_subject_import", "target": "frontend_admin_views_subjects_subject_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/department-workspace.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/33011a77448666247aa1746a8366860ddc403d7fccf6ca380868e4580fdbb552.json b/graphify-out/cache/semantic/33011a77448666247aa1746a8366860ddc403d7fccf6ca380868e4580fdbb552.json new file mode 100644 index 0000000..26f4ef8 --- /dev/null +++ b/graphify-out/cache/semantic/33011a77448666247aa1746a8366860ddc403d7fccf6ca380868e4580fdbb552.json @@ -0,0 +1 @@ +{"nodes": [{"id": "devops_resilient_multitenant_infrastructure", "label": "\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0430\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430", "file_type": "document", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_database_per_tenant_pattern", "label": "\u041f\u0430\u0442\u0442\u0435\u0440\u043d database-per-tenant", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_fz_152_data_isolation_rationale", "label": "\u041e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0424\u0417-152", "file_type": "rationale", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_k3s_cluster", "label": "K3s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_configmap_dynamic_tenant_management", "label": "\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043d\u0430\u043d\u0442\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 ConfigMap", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_h2_hikaricp_resiliency", "label": "\u0423\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c H2 \u0438 HikariCP", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_ansible_database_hosts", "label": "Ansible-\u0445\u043e\u0441\u0442\u044b \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_gitea_actions_cicd", "label": "CI/CD \u0447\u0435\u0440\u0435\u0437 Gitea Actions", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_caddy_proxy", "label": "Caddy proxy", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_signoz_opentelemetry_observability", "label": "\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c SigNoz \u0438 OpenTelemetry", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "devops_proxmox_database_vms", "label": "\u0412\u041c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Proxmox", "file_type": "concept", "source_file": "DEVOPS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "devops_resilient_multitenant_infrastructure", "target": "devops_database_per_tenant_pattern", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_resilient_multitenant_infrastructure", "target": "devops_k3s_cluster", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_resilient_multitenant_infrastructure", "target": "devops_proxmox_database_vms", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_resilient_multitenant_infrastructure", "target": "devops_ansible_database_hosts", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_resilient_multitenant_infrastructure", "target": "devops_caddy_proxy", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_resilient_multitenant_infrastructure", "target": "devops_signoz_opentelemetry_observability", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_fz_152_data_isolation_rationale", "target": "devops_database_per_tenant_pattern", "relation": "rationale_for", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_configmap_dynamic_tenant_management", "target": "docs_infrastructure_tenants_configmap", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_database_per_tenant_pattern", "target": "docs_architecture_multitenant_architecture", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_gitea_actions_cicd", "target": "docs_infrastructure_gitea_actions_cicd", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}, {"source": "devops_signoz_opentelemetry_observability", "target": "docs_logging_otlp_signoz_export", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "DEVOPS.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/3413a0d0a09372987819d0bcf43f802639604563d31fab32f9a18b18fa2771bc.json b/graphify-out/cache/semantic/3413a0d0a09372987819d0bcf43f802639604563d31fab32f9a18b18fa2771bc.json new file mode 100644 index 0000000..99d42b1 --- /dev/null +++ b/graphify-out/cache/semantic/3413a0d0a09372987819d0bcf43f802639604563d31fab32f9a18b18fa2771bc.json @@ -0,0 +1 @@ +{"nodes": [{"id": "bug_report_project_risk_audit", "label": "\u0410\u0443\u0434\u0438\u0442 \u0440\u0438\u0441\u043a\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430", "file_type": "document", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_jwt_insecure_production_defaults", "label": "\u041d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 production-defaults JWT", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_refresh_token_rotation_race_condition", "label": "\u0413\u043e\u043d\u043a\u0430 \u0440\u043e\u0442\u0430\u0446\u0438\u0438 refresh-\u0442\u043e\u043a\u0435\u043d\u043e\u0432", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_authcontext_threadlocal_leak", "label": "\u0423\u0442\u0435\u0447\u043a\u0430 ThreadLocal AuthContext", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_schedule_override_conflict_gap", "label": "\u041f\u0440\u043e\u0431\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 override \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_teacher_schedule_override_visibility_gap", "label": "\u041f\u0440\u043e\u0431\u0435\u043b \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 override \u0434\u043b\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_tenant_datasource_replacement_risk", "label": "\u0420\u0438\u0441\u043a \u0437\u0430\u043c\u0435\u043d\u044b DataSource \u0442\u0435\u043d\u0430\u043d\u0442\u0430", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_tenant_config_watcher_update_gap", "label": "\u041f\u0440\u043e\u0431\u0435\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f watcher \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_kubernetes_tls_trust_all_risk", "label": "\u0420\u0438\u0441\u043a Kubernetes TLS trust-all", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_department_import_subject_ownership_risk", "label": "\u0420\u0438\u0441\u043a \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c\u0438 \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u043a\u0430\u0444\u0435\u0434\u0440\u044b", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_workload_department_scope_risk", "label": "\u0420\u0438\u0441\u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u0430\u0444\u0435\u0434\u0440\u044b", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_semester_boundary_overlap_risk", "label": "\u0420\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u043d\u0438\u0446 \u0441\u0435\u043c\u0435\u0441\u0442\u0440\u043e\u0432", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_localstorage_access_token_risk", "label": "\u0420\u0438\u0441\u043a access token \u0432 localStorage", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_innerhtml_error_xss_risk", "label": "\u0420\u0438\u0441\u043a XSS \u0447\u0435\u0440\u0435\u0437 innerHTML \u043e\u0448\u0438\u0431\u043e\u043a", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "bug_report_opentelemetry_latest_supply_chain_risk", "label": "\u0420\u0438\u0441\u043a latest-\u0442\u0435\u0433\u0430 OpenTelemetry", "file_type": "concept", "source_file": "BUG_REPORT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "bug_report_project_risk_audit", "target": "bug_report_jwt_insecure_production_defaults", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_project_risk_audit", "target": "bug_report_refresh_token_rotation_race_condition", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_project_risk_audit", "target": "bug_report_authcontext_threadlocal_leak", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_project_risk_audit", "target": "bug_report_schedule_override_conflict_gap", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_project_risk_audit", "target": "bug_report_teacher_schedule_override_visibility_gap", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_project_risk_audit", "target": "bug_report_tenant_datasource_replacement_risk", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_project_risk_audit", "target": "bug_report_tenant_config_watcher_update_gap", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_project_risk_audit", "target": "bug_report_kubernetes_tls_trust_all_risk", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_jwt_insecure_production_defaults", "target": "docs_infrastructure_jwt_secret_policy", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_refresh_token_rotation_race_condition", "target": "docs_database_auth_refresh_tokens", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_authcontext_threadlocal_leak", "target": "docs_architecture_authentication", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_schedule_override_conflict_gap", "target": "docs_api_schedule_overrides_endpoints", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_teacher_schedule_override_visibility_gap", "target": "docs_api_dynamic_schedule_endpoints", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_tenant_datasource_replacement_risk", "target": "docs_api_tenant_database_endpoints", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_tenant_config_watcher_update_gap", "target": "docs_infrastructure_tenants_configmap", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_kubernetes_tls_trust_all_risk", "target": "docs_infrastructure_kubernetes_production", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_department_import_subject_ownership_risk", "target": "docs_api_department_workspace_endpoints", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_workload_department_scope_risk", "target": "docs_api_workload_endpoints", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_semester_boundary_overlap_risk", "target": "docs_academic_calendar_calendar_model", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_localstorage_access_token_risk", "target": "docs_frontend_api_client_refresh_flow", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_innerhtml_error_xss_risk", "target": "docs_frontend_frontend_architecture", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}, {"source": "bug_report_opentelemetry_latest_supply_chain_risk", "target": "docs_logging_otlp_signoz_export", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "BUG_REPORT.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/4869a5ccf169032e9c15b6f1309f89a27f853e9a9c045f44cf8eff97f4365e43.json b/graphify-out/cache/semantic/4869a5ccf169032e9c15b6f1309f89a27f853e9a9c045f44cf8eff97f4365e43.json new file mode 100644 index 0000000..eb2359f --- /dev/null +++ b/graphify-out/cache/semantic/4869a5ccf169032e9c15b6f1309f89a27f853e9a9c045f44cf8eff97f4365e43.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_frontend_frontend_architecture", "label": "Frontend-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430", "file_type": "document", "source_file": "docs/FRONTEND.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_frontend_admin_spa_routing", "label": "\u0420\u043e\u0443\u0442\u0438\u043d\u0433 admin SPA", "file_type": "concept", "source_file": "docs/FRONTEND.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_frontend_api_client_refresh_flow", "label": "Refresh-flow API-\u043a\u043b\u0438\u0435\u043d\u0442\u0430", "file_type": "concept", "source_file": "docs/FRONTEND.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_frontend_role_based_navigation", "label": "\u0420\u043e\u043b\u0435\u0432\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f", "file_type": "concept", "source_file": "docs/FRONTEND.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_frontend_schedule_views", "label": "Frontend-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/FRONTEND.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_frontend_settings_spa", "label": "SPA \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430", "file_type": "concept", "source_file": "docs/FRONTEND.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_frontend_css_architecture", "label": "CSS-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430", "file_type": "concept", "source_file": "docs/FRONTEND.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_frontend_opentelemetry_client", "label": "Frontend OpenTelemetry-\u043a\u043b\u0438\u0435\u043d\u0442", "file_type": "concept", "source_file": "docs/FRONTEND.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_frontend_frontend_architecture", "target": "docs_frontend_admin_spa_routing", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/FRONTEND.md", "source_location": null, "weight": 1.0}, {"source": "docs_frontend_frontend_architecture", "target": "docs_frontend_api_client_refresh_flow", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/FRONTEND.md", "source_location": null, "weight": 1.0}, {"source": "docs_frontend_frontend_architecture", "target": "docs_frontend_schedule_views", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/FRONTEND.md", "source_location": null, "weight": 1.0}, {"source": "docs_frontend_frontend_architecture", "target": "docs_frontend_settings_spa", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/FRONTEND.md", "source_location": null, "weight": 1.0}, {"source": "docs_frontend_api_client_refresh_flow", "target": "docs_api_authentication_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/FRONTEND.md", "source_location": null, "weight": 1.0}, {"source": "docs_frontend_role_based_navigation", "target": "docs_api_role_permissions", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/FRONTEND.md", "source_location": null, "weight": 1.0}, {"source": "docs_frontend_schedule_views", "target": "docs_api_dynamic_schedule_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/FRONTEND.md", "source_location": null, "weight": 1.0}, {"source": "docs_frontend_opentelemetry_client", "target": "docs_infrastructure_signoz_opentelemetry", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/FRONTEND.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/4b3431196d12bc8e7a5daac6ad11ed9bc12716d0c98dc22ff28507df76418566.json b/graphify-out/cache/semantic/4b3431196d12bc8e7a5daac6ad11ed9bc12716d0c98dc22ff28507df76418566.json new file mode 100644 index 0000000..91c5b31 --- /dev/null +++ b/graphify-out/cache/semantic/4b3431196d12bc8e7a5daac6ad11ed9bc12716d0c98dc22ff28507df76418566.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_schedule_view_schedule_view_shell", "label": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0439", "file_type": "code", "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_schedule_view_target_filters", "label": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0439", "file_type": "code", "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_schedule_view_schedule_results", "label": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0439", "file_type": "code", "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_schedule_view_schedule_view_shell", "target": "frontend_admin_views_schedule_view_target_filters", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_view_schedule_view_shell", "target": "frontend_admin_views_schedule_view_schedule_results", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_view_target_filters", "target": "frontend_admin_views_groups_group_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_view_target_filters", "target": "frontend_admin_views_classrooms_classroom_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_view_target_filters", "target": "frontend_admin_views_subjects_subject_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_view_target_filters", "target": "frontend_admin_views_university_structure_department_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/schedule-view.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/4d400563b1e9574d313773df7a7237b718cf3df0c9b551019abf9a7aa65ef1e3.json b/graphify-out/cache/semantic/4d400563b1e9574d313773df7a7237b718cf3df0c9b551019abf9a7aa65ef1e3.json new file mode 100644 index 0000000..30497e6 --- /dev/null +++ b/graphify-out/cache/semantic/4d400563b1e9574d313773df7a7237b718cf3df0c9b551019abf9a7aa65ef1e3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "_agents_skills_auto_update_docs_skill_autoupdatedocs_skill", "label": "SKILL.md AutoUpdateDocs", "file_type": "document", "source_file": ".agents/skills/auto-update-docs/SKILL.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_agents_skills_auto_update_docs_skill_frontend_settings_docs_map", "label": "\u041a\u0430\u0440\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430", "file_type": "concept", "source_file": ".agents/skills/auto-update-docs/SKILL.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "_agents_skills_auto_update_docs_skill_autoupdatedocs_skill", "target": "_agents_skills_autoupdatedocs_autoupdatedocs_skill", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": ".agents/skills/auto-update-docs/SKILL.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_auto_update_docs_skill_frontend_settings_docs_map", "target": "docs_frontend_frontend_architecture", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/auto-update-docs/SKILL.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/4d8a981d03c6584758a3b73a7cf627e7fb149612542a7606de62324d21e4bc1c.json b/graphify-out/cache/semantic/4d8a981d03c6584758a3b73a7cf627e7fb149612542a7606de62324d21e4bc1c.json new file mode 100644 index 0000000..ca12b27 --- /dev/null +++ b/graphify-out/cache/semantic/4d8a981d03c6584758a3b73a7cf627e7fb149612542a7606de62324d21e4bc1c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_settings_views_database_tenant_connection_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432", "file_type": "code", "source_file": "frontend/admin/settings/views/database.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_settings_views_database_tenants_table", "label": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u043e\u0432", "file_type": "code", "source_file": "frontend/admin/settings/views/database.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_settings_views_database_tenant_connection_management", "target": "frontend_admin_settings_views_database_tenants_table", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/settings/views/database.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/5355390726e08345f7919f92703ded4d758638ba00f1b28b36cf07ff286a0698.json b/graphify-out/cache/semantic/5355390726e08345f7919f92703ded4d758638ba00f1b28b36cf07ff286a0698.json new file mode 100644 index 0000000..820769b --- /dev/null +++ b/graphify-out/cache/semantic/5355390726e08345f7919f92703ded4d758638ba00f1b28b36cf07ff286a0698.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_subjects_subject_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c\u0438", "file_type": "code", "source_file": "frontend/admin/views/subjects.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_subjects_teacher_subject_binding", "label": "\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043a \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0435", "file_type": "code", "source_file": "frontend/admin/views/subjects.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_subjects_subject_management", "target": "frontend_admin_views_subjects_teacher_subject_binding", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/subjects.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_subjects_subject_management", "target": "frontend_admin_views_university_structure_department_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/subjects.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_subjects_teacher_subject_binding", "target": "frontend_admin_views_users_user_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/subjects.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/59109423780150add219ecad810ba96b031107bafc3194cdb290d8f27068a9d9.json b/graphify-out/cache/semantic/59109423780150add219ecad810ba96b031107bafc3194cdb290d8f27068a9d9.json new file mode 100644 index 0000000..b6ab7c7 --- /dev/null +++ b/graphify-out/cache/semantic/59109423780150add219ecad810ba96b031107bafc3194cdb290d8f27068a9d9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_ui_components_ui_components_document", "label": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f UI-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432", "file_type": "document", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_custom_select_wrapper", "label": "\u041e\u0431\u0435\u0440\u0442\u043a\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e select", "file_type": "concept", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_global_mutationobserver", "label": "\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 MutationObserver \u0434\u043b\u044f select", "file_type": "concept", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_frontend_admin_js_dropdown_js", "label": "frontend/admin/js/dropdown.js", "file_type": "code", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_customselect", "label": "CustomSelect", "file_type": "code", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_native_select", "label": "\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 select", "file_type": "concept", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_multi_select", "label": "Multi-select \u0441 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430\u043c\u0438", "file_type": "concept", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_utils_initmultiselect", "label": "initMultiSelect \u0438\u0437 utils.js", "file_type": "code", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_checkbox_item_checkmark", "label": "checkbox-item \u0438 checkmark", "file_type": "concept", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_browser_option_styling_limit", "label": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 option", "file_type": "rationale", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_ui_components_dynamic_options_sync", "label": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f option", "file_type": "concept", "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_ui_components_ui_components_document", "target": "docs_ui_components_custom_select_wrapper", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_ui_components_document", "target": "docs_ui_components_multi_select", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_custom_select_wrapper", "target": "docs_ui_components_native_select", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_custom_select_wrapper", "target": "docs_ui_components_global_mutationobserver", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_custom_select_wrapper", "target": "docs_ui_components_frontend_admin_js_dropdown_js", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_custom_select_wrapper", "target": "docs_ui_components_customselect", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_customselect", "target": "docs_ui_components_dynamic_options_sync", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_multi_select", "target": "docs_ui_components_utils_initmultiselect", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_multi_select", "target": "docs_ui_components_checkbox_item_checkmark", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_browser_option_styling_limit", "target": "docs_ui_components_custom_select_wrapper", "relation": "rationale_for", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_browser_option_styling_limit", "target": "docs_ui_components_multi_select", "relation": "rationale_for", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_multi_select", "target": "frontend_admin_views_auditorium_workload_workload_filters", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_multi_select", "target": "frontend_admin_views_classrooms_equipment_multi_select", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}, {"source": "docs_ui_components_multi_select", "target": "frontend_admin_views_schedule_schedule_group_multiselect", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/UI_COMPONENTS.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/5ca790c7c56079cd03f50229fa6725ef88662e01ecf2c14514cd38b4bd06bfa2.json b/graphify-out/cache/semantic/5ca790c7c56079cd03f50229fa6725ef88662e01ecf2c14514cd38b4bd06bfa2.json new file mode 100644 index 0000000..b07fd0f --- /dev/null +++ b/graphify-out/cache/semantic/5ca790c7c56079cd03f50229fa6725ef88662e01ecf2c14514cd38b4bd06bfa2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_edu_office_index_edu_office_redirect_page", "label": "\u0420\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u0430", "file_type": "code", "source_file": "frontend/edu-office/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_edu_office_index_admin_schedule_view_route", "label": "\u041c\u0430\u0440\u0448\u0440\u0443\u0442 /admin/#schedule-view", "file_type": "concept", "source_file": "frontend/edu-office/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/60917d6ab3b7841b1270ddf0dd974e4ba55b0d6eb7c427a12787ac839377cc5e.json b/graphify-out/cache/semantic/60917d6ab3b7841b1270ddf0dd974e4ba55b0d6eb7c427a12787ac839377cc5e.json new file mode 100644 index 0000000..021ddb2 --- /dev/null +++ b/graphify-out/cache/semantic/60917d6ab3b7841b1270ddf0dd974e4ba55b0d6eb7c427a12787ac839377cc5e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_users_user_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438", "file_type": "code", "source_file": "frontend/admin/views/users.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_users_role_selector", "label": "\u0412\u044b\u0431\u043e\u0440 \u0440\u043e\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", "file_type": "code", "source_file": "frontend/admin/views/users.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_users_user_management", "target": "frontend_admin_views_users_role_selector", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/users.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_users_role_selector", "target": "frontend_admin_views_department_workspace_department_workspace_view", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "frontend/admin/views/users.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_users_user_management", "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "frontend/admin/views/users.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/61bfeffa24fa77fea6208ef14daaf80e0128358cac0a89c1da4741e6f49d034a.json b/graphify-out/cache/semantic/61bfeffa24fa77fea6208ef14daaf80e0128358cac0a89c1da4741e6f49d034a.json new file mode 100644 index 0000000..837bf17 --- /dev/null +++ b/graphify-out/cache/semantic/61bfeffa24fa77fea6208ef14daaf80e0128358cac0a89c1da4741e6f49d034a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_api_rest_api", "label": "REST API", "file_type": "document", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_authentication_endpoints", "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_role_permissions", "label": "\u041f\u0440\u0430\u0432\u0430 \u0440\u043e\u043b\u0435\u0439 API", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_dynamic_schedule_endpoints", "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_schedule_rules_endpoints", "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_schedule_overrides_endpoints", "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b override \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_department_workspace_endpoints", "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0430 \u043a\u0430\u0444\u0435\u0434\u0440\u044b", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_tenant_database_endpoints", "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0411\u0414 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_workload_endpoints", "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_api_group_calendar_assignments", "label": "API \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0433\u0440\u0443\u043f\u043f\u0435", "file_type": "concept", "source_file": "docs/API.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_api_rest_api", "target": "docs_api_authentication_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_rest_api", "target": "docs_api_dynamic_schedule_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_rest_api", "target": "docs_api_schedule_rules_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_rest_api", "target": "docs_api_schedule_overrides_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_rest_api", "target": "docs_api_department_workspace_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_rest_api", "target": "docs_api_tenant_database_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_authentication_endpoints", "target": "docs_database_auth_refresh_tokens", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_dynamic_schedule_endpoints", "target": "docs_business_logic_dynamic_schedule_model", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_schedule_rules_endpoints", "target": "docs_database_dynamic_schedule_tables", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_schedule_overrides_endpoints", "target": "docs_database_dynamic_schedule_tables", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}, {"source": "docs_api_tenant_database_endpoints", "target": "docs_infrastructure_tenants_configmap", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/API.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/63bea36eac33009edd625210adb67bc891ec08ced7dc95b452a1f84471d3c23e.json b/graphify-out/cache/semantic/63bea36eac33009edd625210adb67bc891ec08ced7dc95b452a1f84471d3c23e.json new file mode 100644 index 0000000..e5d5d17 --- /dev/null +++ b/graphify-out/cache/semantic/63bea36eac33009edd625210adb67bc891ec08ced7dc95b452a1f84471d3c23e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_readme_magistr_overview", "label": "\u041e\u0431\u0437\u043e\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u041c\u0430\u0433\u0438\u0441\u0442\u0440", "file_type": "document", "source_file": "docs/README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_readme_magistr_overview", "target": "docs_architecture_system_architecture", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/README.md", "source_location": null, "weight": 1.0}, {"source": "docs_readme_magistr_overview", "target": "docs_business_logic_role_model", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/README.md", "source_location": null, "weight": 1.0}, {"source": "docs_readme_magistr_overview", "target": "docs_academic_calendar_calendar_model", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/README.md", "source_location": null, "weight": 1.0}, {"source": "docs_readme_magistr_overview", "target": "docs_database_database_schema", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/README.md", "source_location": null, "weight": 1.0}, {"source": "docs_readme_magistr_overview", "target": "docs_api_rest_api", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/README.md", "source_location": null, "weight": 1.0}, {"source": "docs_readme_magistr_overview", "target": "docs_infrastructure_docker_compose", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/README.md", "source_location": null, "weight": 1.0}, {"source": "docs_readme_magistr_overview", "target": "docs_development_developer_guide", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/README.md", "source_location": null, "weight": 1.0}, {"source": "docs_readme_magistr_overview", "target": "docs_frontend_frontend_architecture", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/README.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/87c3e71cd7bb465836bd53238f2e19a755f5f28544aa58c2f79de9173aa923a2.json b/graphify-out/cache/semantic/87c3e71cd7bb465836bd53238f2e19a755f5f28544aa58c2f79de9173aa923a2.json new file mode 100644 index 0000000..44db61f --- /dev/null +++ b/graphify-out/cache/semantic/87c3e71cd7bb465836bd53238f2e19a755f5f28544aa58c2f79de9173aa923a2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_settings_index_settings_spa_shell", "label": "\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 SPA \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", "file_type": "code", "source_file": "frontend/admin/settings/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_settings_index_settings_navigation", "label": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", "file_type": "code", "source_file": "frontend/admin/settings/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_settings_index_admin_back_link", "label": "\u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u044c", "file_type": "code", "source_file": "frontend/admin/settings/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_settings_index_settings_spa_shell", "target": "frontend_admin_settings_index_settings_navigation", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/settings/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_settings_index_settings_spa_shell", "target": "frontend_admin_settings_index_admin_back_link", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/settings/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_settings_index_admin_back_link", "target": "frontend_admin_index_admin_spa_shell", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/settings/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_settings_index_settings_navigation", "target": "frontend_admin_settings_views_general_general_settings_placeholder", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/settings/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_settings_index_settings_navigation", "target": "frontend_admin_settings_views_time_slots_time_slots_settings", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/settings/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_settings_index_settings_navigation", "target": "frontend_admin_settings_views_edu_forms_education_forms_management", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/settings/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_settings_index_settings_navigation", "target": "frontend_admin_settings_views_database_tenant_connection_management", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/settings/index.html", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "settings_spa_route_system", "label": "\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b SPA \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", "nodes": ["frontend_admin_settings_index_settings_spa_shell", "frontend_admin_settings_index_settings_navigation", "frontend_admin_settings_views_general_general_settings_placeholder", "frontend_admin_settings_views_time_slots_time_slots_settings", "frontend_admin_settings_views_edu_forms_education_forms_management", "frontend_admin_settings_views_database_tenant_connection_management"], "relation": "form", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/settings/index.html"}]} \ No newline at end of file diff --git a/graphify-out/cache/semantic/89d881d5a2af905839681afcd82d1e62c456d9028a954da4d5e28d3c6705ee05.json b/graphify-out/cache/semantic/89d881d5a2af905839681afcd82d1e62c456d9028a954da4d5e28d3c6705ee05.json new file mode 100644 index 0000000..5d3b9a9 --- /dev/null +++ b/graphify-out/cache/semantic/89d881d5a2af905839681afcd82d1e62c456d9028a954da4d5e28d3c6705ee05.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_department_index_department_redirect", "label": "\u0420\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u0432 \u043a\u0430\u0431\u0438\u043d\u0435\u0442 \u043a\u0430\u0444\u0435\u0434\u0440\u044b", "file_type": "code", "source_file": "frontend/department/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_department_index_department_redirect", "target": "frontend_admin_views_department_workspace_department_workspace_view", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/department/index.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/8a24c26dee76ad948b77f02bd32c31b17fe78afc8f8996d6d745d48c6c1fd3da.json b/graphify-out/cache/semantic/8a24c26dee76ad948b77f02bd32c31b17fe78afc8f8996d6d745d48c6c1fd3da.json new file mode 100644 index 0000000..772598d --- /dev/null +++ b/graphify-out/cache/semantic/8a24c26dee76ad948b77f02bd32c31b17fe78afc8f8996d6d745d48c6c1fd3da.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_auditorium_workload_workload_view", "label": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438", "file_type": "code", "source_file": "frontend/admin/views/auditorium-workload.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_auditorium_workload_workload_filters", "label": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438", "file_type": "code", "source_file": "frontend/admin/views/auditorium-workload.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_auditorium_workload_workload_view", "target": "frontend_admin_views_auditorium_workload_workload_filters", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/auditorium-workload.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_auditorium_workload_workload_filters", "target": "docs_ui_components_multi_select", "relation": "implements", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/auditorium-workload.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_auditorium_workload_workload_view", "target": "frontend_admin_views_classrooms_classroom_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/auditorium-workload.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/931b88c5ffe93ff26026fc36828dcbe13a591610311588b9886db8f1166f682c.json b/graphify-out/cache/semantic/931b88c5ffe93ff26026fc36828dcbe13a591610311588b9886db8f1166f682c.json new file mode 100644 index 0000000..0547c17 --- /dev/null +++ b/graphify-out/cache/semantic/931b88c5ffe93ff26026fc36828dcbe13a591610311588b9886db8f1166f682c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_dashboard_dashboard_view", "label": "\u0414\u0430\u0448\u0431\u043e\u0440\u0434 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430", "file_type": "code", "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_dashboard_realtime_monitoring", "label": "\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0430\u0440", "file_type": "code", "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_dashboard_conflict_center", "label": "\u0426\u0435\u043d\u0442\u0440 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 Red Zone", "file_type": "code", "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_dashboard_quick_navigation", "label": "\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430", "file_type": "code", "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_dashboard_dashboard_view", "target": "frontend_admin_views_dashboard_realtime_monitoring", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_dashboard_dashboard_view", "target": "frontend_admin_views_dashboard_conflict_center", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_dashboard_dashboard_view", "target": "frontend_admin_views_dashboard_quick_navigation", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_dashboard_quick_navigation", "target": "frontend_admin_views_schedule_schedule_rule_constructor", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_dashboard_quick_navigation", "target": "frontend_admin_views_schedule_view_schedule_view_shell", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_dashboard_conflict_center", "target": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/dashboard.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/98a6c270ec5f6a8f06c7df05946356074e6379cdff51a1921a509931046de207.json b/graphify-out/cache/semantic/98a6c270ec5f6a8f06c7df05946356074e6379cdff51a1921a509931046de207.json new file mode 100644 index 0000000..238d30b --- /dev/null +++ b/graphify-out/cache/semantic/98a6c270ec5f6a8f06c7df05946356074e6379cdff51a1921a509931046de207.json @@ -0,0 +1 @@ +{"nodes": [{"id": "_gitea_workflows_docker_build_build_and_push_docker_images", "label": "Workflow \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 Docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432", "file_type": "document", "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_gitea_workflows_docker_build_backend_image_pipeline", "label": "Pipeline backend-\u043e\u0431\u0440\u0430\u0437\u0430", "file_type": "concept", "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_gitea_workflows_docker_build_frontend_image_pipeline", "label": "Pipeline frontend-\u043e\u0431\u0440\u0430\u0437\u0430", "file_type": "concept", "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_gitea_workflows_docker_build_deploy_to_k8s", "label": "Job \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Kubernetes", "file_type": "concept", "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_gitea_workflows_docker_build_zuev_token_secret", "label": "Secret ZUEV_TOKEN", "file_type": "concept", "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_gitea_workflows_docker_build_kubeconfig_secret", "label": "Secret KUBECONFIG_DATA", "file_type": "concept", "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "_gitea_workflows_docker_build_build_and_push_docker_images", "target": "_gitea_workflows_docker_build_backend_image_pipeline", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "weight": 1.0}, {"source": "_gitea_workflows_docker_build_build_and_push_docker_images", "target": "_gitea_workflows_docker_build_frontend_image_pipeline", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "weight": 1.0}, {"source": "_gitea_workflows_docker_build_build_and_push_docker_images", "target": "_gitea_workflows_docker_build_deploy_to_k8s", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "weight": 1.0}, {"source": "_gitea_workflows_docker_build_backend_image_pipeline", "target": "_gitea_workflows_docker_build_zuev_token_secret", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "weight": 1.0}, {"source": "_gitea_workflows_docker_build_frontend_image_pipeline", "target": "_gitea_workflows_docker_build_zuev_token_secret", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "weight": 1.0}, {"source": "_gitea_workflows_docker_build_deploy_to_k8s", "target": "_gitea_workflows_docker_build_kubeconfig_secret", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "weight": 1.0}, {"source": "_gitea_workflows_docker_build_deploy_to_k8s", "target": "docs_infrastructure_kubernetes_production", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": ".gitea/workflows/docker-build.yaml", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/9c3d33283424b07a83cd3191f3c643a2fce831c869ee6abe9c29f5ea1798cea9.json b/graphify-out/cache/semantic/9c3d33283424b07a83cd3191f3c643a2fce831c869ee6abe9c29f5ea1798cea9.json new file mode 100644 index 0000000..344af1f --- /dev/null +++ b/graphify-out/cache/semantic/9c3d33283424b07a83cd3191f3c643a2fce831c869ee6abe9c29f5ea1798cea9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_index_login_page", "label": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438", "file_type": "code", "source_file": "frontend/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_index_login_form", "label": "\u0424\u043e\u0440\u043c\u0430 \u0432\u0445\u043e\u0434\u0430", "file_type": "code", "source_file": "frontend/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_index_theme_toggle_script", "label": "theme-toggle.js \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0445\u043e\u0434\u0430", "file_type": "code", "source_file": "frontend/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_index_login_script", "label": "script.js \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0445\u043e\u0434\u0430", "file_type": "code", "source_file": "frontend/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_index_login_page", "target": "frontend_index_login_form", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_index_login_page", "target": "frontend_index_theme_toggle_script", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_index_login_page", "target": "frontend_index_login_script", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/index.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/a6b42568da40f9bc47bb6935780f7b9b599aaa26c9ccaab9db48896f7e02ca0a.json b/graphify-out/cache/semantic/a6b42568da40f9bc47bb6935780f7b9b599aaa26c9ccaab9db48896f7e02ca0a.json new file mode 100644 index 0000000..f31b8be --- /dev/null +++ b/graphify-out/cache/semantic/a6b42568da40f9bc47bb6935780f7b9b599aaa26c9ccaab9db48896f7e02ca0a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_settings_views_edu_forms_education_forms_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f", "file_type": "code", "source_file": "frontend/admin/settings/views/edu-forms.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/a7aa3cd8a07df38deb64d6df843eff69e8d42bf840b1c1cc16166115ecf64022.json b/graphify-out/cache/semantic/a7aa3cd8a07df38deb64d6df843eff69e8d42bf840b1c1cc16166115ecf64022.json new file mode 100644 index 0000000..2c2f460 --- /dev/null +++ b/graphify-out/cache/semantic/a7aa3cd8a07df38deb64d6df843eff69e8d42bf840b1c1cc16166115ecf64022.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", "label": "\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439", "file_type": "code", "source_file": "frontend/admin/views/teacher-requests.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", "target": "frontend_admin_views_department_workspace_teacher_request_form", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/teacher-requests.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/aaf739ac8899207e46a0074b4720cfdecc2d236c9e0ee174b7c6d6c4e2beca72.json b/graphify-out/cache/semantic/aaf739ac8899207e46a0074b4720cfdecc2d236c9e0ee174b7c6d6c4e2beca72.json new file mode 100644 index 0000000..1c4b6c6 --- /dev/null +++ b/graphify-out/cache/semantic/aaf739ac8899207e46a0074b4720cfdecc2d236c9e0ee174b7c6d6c4e2beca72.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_logging_logging_stack", "label": "\u0421\u0442\u0435\u043a \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f", "file_type": "document", "source_file": "docs/LOGGING.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_logging_tenant_mdc_context", "label": "MDC-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0442\u0435\u043d\u0430\u043d\u0442\u0430", "file_type": "concept", "source_file": "docs/LOGGING.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_logging_otlp_signoz_export", "label": "OTLP \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 SigNoz", "file_type": "concept", "source_file": "docs/LOGGING.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_logging_logging_stack", "target": "docs_logging_tenant_mdc_context", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/LOGGING.md", "source_location": null, "weight": 1.0}, {"source": "docs_logging_logging_stack", "target": "docs_logging_otlp_signoz_export", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/LOGGING.md", "source_location": null, "weight": 1.0}, {"source": "docs_logging_tenant_mdc_context", "target": "docs_architecture_multitenant_architecture", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/LOGGING.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/af1ea61775a746d5b4dc2b7d2f812eb3e5e6c62fea26712db6e08425f9516031.json b/graphify-out/cache/semantic/af1ea61775a746d5b4dc2b7d2f812eb3e5e6c62fea26712db6e08425f9516031.json new file mode 100644 index 0000000..8516cbc --- /dev/null +++ b/graphify-out/cache/semantic/af1ea61775a746d5b4dc2b7d2f812eb3e5e6c62fea26712db6e08425f9516031.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_index_admin_spa_shell", "label": "\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u0438", "file_type": "code", "source_file": "frontend/admin/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_index_sidebar_navigation", "label": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u0438", "file_type": "code", "source_file": "frontend/admin/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_index_settings_menu", "label": "\u041c\u0435\u043d\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0432\u044b\u0445\u043e\u0434\u0430", "file_type": "code", "source_file": "frontend/admin/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_index_teacher_request_badge", "label": "\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u044f\u0432\u043e\u043a \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439", "file_type": "code", "source_file": "frontend/admin/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_index_admin_spa_shell", "target": "frontend_admin_index_sidebar_navigation", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_admin_spa_shell", "target": "frontend_admin_index_settings_menu", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_admin_spa_shell", "target": "frontend_admin_index_teacher_request_badge", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_settings_menu", "target": "frontend_admin_settings_index_settings_spa_shell", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_dashboard_dashboard_view", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_department_workspace_department_workspace_view", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_schedule_schedule_rule_constructor", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_academic_calendar_academic_calendar_view", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_auditorium_workload_workload_view", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_schedule_view_schedule_view_shell", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_classrooms_classroom_management", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_groups_group_management", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_university_structure_university_structure_view", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_subjects_subject_management", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_index_sidebar_navigation", "target": "frontend_admin_views_users_user_management", "relation": "references", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "admin_spa_route_system", "label": "\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u043e\u0439 SPA", "nodes": ["frontend_admin_index_admin_spa_shell", "frontend_admin_index_sidebar_navigation", "frontend_admin_views_dashboard_dashboard_view", "frontend_admin_views_teacher_requests_teacher_requests_admin_view", "frontend_admin_views_department_workspace_department_workspace_view", "frontend_admin_views_schedule_schedule_rule_constructor", "frontend_admin_views_academic_calendar_academic_calendar_view", "frontend_admin_views_auditorium_workload_workload_view", "frontend_admin_views_schedule_view_schedule_view_shell", "frontend_admin_views_classrooms_classroom_management", "frontend_admin_views_groups_group_management", "frontend_admin_views_university_structure_university_structure_view", "frontend_admin_views_subjects_subject_management", "frontend_admin_views_users_user_management"], "relation": "form", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/index.html"}]} \ No newline at end of file diff --git a/graphify-out/cache/semantic/b5717d2b90d1b16d7477ae582a81010d4ede5a1ff8da4699c04ab5974d82fee9.json b/graphify-out/cache/semantic/b5717d2b90d1b16d7477ae582a81010d4ede5a1ff8da4699c04ab5974d82fee9.json new file mode 100644 index 0000000..0cc769f --- /dev/null +++ b/graphify-out/cache/semantic/b5717d2b90d1b16d7477ae582a81010d4ede5a1ff8da4699c04ab5974d82fee9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_schedule_proposal_dynamic_schedule_concept", "label": "\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "document", "source_file": "docs/SCHEDULE_PROPOSAL.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_proposal_calendar_layer", "label": "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u0441\u043b\u043e\u0439", "file_type": "concept", "source_file": "docs/SCHEDULE_PROPOSAL.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_schedule_proposal_schedule_rules_layer", "label": "\u0421\u043b\u043e\u0439 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/SCHEDULE_PROPOSAL.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_schedule_proposal_dynamic_schedule_concept", "target": "docs_schedule_proposal_calendar_layer", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_PROPOSAL.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_proposal_dynamic_schedule_concept", "target": "docs_schedule_proposal_schedule_rules_layer", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SCHEDULE_PROPOSAL.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_proposal_calendar_layer", "target": "docs_academic_calendar_calendar_model", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/SCHEDULE_PROPOSAL.md", "source_location": null, "weight": 1.0}, {"source": "docs_schedule_proposal_schedule_rules_layer", "target": "docs_database_dynamic_schedule_tables", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/SCHEDULE_PROPOSAL.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/b69ef33646f7cf2557488304388df4f3d08bc920b7dcfd72deddb4eab75d659a.json b/graphify-out/cache/semantic/b69ef33646f7cf2557488304388df4f3d08bc920b7dcfd72deddb4eab75d659a.json new file mode 100644 index 0000000..98ab353 --- /dev/null +++ b/graphify-out/cache/semantic/b69ef33646f7cf2557488304388df4f3d08bc920b7dcfd72deddb4eab75d659a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "compose_backend_service", "label": "Backend-\u0441\u0435\u0440\u0432\u0438\u0441 Docker Compose", "file_type": "concept", "source_file": "compose.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "compose_frontend_service", "label": "Frontend-\u0441\u0435\u0440\u0432\u0438\u0441 Docker Compose", "file_type": "concept", "source_file": "compose.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "compose_db_service", "label": "PostgreSQL-\u0441\u0435\u0440\u0432\u0438\u0441 Docker Compose", "file_type": "concept", "source_file": "compose.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "compose_proxy_network", "label": "\u0412\u043d\u0435\u0448\u043d\u044f\u044f proxy-\u0441\u0435\u0442\u044c Docker", "file_type": "concept", "source_file": "compose.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "compose_postgres_password_required", "label": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f POSTGRES_PASSWORD", "file_type": "concept", "source_file": "compose.yaml", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "compose_backend_service", "target": "compose_db_service", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "compose.yaml", "source_location": null, "weight": 1.0}, {"source": "compose_frontend_service", "target": "compose_backend_service", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "compose.yaml", "source_location": null, "weight": 1.0}, {"source": "compose_backend_service", "target": "compose_proxy_network", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "compose.yaml", "source_location": null, "weight": 1.0}, {"source": "compose_frontend_service", "target": "compose_proxy_network", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "compose.yaml", "source_location": null, "weight": 1.0}, {"source": "compose_db_service", "target": "compose_proxy_network", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "compose.yaml", "source_location": null, "weight": 1.0}, {"source": "compose_postgres_password_required", "target": "compose_db_service", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "compose.yaml", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/b7dacf862e07335084136722148186332ae064f1bb22e7fb8b0988e4203059a6.json b/graphify-out/cache/semantic/b7dacf862e07335084136722148186332ae064f1bb22e7fb8b0988e4203059a6.json new file mode 100644 index 0000000..2a80d34 --- /dev/null +++ b/graphify-out/cache/semantic/b7dacf862e07335084136722148186332ae064f1bb22e7fb8b0988e4203059a6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "_agents_skills_frontend_design_skill_frontend_design_skill", "label": "\u041d\u0430\u0432\u044b\u043a frontend-design", "file_type": "document", "source_file": ".agents/skills/frontend-design/SKILL.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_agents_skills_frontend_design_skill_design_thinking", "label": "\u0414\u0438\u0437\u0430\u0439\u043d-\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430", "file_type": "concept", "source_file": ".agents/skills/frontend-design/SKILL.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_agents_skills_frontend_design_skill_no_ai_aesthetic_rule", "label": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u043e\u0442\u0438\u0432 AI-\u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0438", "file_type": "concept", "source_file": ".agents/skills/frontend-design/SKILL.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "_agents_skills_frontend_design_skill_frontend_design_skill", "target": "_agents_skills_frontend_design_skill_design_thinking", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/frontend-design/SKILL.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_frontend_design_skill_frontend_design_skill", "target": "_agents_skills_frontend_design_skill_no_ai_aesthetic_rule", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/frontend-design/SKILL.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_frontend_design_skill_frontend_design_skill", "target": "docs_frontend_css_architecture", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.65, "source_file": ".agents/skills/frontend-design/SKILL.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/b8977d022748f50761df8cf99912690fc032ebf27f93b0df88ddd5932317cf2e.json b/graphify-out/cache/semantic/b8977d022748f50761df8cf99912690fc032ebf27f93b0df88ddd5932317cf2e.json new file mode 100644 index 0000000..a53477d --- /dev/null +++ b/graphify-out/cache/semantic/b8977d022748f50761df8cf99912690fc032ebf27f93b0df88ddd5932317cf2e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_database_database_schema", "label": "\u0421\u0445\u0435\u043c\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445", "file_type": "document", "source_file": "docs/DATABASE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_database_er_relationships", "label": "ER-\u0441\u0432\u044f\u0437\u0438", "file_type": "concept", "source_file": "docs/DATABASE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_database_dynamic_schedule_tables", "label": "\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/DATABASE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_database_academic_calendar_tables", "label": "\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f", "file_type": "concept", "source_file": "docs/DATABASE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_database_auth_refresh_tokens", "label": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430 refresh-\u0442\u043e\u043a\u0435\u043d\u043e\u0432", "file_type": "concept", "source_file": "docs/DATABASE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_database_flyway_migrations", "label": "Flyway-\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438", "file_type": "concept", "source_file": "docs/DATABASE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_database_database_schema", "target": "docs_database_er_relationships", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DATABASE.md", "source_location": null, "weight": 1.0}, {"source": "docs_database_database_schema", "target": "docs_database_dynamic_schedule_tables", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DATABASE.md", "source_location": null, "weight": 1.0}, {"source": "docs_database_database_schema", "target": "docs_database_academic_calendar_tables", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DATABASE.md", "source_location": null, "weight": 1.0}, {"source": "docs_database_database_schema", "target": "docs_database_auth_refresh_tokens", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DATABASE.md", "source_location": null, "weight": 1.0}, {"source": "docs_database_flyway_migrations", "target": "docs_development_flyway_rules", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/DATABASE.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/bd75eb2d9a79b2e0b2644c207bd0da638372d1884433b0bf64e23f421e72fe7d.json b/graphify-out/cache/semantic/bd75eb2d9a79b2e0b2644c207bd0da638372d1884433b0bf64e23f421e72fe7d.json new file mode 100644 index 0000000..b479180 --- /dev/null +++ b/graphify-out/cache/semantic/bd75eb2d9a79b2e0b2644c207bd0da638372d1884433b0bf64e23f421e72fe7d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_infrastructure_docker_compose", "label": "Docker Compose \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430", "file_type": "concept", "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_infrastructure_kubernetes_production", "label": "Production-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 Kubernetes", "file_type": "concept", "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_infrastructure_jwt_secret_policy", "label": "\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 JWT-\u0441\u0435\u043a\u0440\u0435\u0442\u0430", "file_type": "concept", "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_infrastructure_tenants_configmap", "label": "Tenants ConfigMap", "file_type": "concept", "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_infrastructure_caddy_proxy", "label": "Caddy proxy \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b", "file_type": "concept", "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_infrastructure_gitea_actions_cicd", "label": "CI/CD Gitea Actions \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435", "file_type": "concept", "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_infrastructure_signoz_opentelemetry", "label": "SigNoz \u0438 OpenTelemetry \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435", "file_type": "concept", "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_infrastructure_docker_compose", "target": "compose_backend_service", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_infrastructure_docker_compose", "target": "compose_frontend_service", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_infrastructure_docker_compose", "target": "compose_db_service", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_infrastructure_kubernetes_production", "target": "docs_infrastructure_tenants_configmap", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_infrastructure_kubernetes_production", "target": "docs_infrastructure_jwt_secret_policy", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_infrastructure_kubernetes_production", "target": "docs_infrastructure_caddy_proxy", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_infrastructure_gitea_actions_cicd", "target": "_gitea_workflows_docker_build_build_and_push_docker_images", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_infrastructure_signoz_opentelemetry", "target": "docs_logging_otlp_signoz_export", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/INFRASTRUCTURE.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/c4cdcddcedd7401a0ff635c65a925d14994e5ac041775332b139373381ec4625.json b/graphify-out/cache/semantic/c4cdcddcedd7401a0ff635c65a925d14994e5ac041775332b139373381ec4625.json new file mode 100644 index 0000000..bb1a29d --- /dev/null +++ b/graphify-out/cache/semantic/c4cdcddcedd7401a0ff635c65a925d14994e5ac041775332b139373381ec4625.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_settings_views_time_slots_time_slots_settings", "label": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0442\u043e\u0432", "file_type": "code", "source_file": "frontend/admin/settings/views/time-slots.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_settings_views_time_slots_time_slot_scope", "label": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438", "file_type": "concept", "source_file": "frontend/admin/settings/views/time-slots.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_settings_views_time_slots_manual_time_grid_modal", "label": "\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0440\u0443\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438", "file_type": "code", "source_file": "frontend/admin/settings/views/time-slots.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_settings_views_time_slots_time_slots_settings", "target": "frontend_admin_settings_views_time_slots_time_slot_scope", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/settings/views/time-slots.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_settings_views_time_slots_time_slots_settings", "target": "frontend_admin_settings_views_time_slots_manual_time_grid_modal", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/settings/views/time-slots.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_settings_views_time_slots_time_slot_scope", "target": "frontend_admin_views_academic_calendar_calendar_day_dialog", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/settings/views/time-slots.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/ce615734115acd53c4e890d3513bb8bd8fcf478bcc4feb0bf8ff4ac51c1aab3c.json b/graphify-out/cache/semantic/ce615734115acd53c4e890d3513bb8bd8fcf478bcc4feb0bf8ff4ac51c1aab3c.json new file mode 100644 index 0000000..09dbb22 --- /dev/null +++ b/graphify-out/cache/semantic/ce615734115acd53c4e890d3513bb8bd8fcf478bcc4feb0bf8ff4ac51c1aab3c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_development_developer_guide", "label": "\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430", "file_type": "document", "source_file": "docs/DEVELOPMENT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_development_code_style", "label": "Code style", "file_type": "concept", "source_file": "docs/DEVELOPMENT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_development_new_endpoint_flow", "label": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430", "file_type": "concept", "source_file": "docs/DEVELOPMENT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_development_flyway_rules", "label": "\u041f\u0440\u0430\u0432\u0438\u043b\u0430 Flyway \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435", "file_type": "concept", "source_file": "docs/DEVELOPMENT.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_development_developer_guide", "target": "docs_development_code_style", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DEVELOPMENT.md", "source_location": null, "weight": 1.0}, {"source": "docs_development_developer_guide", "target": "docs_development_new_endpoint_flow", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DEVELOPMENT.md", "source_location": null, "weight": 1.0}, {"source": "docs_development_new_endpoint_flow", "target": "docs_api_rest_api", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DEVELOPMENT.md", "source_location": null, "weight": 1.0}, {"source": "docs_development_new_endpoint_flow", "target": "docs_database_flyway_migrations", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/DEVELOPMENT.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/d032db5dfa1d6aa867e661e004bc74a4b04bb781c7943bf21f312de4cf6f7f46.json b/graphify-out/cache/semantic/d032db5dfa1d6aa867e661e004bc74a4b04bb781c7943bf21f312de4cf6f7f46.json new file mode 100644 index 0000000..72f1388 --- /dev/null +++ b/graphify-out/cache/semantic/d032db5dfa1d6aa867e661e004bc74a4b04bb781c7943bf21f312de4cf6f7f46.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_student_index_student_schedule_page", "label": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_group_selection", "label": "\u0412\u044b\u0431\u043e\u0440 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", "file_type": "concept", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_week_navigation", "label": "\u041d\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", "file_type": "concept", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_schedule_grid", "label": "\u0421\u0435\u0442\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", "file_type": "concept", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_loadgroups", "label": "loadGroups", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_loadschedule", "label": "loadSchedule", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_renderweek", "label": "renderWeek", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_renderemptyweek", "label": "renderEmptyWeek", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_renderday", "label": "renderDay", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_renderlesson", "label": "renderLesson", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_fetchjson", "label": "fetchJson", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_refreshaccesstoken", "label": "refreshAccessToken", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_logout", "label": "logout", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_storeauthstate", "label": "storeAuthState", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_clearauthstate", "label": "clearAuthState", "file_type": "code", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_student_auth_state", "label": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", "file_type": "concept", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_api_groups_endpoint", "label": "GET /api/groups", "file_type": "concept", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_api_schedule_group_endpoint", "label": "GET /api/schedule \u043f\u043e groupId", "file_type": "concept", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_api_auth_refresh_endpoint", "label": "POST /api/auth/refresh", "file_type": "concept", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_student_index_api_auth_logout_endpoint", "label": "POST /api/auth/logout", "file_type": "concept", "source_file": "frontend/student/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_edu_office_index_edu_office_redirect_page", "target": "frontend_edu_office_index_admin_schedule_view_route", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_student_schedule_page", "target": "frontend_student_index_group_selection", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_student_schedule_page", "target": "frontend_student_index_week_navigation", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_student_schedule_page", "target": "frontend_student_index_schedule_grid", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_student_schedule_page", "target": "frontend_student_index_loadgroups", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_student_schedule_page", "target": "frontend_student_index_loadschedule", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_loadgroups", "target": "frontend_student_index_api_groups_endpoint", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_loadgroups", "target": "frontend_student_index_fetchjson", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_loadschedule", "target": "frontend_student_index_api_schedule_group_endpoint", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_loadschedule", "target": "frontend_student_index_fetchjson", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_loadschedule", "target": "frontend_student_index_renderweek", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_renderweek", "target": "frontend_student_index_renderday", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_renderemptyweek", "target": "frontend_student_index_renderday", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_renderday", "target": "frontend_student_index_renderlesson", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_fetchjson", "target": "frontend_student_index_refreshaccesstoken", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_fetchjson", "target": "frontend_student_index_clearauthstate", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_refreshaccesstoken", "target": "frontend_student_index_api_auth_refresh_endpoint", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_refreshaccesstoken", "target": "frontend_student_index_storeauthstate", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_logout", "target": "frontend_student_index_api_auth_logout_endpoint", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_logout", "target": "frontend_student_index_clearauthstate", "relation": "calls", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_fetchjson", "target": "frontend_student_index_student_auth_state", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_storeauthstate", "target": "frontend_student_index_student_auth_state", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_clearauthstate", "target": "frontend_student_index_student_auth_state", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_loadschedule", "target": "frontend_teacher_index_loadschedule", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_fetchjson", "target": "frontend_teacher_index_fetchjson", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_refreshaccesstoken", "target": "frontend_teacher_index_refreshaccesstoken", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_logout", "target": "frontend_teacher_index_logout", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_week_navigation", "target": "frontend_teacher_index_week_navigation", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_schedule_grid", "target": "frontend_teacher_index_schedule_grid", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_student_auth_state", "target": "frontend_teacher_index_teacher_auth_state", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}, {"source": "frontend_student_index_student_schedule_page", "target": "frontend_teacher_index_teacher_schedule_page", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/student/index.html", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "shared_week_schedule_rendering", "label": "\u041e\u0431\u0449\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "nodes": ["frontend_student_index_loadschedule", "frontend_student_index_renderweek", "frontend_teacher_index_loadschedule", "frontend_teacher_index_renderweek", "frontend_edu_office_index_admin_schedule_view_route"], "relation": "participate_in", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/student/index.html"}, {"id": "shared_browser_auth_flow", "label": "\u041e\u0431\u0449\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438", "nodes": ["frontend_student_index_fetchjson", "frontend_student_index_refreshaccesstoken", "frontend_student_index_logout", "frontend_teacher_index_fetchjson", "frontend_teacher_index_refreshaccesstoken", "frontend_teacher_index_logout"], "relation": "implement", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/student/index.html"}]} \ No newline at end of file diff --git a/graphify-out/cache/semantic/d97d60df564a6729fdacf1e8ff2879e5dfcaeca80f8c116c4e3d3e160da07f5a.json b/graphify-out/cache/semantic/d97d60df564a6729fdacf1e8ff2879e5dfcaeca80f8c116c4e3d3e160da07f5a.json new file mode 100644 index 0000000..a7d8066 --- /dev/null +++ b/graphify-out/cache/semantic/d97d60df564a6729fdacf1e8ff2879e5dfcaeca80f8c116c4e3d3e160da07f5a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_architecture_system_architecture", "label": "\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_architecture_multitenant_architecture", "label": "\u041c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430", "file_type": "concept", "source_file": "docs/ARCHITECTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_architecture_authentication", "label": "\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438", "file_type": "concept", "source_file": "docs/ARCHITECTURE.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_architecture_system_architecture", "target": "docs_architecture_multitenant_architecture", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ARCHITECTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_architecture_system_architecture", "target": "docs_architecture_authentication", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ARCHITECTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_architecture_multitenant_architecture", "target": "docs_database_database_schema", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ARCHITECTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_architecture_multitenant_architecture", "target": "docs_infrastructure_tenants_configmap", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ARCHITECTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_architecture_authentication", "target": "docs_database_auth_refresh_tokens", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ARCHITECTURE.md", "source_location": null, "weight": 1.0}, {"source": "docs_architecture_authentication", "target": "docs_api_authentication_endpoints", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ARCHITECTURE.md", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "multitenant_infrastructure_pattern", "label": "\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b", "nodes": ["docs_architecture_multitenant_architecture", "devops_database_per_tenant_pattern", "docs_infrastructure_tenants_configmap", "compose_db_service", "docs_logging_tenant_mdc_context"], "relation": "form", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/ARCHITECTURE.md"}]} \ No newline at end of file diff --git a/graphify-out/cache/semantic/df73c720b4d9c911d9f747c5bf2d59ff792666b0b01ce9b1f028b0080502fb4e.json b/graphify-out/cache/semantic/df73c720b4d9c911d9f747c5bf2d59ff792666b0b01ce9b1f028b0080502fb4e.json new file mode 100644 index 0000000..066c37c --- /dev/null +++ b/graphify-out/cache/semantic/df73c720b4d9c911d9f747c5bf2d59ff792666b0b01ce9b1f028b0080502fb4e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_settings_views_general_general_settings_placeholder", "label": "\u0417\u0430\u0433\u043b\u0443\u0448\u043a\u0430 \u043e\u0431\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", "file_type": "code", "source_file": "frontend/admin/settings/views/general.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/e0c5cad0c4a3a6378dabb4f827d7b41e1cbfa772161b00bcc365e2de732e2a74.json b/graphify-out/cache/semantic/e0c5cad0c4a3a6378dabb4f827d7b41e1cbfa772161b00bcc365e2de732e2a74.json new file mode 100644 index 0000000..dae4561 --- /dev/null +++ b/graphify-out/cache/semantic/e0c5cad0c4a3a6378dabb4f827d7b41e1cbfa772161b00bcc365e2de732e2a74.json @@ -0,0 +1 @@ +{"nodes": [{"id": "agents_project_regulation", "label": "\u041f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442 AGENTS.md", "file_type": "document", "source_file": "AGENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "agents_magistr_system", "label": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u041c\u0430\u0433\u0438\u0441\u0442\u0440", "file_type": "concept", "source_file": "AGENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "agents_flyway_migration_rule", "label": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u0438 Flyway-\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439", "file_type": "concept", "source_file": "AGENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "agents_russian_language_rule", "label": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", "file_type": "concept", "source_file": "AGENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "agents_project_docs_index", "label": "\u0418\u043d\u0434\u0435\u043a\u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", "file_type": "document", "source_file": "AGENTS.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "agents_project_regulation", "target": "agents_magistr_system", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}, {"source": "agents_project_regulation", "target": "agents_flyway_migration_rule", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}, {"source": "agents_project_regulation", "target": "agents_russian_language_rule", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}, {"source": "agents_project_docs_index", "target": "docs_readme_magistr_overview", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}, {"source": "agents_project_docs_index", "target": "docs_architecture_system_architecture", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}, {"source": "agents_project_docs_index", "target": "docs_business_logic_role_model", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}, {"source": "agents_project_docs_index", "target": "docs_database_database_schema", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}, {"source": "agents_project_docs_index", "target": "docs_api_rest_api", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}, {"source": "agents_flyway_migration_rule", "target": "docs_database_flyway_migrations", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "AGENTS.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/e272a8f70ac7fd99b9ebfd39f7d4edb318f19c18e82eaebe25acc65f28c9101f.json b/graphify-out/cache/semantic/e272a8f70ac7fd99b9ebfd39f7d4edb318f19c18e82eaebe25acc65f28c9101f.json new file mode 100644 index 0000000..1f47df8 --- /dev/null +++ b/graphify-out/cache/semantic/e272a8f70ac7fd99b9ebfd39f7d4edb318f19c18e82eaebe25acc65f28c9101f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_groups_group_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f", "file_type": "code", "source_file": "frontend/admin/views/groups.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_groups_group_filters", "label": "\u0424\u0438\u043b\u044c\u0442\u0440 \u0433\u0440\u0443\u043f\u043f \u043f\u043e \u0444\u043e\u0440\u043c\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f", "file_type": "code", "source_file": "frontend/admin/views/groups.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_groups_subgroup_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u0433\u0440\u0443\u043f\u043f\u044b", "file_type": "code", "source_file": "frontend/admin/views/groups.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_groups_group_calendar_assignment", "label": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0433\u0440\u0443\u043f\u043f\u0435", "file_type": "code", "source_file": "frontend/admin/views/groups.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_groups_group_management", "target": "frontend_admin_views_groups_group_filters", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_management", "target": "frontend_admin_views_groups_subgroup_management", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_management", "target": "frontend_admin_views_groups_group_calendar_assignment", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_filters", "target": "docs_ui_components_multi_select", "relation": "implements", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_subgroup_management", "target": "docs_schedule_tasks_laboratory_subgroups", "relation": "implements", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_calendar_assignment", "target": "docs_schedule_tasks_group_calendar_assignment", "relation": "implements", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_calendar_assignment", "target": "frontend_admin_views_academic_calendar_academic_calendar_view", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_management", "target": "frontend_admin_settings_views_edu_forms_education_forms_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_management", "target": "frontend_admin_views_university_structure_department_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_management", "target": "frontend_admin_views_university_structure_specialty_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_groups_group_management", "target": "frontend_admin_views_university_structure_profile_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/groups.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/e3cad05cb5e6d7b60ae0356953c02df5a995d1ae3cf553b61bc7773bce033cec.json b/graphify-out/cache/semantic/e3cad05cb5e6d7b60ae0356953c02df5a995d1ae3cf553b61bc7773bce033cec.json new file mode 100644 index 0000000..867c26e --- /dev/null +++ b/graphify-out/cache/semantic/e3cad05cb5e6d7b60ae0356953c02df5a995d1ae3cf553b61bc7773bce033cec.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_classrooms_classroom_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u043d\u044b\u043c \u0444\u043e\u043d\u0434\u043e\u043c", "file_type": "code", "source_file": "frontend/admin/views/classrooms.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_classrooms_equipment_dictionary", "label": "\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f", "file_type": "code", "source_file": "frontend/admin/views/classrooms.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_classrooms_equipment_multi_select", "label": "\u041c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043b\u0435\u043a\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438", "file_type": "code", "source_file": "frontend/admin/views/classrooms.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_classrooms_classroom_management", "target": "frontend_admin_views_classrooms_equipment_dictionary", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/classrooms.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_classrooms_classroom_management", "target": "frontend_admin_views_classrooms_equipment_multi_select", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/classrooms.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_classrooms_equipment_multi_select", "target": "docs_ui_components_multi_select", "relation": "implements", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/classrooms.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_classrooms_equipment_dictionary", "target": "frontend_admin_views_auditorium_workload_workload_filters", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/classrooms.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/e4488f6e2b413860ef76d89c4ec5081d119aca259c2c0ea669cd90135fd81451.json b/graphify-out/cache/semantic/e4488f6e2b413860ef76d89c4ec5081d119aca259c2c0ea669cd90135fd81451.json new file mode 100644 index 0000000..9bfc8e9 --- /dev/null +++ b/graphify-out/cache/semantic/e4488f6e2b413860ef76d89c4ec5081d119aca259c2c0ea669cd90135fd81451.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_business_logic_role_model", "label": "\u0420\u043e\u043b\u0435\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c", "file_type": "concept", "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_business_logic_dynamic_schedule_model", "label": "\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_business_logic_schedule_validation", "label": "\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "concept", "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_business_logic_lifecycle_archiving", "label": "\u0410\u0440\u0445\u0438\u0432\u0430\u0446\u0438\u044f \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430", "file_type": "concept", "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_business_logic_teacher_department_assignments", "label": "\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043a \u043a\u0430\u0444\u0435\u0434\u0440\u0430\u043c", "file_type": "concept", "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_business_logic_role_model", "target": "docs_api_role_permissions", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "weight": 1.0}, {"source": "docs_business_logic_role_model", "target": "docs_frontend_role_based_navigation", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "weight": 1.0}, {"source": "docs_business_logic_dynamic_schedule_model", "target": "docs_database_dynamic_schedule_tables", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "weight": 1.0}, {"source": "docs_business_logic_dynamic_schedule_model", "target": "docs_academic_calendar_schedule_generation_filter", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "weight": 1.0}, {"source": "docs_business_logic_schedule_validation", "target": "docs_api_schedule_rules_endpoints", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "weight": 1.0}, {"source": "docs_business_logic_lifecycle_archiving", "target": "docs_database_database_schema", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "weight": 1.0}, {"source": "docs_business_logic_teacher_department_assignments", "target": "docs_api_department_workspace_endpoints", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/BUSINESS_LOGIC.md", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "dynamic_schedule_documentation", "label": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "nodes": ["docs_business_logic_dynamic_schedule_model", "docs_api_dynamic_schedule_endpoints", "docs_database_dynamic_schedule_tables", "docs_academic_calendar_calendar_model", "docs_frontend_schedule_views", "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", "docs_schedule_proposal_dynamic_schedule_concept"], "relation": "form", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/BUSINESS_LOGIC.md"}]} \ No newline at end of file diff --git a/graphify-out/cache/semantic/ec1890719c6e211374fe9d1eef872832f04ce7bf391d726a20cc64cb633c77d5.json b/graphify-out/cache/semantic/ec1890719c6e211374fe9d1eef872832f04ce7bf391d726a20cc64cb633c77d5.json new file mode 100644 index 0000000..3b4b118 --- /dev/null +++ b/graphify-out/cache/semantic/ec1890719c6e211374fe9d1eef872832f04ce7bf391d726a20cc64cb633c77d5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_schedule_schedule_rule_constructor", "label": "\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "code", "source_file": "frontend/admin/views/schedule.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_schedule_schedule_hours_start_weeks", "label": "\u0427\u0430\u0441\u044b \u0438 \u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043d\u044f\u0442\u0438\u0439", "file_type": "code", "source_file": "frontend/admin/views/schedule.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_schedule_schedule_group_multiselect", "label": "\u041c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043b\u0435\u043a\u0442 \u0433\u0440\u0443\u043f\u043f \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "code", "source_file": "frontend/admin/views/schedule.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", "label": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0441\u043b\u043e\u0442\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", "file_type": "code", "source_file": "frontend/admin/views/schedule.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_schedule_schedule_visual_drawer", "label": "\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f", "file_type": "code", "source_file": "frontend/admin/views/schedule.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_schedule_schedule_rule_constructor", "target": "frontend_admin_views_schedule_schedule_hours_start_weeks", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_rule_constructor", "target": "frontend_admin_views_schedule_schedule_group_multiselect", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_rule_constructor", "target": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_rule_constructor", "target": "frontend_admin_views_schedule_schedule_visual_drawer", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_rule_constructor", "target": "docs_schedule_tasks_dynamic_schedule_tasks", "relation": "implements", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_hours_start_weeks", "target": "docs_schedule_tasks_dynamic_schedule_tasks", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_group_multiselect", "target": "docs_ui_components_multi_select", "relation": "implements", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", "target": "docs_schedule_tasks_rule_conflict_validation", "relation": "semantically_similar_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_rule_constructor", "target": "frontend_admin_views_subjects_subject_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_rule_constructor", "target": "frontend_admin_views_academic_calendar_semester_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_schedule_schedule_rule_constructor", "target": "frontend_admin_views_groups_group_management", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "frontend/admin/views/schedule.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/f8be56a7fdc945daecf9813c2cda43731610ef099cdc0cce4dbe721e7ae9e272.json b/graphify-out/cache/semantic/f8be56a7fdc945daecf9813c2cda43731610ef099cdc0cce4dbe721e7ae9e272.json new file mode 100644 index 0000000..ab58c67 --- /dev/null +++ b/graphify-out/cache/semantic/f8be56a7fdc945daecf9813c2cda43731610ef099cdc0cce4dbe721e7ae9e272.json @@ -0,0 +1 @@ +{"nodes": [{"id": "resume_index_devops_resume_page", "label": "\u0420\u0435\u0437\u044e\u043c\u0435 DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430", "file_type": "document", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_zuev_egor_alekseevich", "label": "\u0417\u0443\u0435\u0432 \u0415\u0433\u043e\u0440 \u0410\u043b\u0435\u043a\u0441\u0435\u0435\u0432\u0438\u0447", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_junior_devops_infrastructure_engineer", "label": "Junior DevOps / Infrastructure Engineer", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_smart_schedule_startup", "label": "\u0421\u0442\u0430\u0440\u0442\u0430\u043f \u0423\u043c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_database_per_tenant", "label": "Database-per-Tenant", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_kubernetes_k3s_delivery", "label": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 Kubernetes K3s", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_dynamic_tenants_configmap", "label": "\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0435\u043d\u0430\u043d\u0442\u044b \u0447\u0435\u0440\u0435\u0437 ConfigMap", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_backend_resilient_startup", "label": "\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u0430 backend", "file_type": "rationale", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_ansible_security_provisioning", "label": "Ansible \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0438\u0436\u0438\u043d\u0438\u043d\u0433", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_gitea_actions_cicd", "label": "CI/CD \u0447\u0435\u0440\u0435\u0437 Gitea Actions", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_opentelemetry_signoz_observability", "label": "Observability \u0447\u0435\u0440\u0435\u0437 OpenTelemetry \u0438 SigNoz", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_homelab_engineering_practice", "label": "Homelab \u043a\u0430\u043a \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430", "file_type": "concept", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_incident_runbook_mindset", "label": "Runbook-\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430\u0445", "file_type": "rationale", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "resume_index_devsecops_principles", "label": "\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b DevSecOps", "file_type": "rationale", "source_file": "resume/index.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "resume_index_devops_resume_page", "target": "resume_index_zuev_egor_alekseevich", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_devops_resume_page", "target": "resume_index_junior_devops_infrastructure_engineer", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_zuev_egor_alekseevich", "target": "resume_index_smart_schedule_startup", "relation": "conceptually_related_to", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "resume_index_database_per_tenant", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "resume_index_kubernetes_k3s_delivery", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "resume_index_dynamic_tenants_configmap", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "resume_index_backend_resilient_startup", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "resume_index_ansible_security_provisioning", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "resume_index_gitea_actions_cicd", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "resume_index_opentelemetry_signoz_observability", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_ansible_security_provisioning", "target": "resume_index_devsecops_principles", "relation": "conceptually_related_to", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_opentelemetry_signoz_observability", "target": "resume_index_incident_runbook_mindset", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_homelab_engineering_practice", "target": "resume_index_junior_devops_infrastructure_engineer", "relation": "conceptually_related_to", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_database_per_tenant", "target": "resume_index_opentelemetry_signoz_observability", "relation": "conceptually_related_to", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "frontend_student_index_student_schedule_page", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "frontend_teacher_index_teacher_schedule_page", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_smart_schedule_startup", "target": "frontend_edu_office_index_edu_office_redirect_page", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.75, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_database_per_tenant", "target": "frontend_student_index_api_schedule_group_endpoint", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.65, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}, {"source": "resume_index_database_per_tenant", "target": "frontend_teacher_index_api_schedule_teacher_endpoint", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.65, "source_file": "resume/index.html", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "resume_devops_delivery_chain", "label": "\u0426\u0435\u043f\u043e\u0447\u043a\u0430 DevOps-\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0440\u0435\u0437\u044e\u043c\u0435", "nodes": ["resume_index_kubernetes_k3s_delivery", "resume_index_dynamic_tenants_configmap", "resume_index_gitea_actions_cicd", "resume_index_opentelemetry_signoz_observability", "resume_index_database_per_tenant"], "relation": "form", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "resume/index.html"}]} \ No newline at end of file diff --git a/graphify-out/cache/semantic/fc48f4b9756d02b8a9ae0473e503b94f91f5f58cac2ec05b2b7784e4d588cc15.json b/graphify-out/cache/semantic/fc48f4b9756d02b8a9ae0473e503b94f91f5f58cac2ec05b2b7784e4d588cc15.json new file mode 100644 index 0000000..dc4234d --- /dev/null +++ b/graphify-out/cache/semantic/fc48f4b9756d02b8a9ae0473e503b94f91f5f58cac2ec05b2b7784e4d588cc15.json @@ -0,0 +1 @@ +{"nodes": [{"id": "frontend_admin_views_university_structure_university_structure_view", "label": "\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u0443\u0437\u0430", "file_type": "code", "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_university_structure_department_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0444\u0435\u0434\u0440\u0430\u043c\u0438", "file_type": "code", "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_university_structure_specialty_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438", "file_type": "code", "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "frontend_admin_views_university_structure_profile_management", "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f", "file_type": "code", "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "frontend_admin_views_university_structure_university_structure_view", "target": "frontend_admin_views_university_structure_department_management", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_university_structure_university_structure_view", "target": "frontend_admin_views_university_structure_specialty_management", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_university_structure_university_structure_view", "target": "frontend_admin_views_university_structure_profile_management", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_university_structure_specialty_management", "target": "frontend_admin_views_university_structure_profile_management", "relation": "shares_data_with", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_university_structure_specialty_management", "target": "frontend_admin_views_academic_calendar_academic_calendar_view", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "weight": 1.0}, {"source": "frontend_admin_views_university_structure_profile_management", "target": "frontend_admin_views_academic_calendar_academic_calendar_view", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "frontend/admin/views/university-structure.html", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/semantic/fc9b6b123c914a3e309d6e0f649005e4fc8c8d2628e26c4507fd00db2870524f.json b/graphify-out/cache/semantic/fc9b6b123c914a3e309d6e0f649005e4fc8c8d2628e26c4507fd00db2870524f.json new file mode 100644 index 0000000..ddeb92f --- /dev/null +++ b/graphify-out/cache/semantic/fc9b6b123c914a3e309d6e0f649005e4fc8c8d2628e26c4507fd00db2870524f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "_agents_skills_autoupdatedocs_autoupdatedocs_skill", "label": "\u041d\u0430\u0432\u044b\u043a AutoUpdateDocs", "file_type": "document", "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "_agents_skills_autoupdatedocs_file_to_docs_map", "label": "\u041a\u0430\u0440\u0442\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", "file_type": "concept", "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "_agents_skills_autoupdatedocs_autoupdatedocs_skill", "target": "_agents_skills_autoupdatedocs_file_to_docs_map", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_autoupdatedocs_file_to_docs_map", "target": "docs_api_rest_api", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_autoupdatedocs_file_to_docs_map", "target": "docs_database_database_schema", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_autoupdatedocs_file_to_docs_map", "target": "docs_architecture_system_architecture", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_autoupdatedocs_file_to_docs_map", "target": "docs_business_logic_role_model", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_autoupdatedocs_file_to_docs_map", "target": "docs_frontend_frontend_architecture", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "weight": 1.0}, {"source": "_agents_skills_autoupdatedocs_file_to_docs_map", "target": "docs_infrastructure_docker_compose", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/AutoUpdateDocs.md", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "documentation_governance_policy", "label": "\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", "nodes": ["agents_project_regulation", "_agents_skills_autoupdatedocs_autoupdatedocs_skill", "docs_development_flyway_rules", "docs_database_flyway_migrations"], "relation": "implement", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": ".agents/skills/AutoUpdateDocs.md"}]} \ No newline at end of file diff --git a/graphify-out/cache/semantic/fdb7249b764178be2800b014d494bff642db962bca7412f68416c517c13ad44a.json b/graphify-out/cache/semantic/fdb7249b764178be2800b014d494bff642db962bca7412f68416c517c13ad44a.json new file mode 100644 index 0000000..a4d422e --- /dev/null +++ b/graphify-out/cache/semantic/fdb7249b764178be2800b014d494bff642db962bca7412f68416c517c13ad44a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "docs_academic_calendar_calendar_model", "label": "\u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f", "file_type": "document", "source_file": "docs/ACADEMIC_CALENDAR.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_academic_calendar_activity_codes", "label": "\u041a\u043e\u0434\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0439 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f", "file_type": "concept", "source_file": "docs/ACADEMIC_CALENDAR.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_academic_calendar_schedule_generation_filter", "label": "\u0424\u0438\u043b\u044c\u0442\u0440 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044e", "file_type": "concept", "source_file": "docs/ACADEMIC_CALENDAR.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "docs_academic_calendar_calendar_model", "target": "docs_academic_calendar_activity_codes", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ACADEMIC_CALENDAR.md", "source_location": null, "weight": 1.0}, {"source": "docs_academic_calendar_calendar_model", "target": "docs_academic_calendar_schedule_generation_filter", "relation": "implements", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ACADEMIC_CALENDAR.md", "source_location": null, "weight": 1.0}, {"source": "docs_academic_calendar_calendar_model", "target": "docs_database_academic_calendar_tables", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ACADEMIC_CALENDAR.md", "source_location": null, "weight": 1.0}, {"source": "docs_academic_calendar_calendar_model", "target": "docs_api_group_calendar_assignments", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/ACADEMIC_CALENDAR.md", "source_location": null, "weight": 1.0}], "hyperedges": []} \ No newline at end of file diff --git a/graphify-out/cache/stat-index.json b/graphify-out/cache/stat-index.json new file mode 100644 index 0000000..4fbe683 --- /dev/null +++ b/graphify-out/cache/stat-index.json @@ -0,0 +1 @@ +{"/mnt/HDD/ProjectMagistr/magistr/.agents/skills/AutoUpdateDocs.md":{"size":5121,"mtime_ns":1779884543058814939,"hash":"fc9b6b123c914a3e309d6e0f649005e4fc8c8d2628e26c4507fd00db2870524f"},"/mnt/HDD/ProjectMagistr/magistr/.agents/skills/auto-update-docs/SKILL.md":{"size":5175,"mtime_ns":1775069027350001426,"hash":"4d400563b1e9574d313773df7a7237b718cf3df0c9b551019abf9a7aa65ef1e3"},"/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/LICENSE.txt":{"size":10174,"mtime_ns":1775069027350001426,"hash":"7c95345d823581157b85d7ba4f166f4d2ad6f8043362e748b1558b3c31f33600"},"/mnt/HDD/ProjectMagistr/magistr/.agents/skills/frontend-design/SKILL.md":{"size":9125,"mtime_ns":1775069027350137696,"hash":"b7dacf862e07335084136722148186332ae064f1bb22e7fb8b0988e4203059a6"},"/mnt/HDD/ProjectMagistr/magistr/.gitea/workflows/docker-build.yaml":{"size":3282,"mtime_ns":1773704400496388107,"hash":"98a6c270ec5f6a8f06c7df05946356074e6379cdff51a1921a509931046de207"},"/mnt/HDD/ProjectMagistr/magistr/AGENTS.md":{"size":5277,"mtime_ns":1779889713726702411,"hash":"e0c5cad0c4a3a6378dabb4f827d7b41e1cbfa772161b00bcc365e2de732e2a74"},"/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md":{"size":18930,"mtime_ns":1783115455969791951,"hash":"3413a0d0a09372987819d0bcf43f802639604563d31fab32f9a18b18fa2771bc"},"/mnt/HDD/ProjectMagistr/magistr/DEVOPS.md":{"size":36767,"mtime_ns":1781732441109954561,"hash":"33011a77448666247aa1746a8366860ddc403d7fccf6ca380868e4580fdbb552"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/README.md":{"size":8,"mtime_ns":1773186962046510500,"hash":"6a9da280f8b7c90bc01ab7467d67b06df1c124efc63f167f7bbfe2da3333ebe5"},"/mnt/HDD/ProjectMagistr/magistr/compose.yaml":{"size":1063,"mtime_ns":1779900253985324942,"hash":"b69ef33646f7cf2557488304388df4f3d08bc920b7dcfd72deddb4eab75d659a"},"/mnt/HDD/ProjectMagistr/magistr/docs/ACADEMIC_CALENDAR.md":{"size":8131,"mtime_ns":1780345824644904570,"hash":"fdb7249b764178be2800b014d494bff642db962bca7412f68416c517c13ad44a"},"/mnt/HDD/ProjectMagistr/magistr/docs/API.md":{"size":42626,"mtime_ns":1781379245278765668,"hash":"61bfeffa24fa77fea6208ef14daaf80e0128358cac0a89c1da4741e6f49d034a"},"/mnt/HDD/ProjectMagistr/magistr/docs/ARCHITECTURE.md":{"size":8829,"mtime_ns":1779900753533754676,"hash":"d97d60df564a6729fdacf1e8ff2879e5dfcaeca80f8c116c4e3d3e160da07f5a"},"/mnt/HDD/ProjectMagistr/magistr/docs/BUSINESS_LOGIC.md":{"size":25858,"mtime_ns":1781379245278765668,"hash":"e4488f6e2b413860ef76d89c4ec5081d119aca259c2c0ea669cd90135fd81451"},"/mnt/HDD/ProjectMagistr/magistr/docs/DATABASE.md":{"size":38876,"mtime_ns":1780416753579562105,"hash":"b8977d022748f50761df8cf99912690fc032ebf27f93b0df88ddd5932317cf2e"},"/mnt/HDD/ProjectMagistr/magistr/docs/DEVELOPMENT.md":{"size":9321,"mtime_ns":1779900606282015248,"hash":"ce615734115acd53c4e890d3513bb8bd8fcf478bcc4feb0bf8ff4ac51c1aab3c"},"/mnt/HDD/ProjectMagistr/magistr/docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md":{"size":7672,"mtime_ns":1778235232441284999,"hash":"1a20e690492ebe75e2010b6221d85ba6b9d96d75387a56ed75605e4a72e8eb91"},"/mnt/HDD/ProjectMagistr/magistr/docs/FRONTEND.md":{"size":40984,"mtime_ns":1781379245278765668,"hash":"4869a5ccf169032e9c15b6f1309f89a27f853e9a9c045f44cf8eff97f4365e43"},"/mnt/HDD/ProjectMagistr/magistr/docs/INFRASTRUCTURE.md":{"size":5369,"mtime_ns":1779900753586766204,"hash":"bd75eb2d9a79b2e0b2644c207bd0da638372d1884433b0bf64e23f421e72fe7d"},"/mnt/HDD/ProjectMagistr/magistr/docs/LOGGING.md":{"size":6876,"mtime_ns":1777492546692111577,"hash":"aaf739ac8899207e46a0074b4720cfdecc2d236c9e0ee174b7c6d6c4e2beca72"},"/mnt/HDD/ProjectMagistr/magistr/docs/README.md":{"size":5831,"mtime_ns":1779212590311056512,"hash":"63bea36eac33009edd625210adb67bc891ec08ced7dc95b452a1f84471d3c23e"},"/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_PROPOSAL.md":{"size":5350,"mtime_ns":1778235219867335349,"hash":"b5717d2b90d1b16d7477ae582a81010d4ede5a1ff8da4699c04ab5974d82fee9"},"/mnt/HDD/ProjectMagistr/magistr/docs/SCHEDULE_TASKS.md":{"size":3306,"mtime_ns":1778235238091262376,"hash":"173a76139b84ae48e45be7485c218ff9562e98b43ba8d4f83d7149d3b8b5933c"},"/mnt/HDD/ProjectMagistr/magistr/docs/UI_COMPONENTS.md":{"size":7355,"mtime_ns":1775069027351264741,"hash":"59109423780150add219ecad810ba96b031107bafc3194cdb290d8f27068a9d9"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/index.html":{"size":14751,"mtime_ns":1780416753579562105,"hash":"af1ea61775a746d5b4dc2b7d2f812eb3e5e6c62fea26712db6e08425f9516031"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/index.html":{"size":6280,"mtime_ns":1780336218561845745,"hash":"87c3e71cd7bb465836bd53238f2e19a755f5f28544aa58c2f79de9173aa923a2"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/database.html":{"size":2958,"mtime_ns":1780336218573845695,"hash":"4d8a981d03c6584758a3b73a7cf627e7fb149612542a7606de62324d21e4bc1c"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/edu-forms.html":{"size":1152,"mtime_ns":1780336218620845499,"hash":"a6b42568da40f9bc47bb6935780f7b9b599aaa26c9ccaab9db48896f7e02ca0a"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/general.html":{"size":1153,"mtime_ns":1775069027352294889,"hash":"df73c720b4d9c911d9f747c5bf2d59ff792666b0b01ce9b1f028b0080502fb4e"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/settings/views/time-slots.html":{"size":6381,"mtime_ns":1780336218620845499,"hash":"c4cdcddcedd7401a0ff635c65a925d14994e5ac041775332b139373381ec4625"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/academic-calendar.html":{"size":13592,"mtime_ns":1780345824662913546,"hash":"03cb3b24fd230d64d15f36c5af1a96adeb89b080ab1bd9f58fe072464fb44ae1"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/auditorium-workload.html":{"size":4340,"mtime_ns":1780336218620845499,"hash":"8a24c26dee76ad948b77f02bd32c31b17fe78afc8f8996d6d745d48c6c1fd3da"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/classrooms.html":{"size":8093,"mtime_ns":1780336218620845499,"hash":"e3cad05cb5e6d7b60ae0356953c02df5a995d1ae3cf553b61bc7773bce033cec"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/dashboard.html":{"size":8791,"mtime_ns":1780336218621845495,"hash":"931b88c5ffe93ff26026fc36828dcbe13a591610311588b9886db8f1166f682c"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/department-workspace.html":{"size":7747,"mtime_ns":1780416753580562097,"hash":"24b87c2c54b97822e5e74f04630d63ff30d55be451eeefa626c361a3cd551905"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/groups.html":{"size":13325,"mtime_ns":1781379245279434803,"hash":"e272a8f70ac7fd99b9ebfd39f7d4edb318f19c18e82eaebe25acc65f28c9101f"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule-view.html":{"size":6120,"mtime_ns":1780336218621845495,"hash":"4b3431196d12bc8e7a5daac6ad11ed9bc12716d0c98dc22ff28507df76418566"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/schedule.html":{"size":12968,"mtime_ns":1781379245279434803,"hash":"ec1890719c6e211374fe9d1eef872832f04ce7bf391d726a20cc64cb633c77d5"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/subjects.html":{"size":4346,"mtime_ns":1780336218621845495,"hash":"5355390726e08345f7919f92703ded4d758638ba00f1b28b36cf07ff286a0698"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/teacher-requests.html":{"size":1097,"mtime_ns":1780416753580562097,"hash":"a7aa3cd8a07df38deb64d6df843eff69e8d42bf840b1c1cc16166115ecf64022"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/university-structure.html":{"size":13129,"mtime_ns":1781379245279434803,"hash":"fc48f4b9756d02b8a9ae0473e503b94f91f5f58cac2ec05b2b7784e4d588cc15"},"/mnt/HDD/ProjectMagistr/magistr/frontend/admin/views/users.html":{"size":2954,"mtime_ns":1780416753580562097,"hash":"60917d6ab3b7841b1270ddf0dd974e4ba55b0d6eb7c427a12787ac839377cc5e"},"/mnt/HDD/ProjectMagistr/magistr/frontend/department/index.html":{"size":392,"mtime_ns":1779212347074766314,"hash":"89d881d5a2af905839681afcd82d1e62c456d9028a954da4d5e28d3c6705ee05"},"/mnt/HDD/ProjectMagistr/magistr/frontend/edu-office/index.html":{"size":374,"mtime_ns":1779212356700830860,"hash":"5ca790c7c56079cd03f50229fa6725ef88662e01ecf2c14514cd38b4bd06bfa2"},"/mnt/HDD/ProjectMagistr/magistr/frontend/index.html":{"size":4183,"mtime_ns":1780336218638845424,"hash":"9c3d33283424b07a83cd3191f3c643a2fce831c869ee6abe9c29f5ea1798cea9"},"/mnt/HDD/ProjectMagistr/magistr/frontend/student/index.html":{"size":19603,"mtime_ns":1780336218638845424,"hash":"d032db5dfa1d6aa867e661e004bc74a4b04bb781c7943bf21f312de4cf6f7f46"},"/mnt/HDD/ProjectMagistr/magistr/frontend/teacher/index.html":{"size":20526,"mtime_ns":1780336218641230774,"hash":"15a9d9065c1bb9bbbbadff87f1ebeec88481d2038094e0932c26061ca679295d"},"/mnt/HDD/ProjectMagistr/magistr/resume/index.html":{"size":24792,"mtime_ns":1783026336092916202,"hash":"f8be56a7fdc945daecf9813c2cda43731610ef099cdc0cce4dbe721e7ae9e272"},"/mnt/HDD/ProjectMagistr/magistr/backend/pom.xml":{"size":2979,"mtime_ns":1779889713726702411,"hash":"2cb67d79d21668a671fd4429eface68b9b95cf0a8785e5e3720fcb469e94013e"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/Application.java":{"size":628,"mtime_ns":1773362642063643298,"hash":"0d9b338dacf75f1f6f0621354368a65d25b11663116210f41def5f50fb68de61"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/AppConfig.java":{"size":376,"mtime_ns":1773185539163446417,"hash":"8bc030df9b291691f2cc470f0c15bf0495c0a0b204ab8e1880ce13e14344fbb2"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/DataInitializer.java":{"size":1474,"mtime_ns":1773354326367502815,"hash":"f5d40bd2d7b3a235a358c14eb1fd73f0d66f3a986312c7ce8199c90b54bd74f9"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthContext.java":{"size":619,"mtime_ns":1779192709476187020,"hash":"0db665d6c6eca4782e69677b82d3d9f86742c0ffadb2de77c20fb30e3890917a"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java":{"size":166,"mtime_ns":1779192709448187302,"hash":"c5e5292e47cd8aeebd8e91b1aef93536cd31ba2d8c535faf405eac06fa7957d1"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java":{"size":3606,"mtime_ns":1779889713726702411,"hash":"d0f69d372b91b6241ad38de003e2e096535d6ae59e5791988dfa1825932016eb"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java":{"size":1837,"mtime_ns":1779889713726702411,"hash":"88a3f7b55ff957721d56dbb9303afdb73df99284f492261408c4c7ce7af5209a"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java":{"size":4269,"mtime_ns":1779889713726702411,"hash":"cd226bd3d5bf0b6fbda2555676faf630c3a29e226fcfb2589e71a242e5b9fe0b"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java":{"size":145,"mtime_ns":1779889713726702411,"hash":"835b4f67d6e7d4be7ed949190f1e28ac9ace8d8b1e46838ff4da53dd2f0deace"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java":{"size":4783,"mtime_ns":1779889713726702411,"hash":"10ada20b4ba0b32024067451f1e4062ea4033d4a9308d84796cb08756b5aea50"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java":{"size":375,"mtime_ns":1779192709532186456,"hash":"8da9ecee1ec08c5bb553614a6ed0eda974ab54a99660514c5a07b8d9344e5ac6"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java":{"size":5446,"mtime_ns":1779900787982644274,"hash":"bfe9c32ef2d10d80d38eed23b60dd884890ae28f6895b74efa730be8c5838c5c"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java":{"size":1394,"mtime_ns":1773353023464433304,"hash":"b5bd4538cada8a2683b40996d2a0188a4f027a5a6fdc21bb4267903896fe3d51"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java":{"size":7008,"mtime_ns":1779900237481266342,"hash":"bd12d3db04c78d514ec10aaa2f919098d467042c2f013286983051a7ffac7274"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java":{"size":600,"mtime_ns":1773353023464433304,"hash":"55ecfe3e7a1349b06309844be4feec3682157cc9def223de02fedbe4c6df738a"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java":{"size":5476,"mtime_ns":1779900346298765627,"hash":"1266e402e2a21e5b6702827a5e85902bec52eeb85a782b60772ace0169091776"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java":{"size":4450,"mtime_ns":1773884009374561479,"hash":"4f25a39ab97eeace71f1b2592240a62265e1922ce4f81ef7c24613ed5a2e8f9f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java":{"size":5314,"mtime_ns":1773358467684121478,"hash":"e08dafc17dc6fca4a01dacf9f8ab33653abd759b90ddca739ae3360c50179f1a"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java":{"size":1359,"mtime_ns":1779900237557270791,"hash":"ce58ebe0a2cf2329029fb5adae8394d1a69ba45069190a3bb42925b6a78fa125"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java":{"size":13110,"mtime_ns":1779193237954226556,"hash":"8922225fc0dbe262cc1dd7595a9dcc02b9cb6661b6315b19eca6897b7abdfbaf"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java":{"size":17722,"mtime_ns":1781379245278765668,"hash":"a9617d704b490595e0963de486fc21651f25608a37e9613b797d15fb1504e0b0"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/AuthController.java":{"size":8168,"mtime_ns":1779900237189249252,"hash":"de836e575475806685ba4f137b7f5d6a56be8afa1c3f4b530ea224dc66494931"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ClassroomController.java":{"size":6685,"mtime_ns":1779212035195807179,"hash":"b9c7865439db193a8a8dd698198da2830c5440da2867853bd9f9e7f0e2dbb466"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DatabaseController.java":{"size":7274,"mtime_ns":1779193237638860954,"hash":"a83fc0fa84b3fd73988cc2eebee0ee41444693efab397708a6d2705372ce5af8"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentController.java":{"size":9511,"mtime_ns":1779212022500642405,"hash":"b0af6daf86596dac582602616509b1a129fb8c5c7f18926d58f1431fd6442b4b"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java":{"size":17327,"mtime_ns":1780416753578376521,"hash":"53c1e6250ec2ad3fc4ac904bb7760adcb9ea16813e402426642d766a82e9a52a"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EducationFormController.java":{"size":3589,"mtime_ns":1779215267194244999,"hash":"25b25558d42f90bcb41fc388b4da3ff8479fd1cd402363311eb485e7740de83c"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/EquipmentController.java":{"size":2673,"mtime_ns":1779192873196532537,"hash":"70bb21b1cb7dea8edbad217bf6305b6261a49ce5c81a41c78820e9315b899c64"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java":{"size":3736,"mtime_ns":1779900653497247629,"hash":"d3a0713b6c80856f0341e8eb0ce9530154a3c4684b0c9797b9f94e2fa9b1fda6"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/GroupController.java":{"size":22592,"mtime_ns":1780345824628863664,"hash":"8ec23ac61eff33d020a3cb0f7f5721c0f40a9642fc4a845a9a76764ff443e856"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/LessonTypeController.java":{"size":1240,"mtime_ns":1779215271727317490,"hash":"fb33a9b25cf6a2ab5b936660fa1bdad0694ef97e7dc842176254ffffb984d02b"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleController.java":{"size":2150,"mtime_ns":1779902109619360103,"hash":"80693ca800f2b820e42720530e52cf6eaa5cd020e2690a75d0ccf0cb4d6c23be"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java":{"size":7106,"mtime_ns":1779193126839783673,"hash":"1bea4c6dc64c6e76b9db1a813ccb1a88a4e63974f43156c4d2d76914de942d4e"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java":{"size":30870,"mtime_ns":1781379245278765668,"hash":"f520e9a8fa8cd7b3a2ea36ae0e2de8efd35b5bf90275ece0479b68d1c4ade5e5"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java":{"size":2274,"mtime_ns":1779902109665361828,"hash":"f9f765f10868004c0a6ff2488b74a8cd7f709e99981f65ea511a4d41a092007f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SpecialityController.java":{"size":15580,"mtime_ns":1780234018662215079,"hash":"ac68444e9cfedae3650952b82039f753db314fa8682f4269ccfedaf4e98fe93f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubgroupController.java":{"size":9075,"mtime_ns":1780416753578376521,"hash":"4b769a6e819b1ad546b2ffdb6ad8209b9d7423b9ac15d40ecd05846ce9a434b7"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/SubjectController.java":{"size":7868,"mtime_ns":1779215249583285492,"hash":"b284327f524071bc219daa3d0849370bc435d15e1fbbd72086f51bf65db34e40"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java":{"size":9081,"mtime_ns":1780416753578376521,"hash":"11030cfd22c4e67f17fed1d74f6e9b544e296008a83ac3ab64fef2684fdee86d"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java":{"size":5187,"mtime_ns":1779215261358302730,"hash":"86432d09fd4e072147f125d971271298289a187b05deed370887df035bc6215e"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java":{"size":14210,"mtime_ns":1779193237781877127,"hash":"a56354c92e778ceacda1ed01facc2f38f0e0e93b4965da0c2d9c2c140eb23616"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/UserController.java":{"size":17609,"mtime_ns":1780416753578376521,"hash":"50e1630b82a52ba814d45c241bd3d5bc583e8917b018561dc2ca86917efe42ff"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/controller/WorkloadController.java":{"size":9254,"mtime_ns":1779902109524356542,"hash":"03c20273155d83fcba886eee79a8f27e08517e30f5d342d352c408a0ea0e0a6e"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java":{"size":256,"mtime_ns":1777579616755385041,"hash":"ffa074c174080e33f759e902458714b94cbbfd6602cb6e2886ff19946fa77d92"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java":{"size":522,"mtime_ns":1777579616781384800,"hash":"1a16672b8aa22ac47f48b946cd046d3efeed939ded371df696228e48e9122fb4"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java":{"size":375,"mtime_ns":1777579616806384568,"hash":"23289c35f1a83692bf045f2011fca067b2cf0a02354475d99bc5a3a3d8d930a8"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java":{"size":258,"mtime_ns":1780345824628863664,"hash":"f780074f83ea0da3ffe0f31d4280b6d3a220bc2d4a76ba9541102610fa193e09"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java":{"size":250,"mtime_ns":1777460927433073196,"hash":"8af90083420ca5d8a3fea2fce3da05eb0d1a6724b1aeb40099d38fe695abfc58"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java":{"size":1207,"mtime_ns":1777654589851749540,"hash":"39b85b44660c634b6a3a0554a659e9a047bb3029d120e1ababc02dcff0ed4eed"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java":{"size":2957,"mtime_ns":1779192812660145661,"hash":"d1a3c0544e8b7660e2c00fcf5a246c0a95e4de3794359a176cae2cd9840c2bde"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java":{"size":557,"mtime_ns":1775069027350263938,"hash":"42d267f52bf4650bbdf27d4d126aca688742962aea6fa341fa25d51142cb78f0"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java":{"size":1847,"mtime_ns":1777579638876206342,"hash":"4bc1fd931a220eb88c8c96d03ade862518c6c8360be75d1e4878626ca68ab2b4"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java":{"size":563,"mtime_ns":1775069027350263938,"hash":"caf427b0a3d211bfe95579b4a2544235ee68f8fd0e161f2faaa28e864085f70c"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java":{"size":969,"mtime_ns":1775069027350263938,"hash":"8607c4cafdfcf4fa0405efa4b186a4e7d74f148ef2fdd7a6ae48ebb2f9ffbdc2"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java":{"size":1007,"mtime_ns":1780416753578376521,"hash":"78c00b5cb43d8fa22d2feb0fa0d9b5211b8cbe442bebc4a340d8e565ce8948b1"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java":{"size":1198,"mtime_ns":1775069027350263938,"hash":"ea09fc348c675220c5720260a17d708cea525bea66b89365f35dce3e02ca0afa"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java":{"size":852,"mtime_ns":1775069027350263938,"hash":"547edbbfd01dab052ccf1993a1bdeb86eec7fe934c014b419983b502c1368fec"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java":{"size":185,"mtime_ns":1779192798589287956,"hash":"e5fb32ccd6b96c30b7ee8f6b5ad63bb31d1a3de855d2bc95f0eb730bbaf22231"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java":{"size":335,"mtime_ns":1780345824644904570,"hash":"286a291ec64bdf627ab35c0bc9102e08cc75ca8cdcad4fd33a9e7c60416ecd60"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/GroupResponse.java":{"size":3619,"mtime_ns":1779904225398118400,"hash":"d5a19f5d5aad38c53ea9130cf0755343fa4706719edd198ab05a18069161c9c1"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java":{"size":107,"mtime_ns":1777493672017087189,"hash":"c9471440549598f2460dbb3359416b2b79acd36ae87b9c98cea67dabe487e9d5"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/LoginRequest.java":{"size":462,"mtime_ns":1773185539163446417,"hash":"7e7a69ed58f61b3f29394a9251f4964f99d2dcdaaf2bd02bcaffe5a0af80dac9"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/LoginResponse.java":{"size":1892,"mtime_ns":1777461201470566560,"hash":"e8d2b8511427830a9b574fdd45603c8f6c977c6abc657e2e400097e976aa3a03"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java":{"size":1182,"mtime_ns":1780232687972241201,"hash":"e3ba6f8ea997c75aff88d2da99984ee0077d95cb3355750cbc4b1cccbea241f4"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java":{"size":1232,"mtime_ns":1780416753578376521,"hash":"b1b69f31bd2a1a9dba7926772b206bd7f47576a85540570e1f223b6065bebfce"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java":{"size":427,"mtime_ns":1779192798681287026,"hash":"01d9ac60353eab5b8fd4841f4d6d5f3f82770e794b6ae283c577580dcc10c6aa"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java":{"size":624,"mtime_ns":1778090735700550520,"hash":"05c172c1c7f7a58a811a50375a1da580f2e0e51bf769258918ad51a75196a2de"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java":{"size":642,"mtime_ns":1778234933334181387,"hash":"fc268b7d990d94fd110dad6d6975423d6cabf98db7fe1563f6dbaa43acdee728"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SemesterDto.java":{"size":306,"mtime_ns":1777460927408073246,"hash":"e85c89504dafbb0b863385b1cc507d7c051474fec9e50d2be76149770d7659a2"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java":{"size":860,"mtime_ns":1775069027350263938,"hash":"287e722d1fe2973ff76ce34375777e50870fa8319bb09ee8794af9fc58754e7b"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java":{"size":222,"mtime_ns":1777579616704385515,"hash":"36026b99fead0ca526cb10288628823c1b829e32ce3b304a5dcecfed1035cc77"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubgroupDto.java":{"size":181,"mtime_ns":1778093881255112505,"hash":"ceae897064e8c2e21f452f90273ad6241c52979c140e7206f7e8ff6b8eebdb4e"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java":{"size":249,"mtime_ns":1779192798650287340,"hash":"e9adf63725ace0ff0380cb4a13982994c44cc4f8352886bf65dfd91aff21d1af"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/SubjectResponse.java":{"size":647,"mtime_ns":1775069027350263938,"hash":"6547a0b78f8dbf1cbde5c1b6aef7bde174b5c01ceaf9c399eb05b5e1bac74ddd"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java":{"size":490,"mtime_ns":1780416753578562113,"hash":"089c0f116ce32c7ce28586290192c4efd630fdf3421a9b9ed5140bb1f61ea811"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java":{"size":352,"mtime_ns":1779192798620287643,"hash":"0f5869ba55b9d0d5682a54a772394cc3de7a17898f37c7895cee16da9f89d5c5"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java":{"size":698,"mtime_ns":1773185539163446417,"hash":"bf07ab2f446c732add756aea062c4f231d9423bfc268c7be0589fe599ddd8461"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java":{"size":194,"mtime_ns":1777656879246685080,"hash":"59311a5b76a2fe30a70befcc102efb717b55781eea52a401286ad25d99c1a582"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java":{"size":337,"mtime_ns":1777656870730931201,"hash":"0e999bd59b5d250c0bece30dd206e01cf20a5c0fe1b542d1038bf25507d8ab47"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java":{"size":238,"mtime_ns":1777656875198798961,"hash":"959e1381745900f960360d4b04937c6b812c01c8c1f010796b8c04be6a802484"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/UserResponse.java":{"size":2029,"mtime_ns":1779902129463770520,"hash":"4a0b015e53d0471035ede7abc272344e3fb65624bac54dde2e0e3af02306afd5"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java":{"size":250,"mtime_ns":1779192798710286733,"hash":"25159b2e90f277736e32c9aa91411ada725d4d08b3ad0f59422a26dc6618bb0f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendar.java":{"size":2090,"mtime_ns":1777631805019343580,"hash":"de045e07f8dee74796ba4fa28064d80740ff383456b29aa8d8f7a4d140b7ee7f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java":{"size":1811,"mtime_ns":1777579536451313000,"hash":"0f9efff6e0ade4f428d2c284060bb222a85dec4ba2d35a3ede28b3faab91de4f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java":{"size":2071,"mtime_ns":1777579536502313548,"hash":"b1968aea9603214305f7bb3e5e3b0ff05d2d7e6094f09e98648341f452749532"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java":{"size":1776,"mtime_ns":1780345824644904570,"hash":"f3c2e0a3d96a72e199821f0c1ed0590041a00a99ad0b4e1286d447bde5d17a90"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AcademicYear.java":{"size":1069,"mtime_ns":1777460866736195975,"hash":"1d59c074b4ef3295e98d261b0a00416a24e50a18fb08f615857ad03952bb5ddf"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java":{"size":3089,"mtime_ns":1779889713726702411,"hash":"db778026ef0b1a3424ac5b3f99a42569ac5268cd86d6e3008536ec97a7ad4dfc"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Classroom.java":{"size":1938,"mtime_ns":1779192626963015815,"hash":"d60d317b6bb7e6d9b493499067dd6da9cd6b937757dd01c46c9ce647df0d7c44"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Department.java":{"size":1112,"mtime_ns":1779192626461014761,"hash":"9bbc927463b006a86722789bbbcf3b24646d77a3d703cbed81b4b2cf0d0193bb"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/EducationForm.java":{"size":610,"mtime_ns":1779192626690018551,"hash":"30e0d7371208a0b2ff2b6590d9e1a9a873abab9dd8be29c27ebf6976ea3c2b02"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Equipment.java":{"size":696,"mtime_ns":1779192626908614371,"hash":"d089ed980c0c60fd352ddea7d30598b1ab1169cba1eb22c370f99911fc066a3c"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LessonType.java":{"size":568,"mtime_ns":1775069027350263938,"hash":"3f5382455d54bacc0a443b73b98687a5a92c4735d276d696e9c2c23a99c41963"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java":{"size":2767,"mtime_ns":1779904217151999645,"hash":"393627916badad02a78935fdc413f6b94d8aff45ad93693103f493812aaa3209"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Role.java":{"size":148,"mtime_ns":1779211978790041706,"hash":"a490eeb4de5965ea87a969fc1d9224ad27e51faa3df40d353377aaaa6a7ea12a"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java":{"size":2393,"mtime_ns":1779900237353258851,"hash":"1a7cdd080997208d5cfe554847b21c2a9ec9426167d9d5f29c5a7aa9fe0ccbb6"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java":{"size":2950,"mtime_ns":1779192770443572324,"hash":"e2788c00c62ec8dea26485571f596921f3f1c26607f38633a7ce236f016bbed1"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleParity.java":{"size":91,"mtime_ns":1777460866685204162,"hash":"265e8882226ba523ef0fbed53855eb1f447266da2c1cc9aabbfcfa600dd1708d"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRule.java":{"size":6219,"mtime_ns":1779900653551248906,"hash":"4957508b7abf013d3fc4442d63a5d0f63c6e8eecc704bee16d34e7d10fa011ed"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java":{"size":3905,"mtime_ns":1778234927852506061,"hash":"82e38ae576fefa926edbbcd346d096ecaa0d8df9e419f3d068f8e9280cf923f3"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Semester.java":{"size":1493,"mtime_ns":1777460866761205527,"hash":"d319dc499991dcab92c9d0e0131ccdbd7b25e06a2b2ad27449bc2c20e87c0e15"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SemesterType.java":{"size":84,"mtime_ns":1775069027350263938,"hash":"e1646704403f9fa714c1e2c8133111c0e03559ea48e3e3f1f0001efa8e472af6"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Speciality.java":{"size":1125,"mtime_ns":1779192626518020274,"hash":"28ba7d562e794df59b200d2e99b8d545164ce2c7481748835eac60e8d4722485"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java":{"size":1109,"mtime_ns":1779192626573019723,"hash":"2ef9f466a55710d2bb8f525d28d2a08274c8392729be4740f84e7e953fa79b04"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroup.java":{"size":2375,"mtime_ns":1779192626750017949,"hash":"df9141b52f117a2b55e03a98af5c54ad9beaa596bda0f50de7bf90f8835d4588"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java":{"size":1370,"mtime_ns":1777579536531313860,"hash":"40d4a4144f8397f24bc54c4c49b003524a7e603be5006f8381de30762361b5a1"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java":{"size":449,"mtime_ns":1779904217175999989,"hash":"9478df3214f491838b7e9066acad39d734fdf523dfa941e8e71471546003ef4a"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subgroup.java":{"size":1139,"mtime_ns":1779192626802017428,"hash":"ac34a2a98158b62313730d5d8b14acd2c95a9cc7d2f686176ca671ddfe2f972b"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/Subject.java":{"size":1232,"mtime_ns":1779192626855016897,"hash":"aacc2599d9197ae3aa13be821741d1139e6dac363c574df68a5d5cfa77e1405f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/SubjectComment.java":{"size":1310,"mtime_ns":1779192770413572627,"hash":"b8a22adcc580c23dec6a60b8ff0188cf7e95da29bd5299d52030f80aa9b688b5"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java":{"size":3902,"mtime_ns":1780416753578562113,"hash":"d703dd077feff0aa2c278dd7fddcce860c59f80865fb05aaa8b89fcde74b5163"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherCreationRequestStatus.java":{"size":117,"mtime_ns":1780416753578562113,"hash":"26cfe58a92526814113d722c4e327325064fbb55454c5a96e2f22cfc5c6d6c3a"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java":{"size":2418,"mtime_ns":1779192770384572920,"hash":"9b0cf5a307b3ee53505953abd8ef0ba84c0357ca364c55737c2874b78c0ab83d"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubject.java":{"size":1169,"mtime_ns":1773185539163446417,"hash":"34c2662f7ecd86955d01c3b288826160272baf9939e24dda52422b128e9c9ac7"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java":{"size":1019,"mtime_ns":1773185539163446417,"hash":"38f01279921dfa97f4b7140fa33b16f0864f2c6abda489c2de814252a1c7c2f1"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlot.java":{"size":1730,"mtime_ns":1777656866840052019,"hash":"b4b483386882f50c054f21e8f8cda5021a2a7a7799c69656cdd39cdf1d88ec37"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java":{"size":956,"mtime_ns":1777656861152238329,"hash":"c21b133c9613b7199787d1a1ddccedf8a3b90d45728ec750262fcdeef9043257"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/TimeSlotScope.java":{"size":1777,"mtime_ns":1777656851588578194,"hash":"5182ef59450c1341546df9c6a101a4245b5a434a920b99ac12b573a71bbceaed"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/model/User.java":{"size":1802,"mtime_ns":1779192626633019122,"hash":"c11badd9f6abe4c8c89666e8bae1daf6b92e3af1aeac756d94dc76a8a44b6841"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java":{"size":479,"mtime_ns":1777579584218751058,"hash":"1d99c8c855e34a234e8cc5e5ad8e080999d8e71d35685ebbc69d24dd2cde7f32"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java":{"size":1588,"mtime_ns":1777579595611607288,"hash":"a30da6ed8f89d6ae54d16367c6a858e2cb63805d2a2c4c3e9b4e81223e921edc"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java":{"size":1671,"mtime_ns":1777631935453048967,"hash":"ebe1ebe0efd275c104dbdde1a72c8b1d5ddb5729f01a7259d8879412e43774ce"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java":{"size":1458,"mtime_ns":1780345824644904570,"hash":"6d3d4c19048a0d015fbb7bcfce2d32336419f70fc89f48fed9b665f33561a913"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java":{"size":312,"mtime_ns":1777460903439121182,"hash":"74c37a314146e6c69f7b84e526c9d33099e5ca779ada943e24e8c35a8247a9cd"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java":{"size":336,"mtime_ns":1779889713726702411,"hash":"b3688a3438336965040a4a8e29482b46c358f482ee5b54bdfb60e0099affce87"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java":{"size":373,"mtime_ns":1779192732061959516,"hash":"a6b6fb3d678d1bc2c81884861b2ebccee131f533288b8f497cd1dea2fa918171"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java":{"size":468,"mtime_ns":1779192732175958367,"hash":"16767d94de4f4efa2e03785df6d91af0c4b858ed682dec012a87ca8aa09ca58c"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java":{"size":389,"mtime_ns":1777631808410335969,"hash":"d9367be6b0af7d7af2384fddfc0e9879bfda5f3290a3ca1cd5da6f37d972b808"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java":{"size":373,"mtime_ns":1779192732117958952,"hash":"39c830ee50866c6a59b6c3f45bd78b6b0fefd4df64133ac77ec6374610974201"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/GroupRepository.java":{"size":524,"mtime_ns":1779192732403956069,"hash":"95651757c3354557e9f9020ce9ed427ff58616d4b9472b2dc67d5d2881f2de03"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java":{"size":224,"mtime_ns":1775069027350263938,"hash":"7c20e6b22227e83ea48959d0db41a99cfea9e16c6a463fd44b2256d4b67e69e6"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java":{"size":1042,"mtime_ns":1779192787453400509,"hash":"eaf1d03da73c5c0738658044f09f67068afe368dddd1fc14597de09c3a372dc7"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java":{"size":3586,"mtime_ns":1779193305891365314,"hash":"3b19eb3552131e5b548e9115de2c5fd3a05369987e8fef71c3299a365ae5883e"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java":{"size":582,"mtime_ns":1778234945053437009,"hash":"971c9f460dff5af36c7657f21d3a70f378c9d415c5035289021fb1170bf2f4aa"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java":{"size":655,"mtime_ns":1777460903466121127,"hash":"057e3514c526f4cc6af4e30da4f8cd32f7f4ba09e25701c0780fff0aa3e66dee"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java":{"size":471,"mtime_ns":1779192732232818599,"hash":"2386d738714321a165d7e963ff04441317464a752c9353c22c012b3c5e8a7fb7"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java":{"size":464,"mtime_ns":1777579584161751821,"hash":"a73eda6953d4bb6bdfded32ca69287ce0ef8b28525b09c29dcfa8291f54e3007"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java":{"size":2209,"mtime_ns":1777579601454540339,"hash":"44161c2f314305041961951286e809eff255ed97fbfb085ba8c76a88399add49"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java":{"size":2975,"mtime_ns":1780416753578562113,"hash":"48bec84b9c64abace6450c682f20b3088ea1668f667ab76fcc3c3db30609e464"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java":{"size":337,"mtime_ns":1779192787422400823,"hash":"ac8a3dab9e7e1fde4a8bbeaeb64ec71d2a631010b25d77a5e9f136a9e1cdecad"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java":{"size":506,"mtime_ns":1779192732288957228,"hash":"b34280a17941a1e66a16b4916811873f4b5bb65ecf127f44aa428485a8f85c3c"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java":{"size":702,"mtime_ns":1780416753578562113,"hash":"f123890af1bd409b02d0dff44c18e57181710b30ef746d6eee9d014a1e4444f6"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java":{"size":2247,"mtime_ns":1780416753578562113,"hash":"676d77671a8b80acbaf0ce3e22c67c56f408b90cb3ecc32013855fd56b7e2582"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java":{"size":428,"mtime_ns":1773185539163446417,"hash":"2144f243b59a175b124c9a879dccf9b93e04ecb9f6b4c5ce47c7c44343f765cd"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java":{"size":624,"mtime_ns":1777656899149203981,"hash":"4b348d8dfbb5b02025bba15d599ad9eaf52e3515d3691620c0ab0e8c2ec016d1"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java":{"size":591,"mtime_ns":1777656885497168312,"hash":"4118953ccde05732a1a8da9cfa48e92e8f30a0c79647c3975d9006f87a098daa"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java":{"size":590,"mtime_ns":1777656891521373220,"hash":"7bae527623bd4ee91f0d804ba7678d3080ce4138160e55670a2284a82bce2585"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/repository/UserRepository.java":{"size":670,"mtime_ns":1779192732349956613,"hash":"7478a9b9d307de997413b9cb7cb10697dc89bee2ea2687a706329ce59b8de678"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/AcademicDateService.java":{"size":3778,"mtime_ns":1777579735689881097,"hash":"11682a5717ad6bf6e2e7d6420920a2dd9de0fb74747b2f0e9fd79221f0d11c29"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java":{"size":21563,"mtime_ns":1780232702474175980,"hash":"a6fe5a669a29407387f4a470bf421e5b76db7bd7eb34708474a94e91f5e7894f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java":{"size":13247,"mtime_ns":1780232732229042098,"hash":"b4ab949ae96d73acc8882efc60bdf0c56ca1b84add35698e4609147fdfb93682"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java":{"size":3294,"mtime_ns":1779904217201000347,"hash":"cc5d2d897bfda809ceb8d750b6c04dea1e10af9a5fc723ad6a9ca4cde4bf72c7"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java":{"size":1995,"mtime_ns":1779904217099998899,"hash":"d1c1efee47504f84a1a34a1174fa7ad74004f3f0ff5a0cc85e8e0bf80e96fe61"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/resources/db/migration/V1__init.sql":{"size":54648,"mtime_ns":1780416753578562113,"hash":"5f02c2868c938285ab269d4ff3268ef827c8a7e262f51768a67d2bb691a463aa"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/main/resources/db/migration/V2__subgroups_active_unique_name.sql":{"size":220,"mtime_ns":1780416753578562113,"hash":"1dcf061e5fb9de2102dce995392809e2c2c19a683d112f670e22a16f407a008d"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java":{"size":3974,"mtime_ns":1779889713727155078,"hash":"b9964788c4fa92cf94208d7af0d269803714ba887b3c683880bf4d49891e66b5"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java":{"size":4873,"mtime_ns":1779889713727202046,"hash":"6bfedbeef2e8e301e490a53364c0a9d1c6a85300d5e4d808170f3eaffd85bd70"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java":{"size":701,"mtime_ns":1779900300310950184,"hash":"ff3851273041230b15d39b3122b064cc7621d1977abcc6db0981dbbd4e9ff408"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java":{"size":1309,"mtime_ns":1779900295110644807,"hash":"923d324b97db7c6400429fbf0e2fc0d3ab18d78230c94d020be545cc7bd43bec"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java":{"size":6686,"mtime_ns":1780416753578562113,"hash":"8caac7552948dc70f7ac2fd54032b9df6a7a5b8d8a9f4dad432092b2402b63e4"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java":{"size":2740,"mtime_ns":1780416753578562113,"hash":"7b74a5e4c5813c385d0a032e78215d517a23b84548c3520f2dcbeef3c1cb2a71"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java":{"size":1970,"mtime_ns":1779902196628077469,"hash":"f725738bee0191dbb098f835781c50d03516474117eaaad42ee82ea56593e051"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java":{"size":1349,"mtime_ns":1779904348948025733,"hash":"00e8de11bc0c6cd3b111cc5d23a2ab9d45f5ce85f3958e959fd0d7a6434042b8"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java":{"size":1577,"mtime_ns":1779900295214650914,"hash":"ab1975e88bebccd704a87c4ffff93b2eff4d0e9e703fd9048e9e261ffa752e7f"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java":{"size":1205,"mtime_ns":1779900653603250135,"hash":"cec1ec25f32d091d51d427c7a49ceae21e4dc426abc0fd3335da1ee7673afa77"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java":{"size":3183,"mtime_ns":1779904348785023072,"hash":"0cfd571b6f249e418ca9ec9a180954648216c4ef31dffab9c2e5988619859290"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java":{"size":2691,"mtime_ns":1779904348811023496,"hash":"5f0f0527f01153be5b9357670a8d007087a629ed52603e3fe0187059e7f903e2"},"/mnt/HDD/ProjectMagistr/magistr/backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java":{"size":802,"mtime_ns":1779904348884024688,"hash":"1c016b2e6724a54509d174964fd7285056735442da415d0cdc5494984060ae67"},"/mnt/HDD/ProjectMagistr/magistr/backend/tenants.example.json":{"size":185,"mtime_ns":1779900753471741190,"hash":"03eed484ebe217e695a18c94b18cb274b71aed05d9b8343d7b7c7ac4964a4e32"}} \ No newline at end of file diff --git a/graphify-out/cost.json b/graphify-out/cost.json new file mode 100644 index 0000000..80eddc5 --- /dev/null +++ b/graphify-out/cost.json @@ -0,0 +1,12 @@ +{ + "runs": [ + { + "date": "2026-07-04T10:48:45.115692+00:00", + "input_tokens": 0, + "output_tokens": 0, + "files": 242 + } + ], + "total_input_tokens": 0, + "total_output_tokens": 0 +} \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html new file mode 100644 index 0000000..c77deea --- /dev/null +++ b/graphify-out/graph.html @@ -0,0 +1,307 @@ + + + + +graphify - graphify-out/graph.html + + + + +
+ + + + + \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json new file mode 100644 index 0000000..5b0be1a --- /dev/null +++ b/graphify-out/graph.json @@ -0,0 +1,96093 @@ +{ + "directed": false, + "multigraph": false, + "graph": { + "hyperedges": [ + { + "id": "dynamic_schedule_documentation", + "label": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "nodes": [ + "docs_business_logic_dynamic_schedule_model", + "docs_api_dynamic_schedule_endpoints", + "docs_database_dynamic_schedule_tables", + "docs_academic_calendar_calendar_model", + "docs_frontend_schedule_views", + "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "docs_schedule_proposal_dynamic_schedule_concept" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/BUSINESS_LOGIC.md" + }, + { + "id": "multitenant_infrastructure_pattern", + "label": "\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b", + "nodes": [ + "docs_architecture_multitenant_architecture", + "devops_database_per_tenant_pattern", + "docs_infrastructure_tenants_configmap", + "compose_db_service", + "docs_logging_tenant_mdc_context" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/ARCHITECTURE.md" + }, + { + "id": "documentation_governance_policy", + "label": "\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", + "nodes": [ + "agents_project_regulation", + "_agents_skills_autoupdatedocs_autoupdatedocs_skill", + "docs_development_flyway_rules", + "docs_database_flyway_migrations" + ], + "relation": "implement", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md" + }, + { + "id": "admin_spa_route_system", + "label": "\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u043e\u0439 SPA", + "nodes": [ + "frontend_admin_index_admin_spa_shell", + "frontend_admin_index_sidebar_navigation", + "frontend_admin_views_dashboard_dashboard_view", + "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "frontend_admin_views_department_workspace_department_workspace_view", + "frontend_admin_views_schedule_schedule_rule_constructor", + "frontend_admin_views_academic_calendar_academic_calendar_view", + "frontend_admin_views_auditorium_workload_workload_view", + "frontend_admin_views_schedule_view_schedule_view_shell", + "frontend_admin_views_classrooms_classroom_management", + "frontend_admin_views_groups_group_management", + "frontend_admin_views_university_structure_university_structure_view", + "frontend_admin_views_subjects_subject_management", + "frontend_admin_views_users_user_management" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html" + }, + { + "id": "settings_spa_route_system", + "label": "\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b SPA \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", + "nodes": [ + "frontend_admin_settings_index_settings_spa_shell", + "frontend_admin_settings_index_settings_navigation", + "frontend_admin_settings_views_general_general_settings_placeholder", + "frontend_admin_settings_views_time_slots_time_slots_settings", + "frontend_admin_settings_views_edu_forms_education_forms_management", + "frontend_admin_settings_views_database_tenant_connection_management" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/settings/index.html" + }, + { + "id": "schedule_generation_workspace", + "label": "\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "nodes": [ + "docs_schedule_tasks_dynamic_schedule_tasks", + "docs_schedule_tasks_daily_academic_calendar_grid", + "docs_schedule_tasks_group_calendar_assignment", + "frontend_admin_views_academic_calendar_academic_calendar_view", + "frontend_admin_views_groups_group_management", + "frontend_admin_views_schedule_schedule_rule_constructor", + "frontend_admin_views_schedule_view_schedule_view_shell", + "frontend_admin_settings_views_time_slots_time_slots_settings" + ], + "relation": "participate_in", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/SCHEDULE_TASKS.md" + }, + { + "id": "shared_week_schedule_rendering", + "label": "\u041e\u0431\u0449\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "nodes": [ + "frontend_student_index_loadschedule", + "frontend_student_index_renderweek", + "frontend_teacher_index_loadschedule", + "frontend_teacher_index_renderweek", + "frontend_edu_office_index_admin_schedule_view_route" + ], + "relation": "participate_in", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/student/index.html" + }, + { + "id": "shared_browser_auth_flow", + "label": "\u041e\u0431\u0449\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438", + "nodes": [ + "frontend_student_index_fetchjson", + "frontend_student_index_refreshaccesstoken", + "frontend_student_index_logout", + "frontend_teacher_index_fetchjson", + "frontend_teacher_index_refreshaccesstoken", + "frontend_teacher_index_logout" + ], + "relation": "implement", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/student/index.html" + }, + { + "id": "resume_devops_delivery_chain", + "label": "\u0426\u0435\u043f\u043e\u0447\u043a\u0430 DevOps-\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0440\u0435\u0437\u044e\u043c\u0435", + "nodes": [ + "resume_index_kubernetes_k3s_delivery", + "resume_index_dynamic_tenants_configmap", + "resume_index_gitea_actions_cicd", + "resume_index_opentelemetry_signoz_observability", + "resume_index_database_per_tenant" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html" + } + ] + }, + "nodes": [ + { + "label": "com.magistr:app", + "file_type": "code", + "type": "package", + "ecosystem": "maven", + "source_file": "backend/pom.xml", + "source_location": "L1", + "version": "1.0.0", + "_origin": "ast", + "id": "pkg_com_magistr_app", + "community": 134, + "norm_label": "com.magistr:app" + }, + { + "label": "Application.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_application", + "community": 67, + "norm_label": "application.java" + }, + { + "label": "Application", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_application_application", + "community": 67, + "norm_label": "application" + }, + { + "label": "SpringBootApplication", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "springbootapplication", + "community": 67, + "norm_label": "springbootapplication" + }, + { + "label": "EnableScheduling", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "enablescheduling", + "community": 67, + "norm_label": "enablescheduling" + }, + { + "label": ".main()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_application_application_main", + "community": 67, + "norm_label": ".main()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_application_java_string", + "community": 67, + "norm_label": "string" + }, + { + "label": "AppConfig.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_appconfig", + "community": 120, + "norm_label": "appconfig.java" + }, + { + "label": "AppConfig", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_appconfig_appconfig", + "community": 120, + "norm_label": "appconfig" + }, + { + "label": "Configuration", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_appconfig_java_configuration", + "community": 120, + "norm_label": "configuration" + }, + { + "label": ".passwordEncoder()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", + "community": 120, + "norm_label": ".passwordencoder()" + }, + { + "label": "BCryptPasswordEncoder", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_appconfig_java_bcryptpasswordencoder", + "community": 120, + "norm_label": "bcryptpasswordencoder" + }, + { + "label": "Bean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_appconfig_java_bean", + "community": 120, + "norm_label": "bean" + }, + { + "label": "DataInitializer.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_datainitializer", + "community": 54, + "norm_label": "datainitializer.java" + }, + { + "label": "DataInitializer", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "community": 54, + "norm_label": "datainitializer" + }, + { + "label": "CommandLineRunner", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "commandlinerunner", + "community": 54, + "norm_label": "commandlinerunner" + }, + { + "label": "Component", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_datainitializer_java_component", + "community": 54, + "norm_label": "component" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_datainitializer_java_logger", + "community": 54, + "norm_label": "logger" + }, + { + "label": ".DataInitializer()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_datainitializer", + "community": 54, + "norm_label": ".datainitializer()" + }, + { + "label": ".run()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", + "community": 67, + "norm_label": ".run()" + }, + { + "label": "Override", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_datainitializer_java_override", + "community": 67, + "norm_label": "override" + }, + { + "label": "AuthContext.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "community": 7, + "norm_label": "authcontext.java" + }, + { + "label": "AuthContext", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "community": 28, + "norm_label": "authcontext" + }, + { + "label": "ThreadLocal", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext_java_threadlocal", + "community": 28, + "norm_label": "threadlocal" + }, + { + "label": ".AuthContext()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_authcontext", + "community": 28, + "norm_label": ".authcontext()" + }, + { + "label": ".setCurrentUser()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser", + "community": 28, + "norm_label": ".setcurrentuser()" + }, + { + "label": ".getCurrentUser()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", + "community": 22, + "norm_label": ".getcurrentuser()" + }, + { + "label": ".currentUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid", + "community": 12, + "norm_label": ".currentuserid()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext_java_long", + "community": 12, + "norm_label": "long" + }, + { + "label": ".clear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_clear", + "community": 11, + "norm_label": ".clear()" + }, + { + "label": "AuthenticatedUser.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser", + "community": 28, + "norm_label": "authenticateduser.java" + }, + { + "label": "AuthenticatedUser", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "community": 28, + "norm_label": "authenticateduser" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_java_long", + "community": 28, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_java_string", + "community": 28, + "norm_label": "string" + }, + { + "label": "AuthorizationInterceptor.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor", + "community": 11, + "norm_label": "authorizationinterceptor.java" + }, + { + "label": "AuthorizationInterceptor", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "community": 11, + "norm_label": "authorizationinterceptor" + }, + { + "label": "HandlerInterceptor", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "handlerinterceptor", + "community": 11, + "norm_label": "handlerinterceptor" + }, + { + "label": "Component", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_component", + "community": 11, + "norm_label": "component" + }, + { + "label": "ObjectMapper", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_objectmapper", + "community": 11, + "norm_label": "objectmapper" + }, + { + "label": ".AuthorizationInterceptor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_authorizationinterceptor", + "community": 11, + "norm_label": ".authorizationinterceptor()" + }, + { + "label": ".preHandle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "community": 11, + "norm_label": ".prehandle()" + }, + { + "label": "HttpServletRequest", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletrequest", + "community": 11, + "norm_label": "httpservletrequest" + }, + { + "label": "HttpServletResponse", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletresponse", + "community": 11, + "norm_label": "httpservletresponse" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_object", + "community": 11, + "norm_label": "object" + }, + { + "label": "Override", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_override", + "community": 11, + "norm_label": "override" + }, + { + "label": ".isPublicAuthEndpoint()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", + "community": 11, + "norm_label": ".ispublicauthendpoint()" + }, + { + "label": ".afterCompletion()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L65", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", + "community": 11, + "norm_label": ".aftercompletion()" + }, + { + "label": "Exception", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_exception", + "community": 11, + "norm_label": "exception" + }, + { + "label": ".resolveRoles()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L70", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", + "community": 11, + "norm_label": ".resolveroles()" + }, + { + "label": ".bearerToken()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L81", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", + "community": 11, + "norm_label": ".bearertoken()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_string", + "community": 11, + "norm_label": "string" + }, + { + "label": ".writeError()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", + "community": 11, + "norm_label": ".writeerror()" + }, + { + "label": "JwtProperties.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties", + "community": 61, + "norm_label": "jwtproperties.java" + }, + { + "label": "JwtProperties", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "community": 61, + "norm_label": "jwtproperties" + }, + { + "label": "Component", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_component", + "community": 61, + "norm_label": "component" + }, + { + "label": "ConfigurationProperties", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "configurationproperties", + "community": 61, + "norm_label": "configurationproperties" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_string", + "community": 61, + "norm_label": "string" + }, + { + "label": "Duration", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_duration", + "community": 61, + "norm_label": "duration" + }, + { + "label": ".getSecret()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getsecret", + "community": 61, + "norm_label": ".getsecret()" + }, + { + "label": ".setSecret()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setsecret", + "community": 61, + "norm_label": ".setsecret()" + }, + { + "label": ".getAccessTtl()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getaccessttl", + "community": 61, + "norm_label": ".getaccessttl()" + }, + { + "label": ".setAccessTtl()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setaccessttl", + "community": 61, + "norm_label": ".setaccessttl()" + }, + { + "label": ".getRefreshTtl()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl", + "community": 61, + "norm_label": ".getrefreshttl()" + }, + { + "label": ".setRefreshTtl()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshttl", + "community": 61, + "norm_label": ".setrefreshttl()" + }, + { + "label": ".getRefreshCookieName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename", + "community": 23, + "norm_label": ".getrefreshcookiename()" + }, + { + "label": ".setRefreshCookieName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiename", + "community": 61, + "norm_label": ".setrefreshcookiename()" + }, + { + "label": ".isRefreshCookieSecure()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_isrefreshcookiesecure", + "community": 23, + "norm_label": ".isrefreshcookiesecure()" + }, + { + "label": ".setRefreshCookieSecure()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiesecure", + "community": 61, + "norm_label": ".setrefreshcookiesecure()" + }, + { + "label": ".secretBytes()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_secretbytes", + "community": 61, + "norm_label": ".secretbytes()" + }, + { + "label": "JwtTokenService.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice", + "community": 39, + "norm_label": "jwttokenservice.java" + }, + { + "label": "JwtTokenService", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L25", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "community": 39, + "norm_label": "jwttokenservice" + }, + { + "label": "Service", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_service", + "community": 39, + "norm_label": "service" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_string", + "community": 39, + "norm_label": "string" + }, + { + "label": "JwtEncoder", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "jwtencoder", + "community": 39, + "norm_label": "jwtencoder" + }, + { + "label": "JwtDecoder", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "jwtdecoder", + "community": 39, + "norm_label": "jwtdecoder" + }, + { + "label": ".JwtTokenService()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", + "community": 61, + "norm_label": ".jwttokenservice()" + }, + { + "label": ".createAccessToken()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", + "community": 39, + "norm_label": ".createaccesstoken()" + }, + { + "label": ".authenticate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L74", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", + "community": 39, + "norm_label": ".authenticate()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_optional", + "community": 39, + "norm_label": "optional" + }, + { + "label": ".asLong()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L97", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", + "community": 39, + "norm_label": ".aslong()" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_object", + "community": 39, + "norm_label": "object" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_long", + "community": 39, + "norm_label": "long" + }, + { + "label": "RefreshTokenRotation.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation", + "community": 128, + "norm_label": "refreshtokenrotation.java" + }, + { + "label": "RefreshTokenRotation", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", + "community": 128, + "norm_label": "refreshtokenrotation" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_java_string", + "community": 128, + "norm_label": "string" + }, + { + "label": "RefreshTokenService.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "community": 5, + "norm_label": "refreshtokenservice.java" + }, + { + "label": "RefreshTokenService", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "community": 5, + "norm_label": "refreshtokenservice" + }, + { + "label": "Service", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_service", + "community": 5, + "norm_label": "service" + }, + { + "label": "SecureRandom", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "securerandom", + "community": 81, + "norm_label": "securerandom" + }, + { + "label": ".RefreshTokenService()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_refreshtokenservice", + "community": 5, + "norm_label": ".refreshtokenservice()" + }, + { + "label": ".createSession()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "community": 5, + "norm_label": ".createsession()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_string", + "community": 5, + "norm_label": "string" + }, + { + "label": "Transactional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_transactional", + "community": 5, + "norm_label": "transactional" + }, + { + "label": ".rotate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "community": 5, + "norm_label": ".rotate()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_optional", + "community": 5, + "norm_label": "optional" + }, + { + "label": ".revoke()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L94", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "community": 5, + "norm_label": ".revoke()" + }, + { + "label": ".hashToken()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L109", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", + "community": 5, + "norm_label": ".hashtoken()" + }, + { + "label": ".generateRawToken()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L119", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", + "community": 5, + "norm_label": ".generaterawtoken()" + }, + { + "label": ".limit()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L125", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", + "community": 5, + "norm_label": ".limit()" + }, + { + "label": "RequireRoles.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_requireroles", + "community": 26, + "norm_label": "requireroles.java" + }, + { + "label": "RequireRoles", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "community": 26, + "norm_label": "requireroles" + }, + { + "label": "Retention", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "retention", + "community": 26, + "norm_label": "retention" + }, + { + "label": "Target", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "target", + "community": 26, + "norm_label": "target" + }, + { + "label": "ConfigMapUpdater.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater", + "community": 81, + "norm_label": "configmapupdater.java" + }, + { + "label": "ConfigMapUpdater", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "community": 81, + "norm_label": "configmapupdater" + }, + { + "label": "Service", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_service", + "community": 81, + "norm_label": "service" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_logger", + "community": 81, + "norm_label": "logger" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_string", + "community": 81, + "norm_label": "string" + }, + { + "label": "ObjectMapper", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_objectmapper", + "community": 81, + "norm_label": "objectmapper" + }, + { + "label": ".ConfigMapUpdater()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_configmapupdater", + "community": 81, + "norm_label": ".configmapupdater()" + }, + { + "label": ".updateTenantsConfig()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L52", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", + "community": 81, + "norm_label": ".updatetenantsconfig()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_list", + "community": 81, + "norm_label": "list" + }, + { + "label": ".createInsecureClient()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L104", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", + "community": 81, + "norm_label": ".createinsecureclient()" + }, + { + "label": "HttpClient", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "httpclient", + "community": 81, + "norm_label": "httpclient" + }, + { + "label": "TenantConfig.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig", + "community": 47, + "norm_label": "tenantconfig.java" + }, + { + "label": "TenantConfig", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "community": 47, + "norm_label": "tenantconfig" + }, + { + "label": "JsonIgnoreProperties", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "jsonignoreproperties", + "community": 47, + "norm_label": "jsonignoreproperties" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "community": 47, + "norm_label": "string" + }, + { + "label": ".TenantConfig()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", + "community": 47, + "norm_label": ".tenantconfig()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getname", + "community": 47, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setname", + "community": 47, + "norm_label": ".setname()" + }, + { + "label": ".getDomain()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L30", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain", + "community": 47, + "norm_label": ".getdomain()" + }, + { + "label": ".setDomain()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setdomain", + "community": 47, + "norm_label": ".setdomain()" + }, + { + "label": ".getUrl()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl", + "community": 47, + "norm_label": ".geturl()" + }, + { + "label": ".setUrl()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_seturl", + "community": 47, + "norm_label": ".seturl()" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getusername", + "community": 47, + "norm_label": ".getusername()" + }, + { + "label": ".setUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setusername", + "community": 47, + "norm_label": ".setusername()" + }, + { + "label": ".getPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getpassword", + "community": 47, + "norm_label": ".getpassword()" + }, + { + "label": ".setPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L40", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setpassword", + "community": 47, + "norm_label": ".setpassword()" + }, + { + "label": "TenantConfigWatcher.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher", + "community": 54, + "norm_label": "tenantconfigwatcher.java" + }, + { + "label": "TenantConfigWatcher", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "community": 54, + "norm_label": "tenantconfigwatcher" + }, + { + "label": "Component", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_component", + "community": 54, + "norm_label": "component" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_logger", + "community": 54, + "norm_label": "logger" + }, + { + "label": "DataSource", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_datasource", + "community": 54, + "norm_label": "datasource" + }, + { + "label": "ObjectMapper", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_objectmapper", + "community": 54, + "norm_label": "objectmapper" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_string", + "community": 54, + "norm_label": "string" + }, + { + "label": ".TenantConfigWatcher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_tenantconfigwatcher", + "community": 54, + "norm_label": ".tenantconfigwatcher()" + }, + { + "label": ".watchForChanges()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", + "community": 54, + "norm_label": ".watchforchanges()" + }, + { + "label": "Scheduled", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "scheduled", + "community": 54, + "norm_label": "scheduled" + }, + { + "label": ".refreshHash()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L78", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", + "community": 54, + "norm_label": ".refreshhash()" + }, + { + "label": ".configHash()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L90", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", + "community": 54, + "norm_label": ".confighash()" + }, + { + "label": ".syncTenants()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L102", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "community": 47, + "norm_label": ".synctenants()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_list", + "community": 47, + "norm_label": "list" + }, + { + "label": ".initDatabaseForTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L133", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "community": 67, + "norm_label": ".initdatabasefortenant()" + }, + { + "label": "TenantContext.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext", + "community": 67, + "norm_label": "tenantcontext.java" + }, + { + "label": "TenantContext", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", + "community": 67, + "norm_label": "tenantcontext" + }, + { + "label": "ThreadLocal", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_java_threadlocal", + "community": 67, + "norm_label": "threadlocal" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_java_string", + "community": 67, + "norm_label": "string" + }, + { + "label": ".getCurrentTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant", + "community": 23, + "norm_label": ".getcurrenttenant()" + }, + { + "label": ".setCurrentTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_setcurrenttenant", + "community": 67, + "norm_label": ".setcurrenttenant()" + }, + { + "label": ".clear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_clear", + "community": 67, + "norm_label": ".clear()" + }, + { + "label": "TenantDataSourceConfig.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "community": 68, + "norm_label": "tenantdatasourceconfig.java" + }, + { + "label": "TenantDataSourceConfig", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "community": 68, + "norm_label": "tenantdatasourceconfig" + }, + { + "label": "Configuration", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_configuration", + "community": 68, + "norm_label": "configuration" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_logger", + "community": 68, + "norm_label": "logger" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_string", + "community": 68, + "norm_label": "string" + }, + { + "label": ".dataSource()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "community": 68, + "norm_label": ".datasource()" + }, + { + "label": "DataSource", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_datasource", + "community": 68, + "norm_label": "datasource" + }, + { + "label": "Bean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_bean", + "community": 68, + "norm_label": "bean" + }, + { + "label": "Primary", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "primary", + "community": 68, + "norm_label": "primary" + }, + { + "label": ".tenantRoutingDataSource()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L89", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", + "community": 68, + "norm_label": ".tenantroutingdatasource()" + }, + { + "label": ".entityManagerFactory()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L94", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", + "community": 68, + "norm_label": ".entitymanagerfactory()" + }, + { + "label": "LocalContainerEntityManagerFactoryBean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "localcontainerentitymanagerfactorybean", + "community": 68, + "norm_label": "localcontainerentitymanagerfactorybean" + }, + { + "label": ".transactionManager()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L114", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", + "community": 68, + "norm_label": ".transactionmanager()" + }, + { + "label": "EntityManagerFactory", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "entitymanagerfactory", + "community": 68, + "norm_label": "entitymanagerfactory" + }, + { + "label": "PlatformTransactionManager", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "platformtransactionmanager", + "community": 68, + "norm_label": "platformtransactionmanager" + }, + { + "label": ".loadTenantsFromFile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L120", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", + "community": 48, + "norm_label": ".loadtenantsfromfile()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_list", + "community": 48, + "norm_label": "list" + }, + { + "label": "TenantInterceptor.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor", + "community": 11, + "norm_label": "tenantinterceptor.java" + }, + { + "label": "TenantInterceptor", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L30", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "community": 11, + "norm_label": "tenantinterceptor" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_logger", + "community": 11, + "norm_label": "logger" + }, + { + "label": ".setRoutingDataSource()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_setroutingdatasource", + "community": 11, + "norm_label": ".setroutingdatasource()" + }, + { + "label": ".preHandle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "community": 11, + "norm_label": ".prehandle()" + }, + { + "label": "HttpServletRequest", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_httpservletrequest", + "community": 11, + "norm_label": "httpservletrequest" + }, + { + "label": "HttpServletResponse", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_httpservletresponse", + "community": 11, + "norm_label": "httpservletresponse" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_object", + "community": 11, + "norm_label": "object" + }, + { + "label": "Override", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_override", + "community": 11, + "norm_label": "override" + }, + { + "label": ".afterCompletion()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", + "community": 11, + "norm_label": ".aftercompletion()" + }, + { + "label": "Exception", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_exception", + "community": 11, + "norm_label": "exception" + }, + { + "label": ".resolveTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L85", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", + "community": 11, + "norm_label": ".resolvetenant()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_string", + "community": 11, + "norm_label": "string" + }, + { + "label": "TenantRoutingDataSource.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource", + "community": 72, + "norm_label": "tenantroutingdatasource.java" + }, + { + "label": "TenantRoutingDataSource", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "community": 72, + "norm_label": "tenantroutingdatasource" + }, + { + "label": "AbstractRoutingDataSource", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "abstractroutingdatasource", + "community": 72, + "norm_label": "abstractroutingdatasource" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_logger", + "community": 72, + "norm_label": "logger" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_map", + "community": 72, + "norm_label": "map" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_string", + "community": 72, + "norm_label": "string" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_object", + "community": 72, + "norm_label": "object" + }, + { + "label": ".TenantRoutingDataSource()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_tenantroutingdatasource", + "community": 72, + "norm_label": ".tenantroutingdatasource()" + }, + { + "label": ".determineCurrentLookupKey()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", + "community": 72, + "norm_label": ".determinecurrentlookupkey()" + }, + { + "label": "Override", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_override", + "community": 72, + "norm_label": "override" + }, + { + "label": ".addTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", + "community": 47, + "norm_label": ".addtenant()" + }, + { + "label": ".removeTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", + "community": 72, + "norm_label": ".removetenant()" + }, + { + "label": ".testConnection()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", + "community": 72, + "norm_label": ".testconnection()" + }, + { + "label": ".testExternalConnection()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L103", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", + "community": 47, + "norm_label": ".testexternalconnection()" + }, + { + "label": ".getTenantConfigs()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L123", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", + "community": 72, + "norm_label": ".gettenantconfigs()" + }, + { + "label": ".hasTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L127", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant", + "community": 51, + "norm_label": ".hastenant()" + }, + { + "label": ".isInitialized()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L131", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_isinitialized", + "community": 72, + "norm_label": ".isinitialized()" + }, + { + "label": ".createDataSource()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L135", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "community": 47, + "norm_label": ".createdatasource()" + }, + { + "label": "HikariDataSource", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "hikaridatasource", + "community": 47, + "norm_label": "hikaridatasource" + }, + { + "label": "TenantWebMvcConfig.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig", + "community": 11, + "norm_label": "tenantwebmvcconfig.java" + }, + { + "label": "TenantWebMvcConfig", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "community": 11, + "norm_label": "tenantwebmvcconfig" + }, + { + "label": "WebMvcConfigurer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "webmvcconfigurer", + "community": 11, + "norm_label": "webmvcconfigurer" + }, + { + "label": "Configuration", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java_configuration", + "community": 11, + "norm_label": "configuration" + }, + { + "label": ".TenantWebMvcConfig()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantwebmvcconfig", + "community": 11, + "norm_label": ".tenantwebmvcconfig()" + }, + { + "label": ".tenantInterceptor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", + "community": 11, + "norm_label": ".tenantinterceptor()" + }, + { + "label": "Bean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java_bean", + "community": 11, + "norm_label": "bean" + }, + { + "label": ".addInterceptors()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", + "community": 11, + "norm_label": ".addinterceptors()" + }, + { + "label": "InterceptorRegistry", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "interceptorregistry", + "community": 11, + "norm_label": "interceptorregistry" + }, + { + "label": "Override", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java_override", + "community": 11, + "norm_label": "override" + }, + { + "label": "AcademicCalendarAdminController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller", + "community": 15, + "norm_label": "academiccalendaradmincontroller.java" + }, + { + "label": "AcademicCalendarAdminController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "community": 15, + "norm_label": "academiccalendaradmincontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_restcontroller", + "community": 15, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_requestmapping", + "community": 15, + "norm_label": "requestmapping" + }, + { + "label": ".AcademicCalendarAdminController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "community": 95, + "norm_label": ".academiccalendaradmincontroller()" + }, + { + "label": ".getYears()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", + "community": 91, + "norm_label": ".getyears()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_list", + "community": 91, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_getmapping", + "community": 91, + "norm_label": "getmapping" + }, + { + "label": ".createYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "community": 15, + "norm_label": ".createyear()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "community": 15, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_postmapping", + "community": 15, + "norm_label": "postmapping" + }, + { + "label": ".updateYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L61", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "community": 15, + "norm_label": ".updateyear()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_long", + "community": 15, + "norm_label": "long" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_putmapping", + "community": 15, + "norm_label": "putmapping" + }, + { + "label": ".deleteYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L78", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", + "community": 15, + "norm_label": ".deleteyear()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_deletemapping", + "community": 15, + "norm_label": "deletemapping" + }, + { + "label": ".getSemesters()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", + "community": 91, + "norm_label": ".getsemesters()" + }, + { + "label": ".createSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L95", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "community": 15, + "norm_label": ".createsemester()" + }, + { + "label": ".updateSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L116", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "community": 15, + "norm_label": ".updatesemester()" + }, + { + "label": ".getActivityTypes()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L132", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", + "community": 91, + "norm_label": ".getactivitytypes()" + }, + { + "label": ".createActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L139", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "community": 15, + "norm_label": ".createactivitytype()" + }, + { + "label": ".updateActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L154", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "community": 15, + "norm_label": ".updateactivitytype()" + }, + { + "label": ".deleteActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L175", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", + "community": 15, + "norm_label": ".deleteactivitytype()" + }, + { + "label": ".validateYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L188", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", + "community": 15, + "norm_label": ".validateyear()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_string", + "community": 15, + "norm_label": "string" + }, + { + "label": ".validateSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L201", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", + "community": 15, + "norm_label": ".validatesemester()" + }, + { + "label": ".validateActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L214", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", + "community": 15, + "norm_label": ".validateactivitytype()" + }, + { + "label": ".applyYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L227", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", + "community": 15, + "norm_label": ".applyyear()" + }, + { + "label": ".applySemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L233", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", + "community": 15, + "norm_label": ".applysemester()" + }, + { + "label": ".applyActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L239", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "community": 40, + "norm_label": ".applyactivitytype()" + }, + { + "label": ".toAcademicYearDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L252", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", + "community": 15, + "norm_label": ".toacademicyeardto()" + }, + { + "label": ".toSemesterDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L260", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", + "community": 15, + "norm_label": ".tosemesterdto()" + }, + { + "label": ".toActivityTypeDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L271", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", + "community": 40, + "norm_label": ".toactivitytypedto()" + }, + { + "label": "AcademicCalendarController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller", + "community": 19, + "norm_label": "academiccalendarcontroller.java" + }, + { + "label": "AcademicCalendarController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "community": 19, + "norm_label": "academiccalendarcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_restcontroller", + "community": 19, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_requestmapping", + "community": 19, + "norm_label": "requestmapping" + }, + { + "label": ".AcademicCalendarController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "community": 95, + "norm_label": ".academiccalendarcontroller()" + }, + { + "label": ".getCalendars()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L57", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", + "community": 19, + "norm_label": ".getcalendars()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "community": 19, + "norm_label": "long" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_list", + "community": 19, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_getmapping", + "community": 19, + "norm_label": "getmapping" + }, + { + "label": ".getCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", + "community": 19, + "norm_label": ".getcalendar()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "community": 19, + "norm_label": "responseentity" + }, + { + "label": ".createCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L73", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "community": 19, + "norm_label": ".createcalendar()" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_postmapping", + "community": 19, + "norm_label": "postmapping" + }, + { + "label": ".updateCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L85", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "community": 19, + "norm_label": ".updatecalendar()" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_putmapping", + "community": 19, + "norm_label": "putmapping" + }, + { + "label": ".deleteCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L100", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", + "community": 19, + "norm_label": ".deletecalendar()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_deletemapping", + "community": 19, + "norm_label": "deletemapping" + }, + { + "label": ".getGrid()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L115", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", + "community": 19, + "norm_label": ".getgrid()" + }, + { + "label": ".saveGrid()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L125", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "community": 19, + "norm_label": ".savegrid()" + }, + { + "label": "Transactional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_transactional", + "community": 19, + "norm_label": "transactional" + }, + { + "label": ".getSubjects()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L149", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", + "community": 19, + "norm_label": ".getsubjects()" + }, + { + "label": ".saveSubjects()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L159", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "community": 19, + "norm_label": ".savesubjects()" + }, + { + "label": ".applyCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L178", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "community": 19, + "norm_label": ".applycalendar()" + }, + { + "label": ".buildGridDay()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L216", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "community": 49, + "norm_label": ".buildgridday()" + }, + { + "label": ".resolveActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L242", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", + "community": 102, + "norm_label": ".resolveactivitytype()" + }, + { + "label": ".replaceCalendarSubjects()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L254", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "community": 19, + "norm_label": ".replacecalendarsubjects()" + }, + { + "label": ".toCalendarDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L301", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "community": 19, + "norm_label": ".tocalendardto()" + }, + { + "label": ".toGridDayDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L324", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", + "community": 102, + "norm_label": ".togriddaydto()" + }, + { + "label": ".toCalendarSubjectDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L340", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", + "community": 20, + "norm_label": ".tocalendarsubjectdto()" + }, + { + "label": "AuthController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "community": 23, + "norm_label": "authcontroller.java" + }, + { + "label": "AuthController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "community": 23, + "norm_label": "authcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_restcontroller", + "community": 23, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_requestmapping", + "community": 23, + "norm_label": "requestmapping" + }, + { + "label": "BCryptPasswordEncoder", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_bcryptpasswordencoder", + "community": 23, + "norm_label": "bcryptpasswordencoder" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_map", + "community": 23, + "norm_label": "map" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_string", + "community": 23, + "norm_label": "string" + }, + { + "label": ".AuthController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L45", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", + "community": 23, + "norm_label": ".authcontroller()" + }, + { + "label": ".login()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L57", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "community": 23, + "norm_label": ".login()" + }, + { + "label": "HttpServletRequest", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_httpservletrequest", + "community": 23, + "norm_label": "httpservletrequest" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_responseentity", + "community": 23, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_postmapping", + "community": 23, + "norm_label": "postmapping" + }, + { + "label": ".refresh()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "community": 23, + "norm_label": ".refresh()" + }, + { + "label": ".logout()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L112", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "community": 23, + "norm_label": ".logout()" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_object", + "community": 23, + "norm_label": "object" + }, + { + "label": ".me()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L122", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", + "community": 23, + "norm_label": ".me()" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_getmapping", + "community": 23, + "norm_label": "getmapping" + }, + { + "label": ".loginResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L136", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", + "community": 23, + "norm_label": ".loginresponse()" + }, + { + "label": ".unauthorized()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L149", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", + "community": 23, + "norm_label": ".unauthorized()" + }, + { + "label": ".unauthorizedWithClearedCookie()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L155", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", + "community": 23, + "norm_label": ".unauthorizedwithclearedcookie()" + }, + { + "label": ".refreshCookie()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L162", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "community": 23, + "norm_label": ".refreshcookie()" + }, + { + "label": "ResponseCookie", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "responsecookie", + "community": 23, + "norm_label": "responsecookie" + }, + { + "label": ".clearRefreshCookie()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L172", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", + "community": 23, + "norm_label": ".clearrefreshcookie()" + }, + { + "label": ".refreshCookieValue()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L182", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "community": 23, + "norm_label": ".refreshcookievalue()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_optional", + "community": 23, + "norm_label": "optional" + }, + { + "label": ".clientIp()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L195", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", + "community": 23, + "norm_label": ".clientip()" + }, + { + "label": "ClassroomController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "community": 26, + "norm_label": "classroomcontroller.java" + }, + { + "label": "ClassroomController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "community": 26, + "norm_label": "classroomcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_restcontroller", + "community": 26, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_requestmapping", + "community": 26, + "norm_label": "requestmapping" + }, + { + "label": ".ClassroomController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_classroomcontroller", + "community": 26, + "norm_label": ".classroomcontroller()" + }, + { + "label": ".getAllClassrooms()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", + "community": 26, + "norm_label": ".getallclassrooms()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_list", + "community": 26, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_getmapping", + "community": 26, + "norm_label": "getmapping" + }, + { + "label": ".createClassroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "community": 86, + "norm_label": ".createclassroom()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_responseentity", + "community": 86, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_postmapping", + "community": 86, + "norm_label": "postmapping" + }, + { + "label": ".updateClassroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L73", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "community": 86, + "norm_label": ".updateclassroom()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_long", + "community": 86, + "norm_label": "long" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_putmapping", + "community": 86, + "norm_label": "putmapping" + }, + { + "label": ".deleteClassroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L119", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", + "community": 86, + "norm_label": ".deleteclassroom()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_deletemapping", + "community": 86, + "norm_label": "deletemapping" + }, + { + "label": ".restoreClassroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L132", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", + "community": 86, + "norm_label": ".restoreclassroom()" + }, + { + "label": ".mapToResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L145", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", + "community": 86, + "norm_label": ".maptoresponse()" + }, + { + "label": ".cleanText()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L151", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", + "community": 86, + "norm_label": ".cleantext()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_string", + "community": 86, + "norm_label": "string" + }, + { + "label": "DatabaseController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "community": 51, + "norm_label": "databasecontroller.java" + }, + { + "label": "DatabaseController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "community": 51, + "norm_label": "databasecontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_restcontroller", + "community": 51, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_requestmapping", + "community": 51, + "norm_label": "requestmapping" + }, + { + "label": ".DatabaseController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", + "community": 81, + "norm_label": ".databasecontroller()" + }, + { + "label": ".getStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "community": 51, + "norm_label": ".getstatus()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_responseentity", + "community": 51, + "norm_label": "responseentity" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_map", + "community": 51, + "norm_label": "map" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_string", + "community": 51, + "norm_label": "string" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_object", + "community": 51, + "norm_label": "object" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_getmapping", + "community": 51, + "norm_label": "getmapping" + }, + { + "label": ".getTenants()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L68", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "community": 51, + "norm_label": ".gettenants()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_list", + "community": 51, + "norm_label": "list" + }, + { + "label": ".addTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "community": 51, + "norm_label": ".addtenant()" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_postmapping", + "community": 51, + "norm_label": "postmapping" + }, + { + "label": ".removeTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L131", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "community": 51, + "norm_label": ".removetenant()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_deletemapping", + "community": 51, + "norm_label": "deletemapping" + }, + { + "label": ".testConnection()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L152", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "community": 51, + "norm_label": ".testconnection()" + }, + { + "label": ".persistToConfigMap()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L177", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", + "community": 51, + "norm_label": ".persisttoconfigmap()" + }, + { + "label": "DepartmentController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "community": 24, + "norm_label": "departmentcontroller.java" + }, + { + "label": "DepartmentController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "community": 24, + "norm_label": "departmentcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_restcontroller", + "community": 24, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_requestmapping", + "community": 24, + "norm_label": "requestmapping" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_logger", + "community": 24, + "norm_label": "logger" + }, + { + "label": ".DepartmentController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_departmentcontroller", + "community": 24, + "norm_label": ".departmentcontroller()" + }, + { + "label": ".getAllDepartments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", + "community": 24, + "norm_label": ".getalldepartments()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_list", + "community": 24, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_getmapping", + "community": 24, + "norm_label": "getmapping" + }, + { + "label": ".createDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "community": 45, + "norm_label": ".createdepartment()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_responseentity", + "community": 45, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_postmapping", + "community": 45, + "norm_label": "postmapping" + }, + { + "label": ".updateDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L102", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "community": 45, + "norm_label": ".updatedepartment()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_long", + "community": 45, + "norm_label": "long" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_putmapping", + "community": 45, + "norm_label": "putmapping" + }, + { + "label": ".deleteDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L157", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", + "community": 45, + "norm_label": ".deletedepartment()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_deletemapping", + "community": 45, + "norm_label": "deletemapping" + }, + { + "label": ".restoreDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L171", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", + "community": 45, + "norm_label": ".restoredepartment()" + }, + { + "label": "DepartmentWorkspaceController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "community": 22, + "norm_label": "departmentworkspacecontroller.java" + }, + { + "label": "DepartmentWorkspaceController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "community": 22, + "norm_label": "departmentworkspacecontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_restcontroller", + "community": 22, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_requestmapping", + "community": 22, + "norm_label": "requestmapping" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "community": 22, + "norm_label": "long" + }, + { + "label": ".DepartmentWorkspaceController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "community": 7, + "norm_label": ".departmentworkspacecontroller()" + }, + { + "label": ".getSubjects()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L60", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", + "community": 22, + "norm_label": ".getsubjects()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_list", + "community": 22, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_getmapping", + "community": 22, + "norm_label": "getmapping" + }, + { + "label": ".importSubjects()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", + "community": 22, + "norm_label": ".importsubjects()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_responseentity", + "community": 22, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_postmapping", + "community": 22, + "norm_label": "postmapping" + }, + { + "label": ".getComments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L99", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", + "community": 22, + "norm_label": ".getcomments()" + }, + { + "label": ".addComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L110", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "community": 22, + "norm_label": ".addcomment()" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_map", + "community": 22, + "norm_label": "map" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_string", + "community": 22, + "norm_label": "string" + }, + { + "label": ".getTeachers()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L130", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "community": 22, + "norm_label": ".getteachers()" + }, + { + "label": ".addTeacherToDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "community": 22, + "norm_label": ".addteachertodepartment()" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_object", + "community": 22, + "norm_label": "object" + }, + { + "label": "Transactional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_transactional", + "community": 22, + "norm_label": "transactional" + }, + { + "label": ".getTeacherRequests()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L187", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "community": 22, + "norm_label": ".getteacherrequests()" + }, + { + "label": ".createTeacherRequest()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L200", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "community": 22, + "norm_label": ".createteacherrequest()" + }, + { + "label": ".getSchedule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L237", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", + "community": 22, + "norm_label": ".getschedule()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_localdate", + "community": 22, + "norm_label": "localdate" + }, + { + "label": ".toCommentDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L248", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", + "community": 4, + "norm_label": ".tocommentdto()" + }, + { + "label": ".toUserResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L260", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", + "community": 57, + "norm_label": ".touserresponse()" + }, + { + "label": ".toTeacherCreationRequestResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L273", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "community": 2, + "norm_label": ".toteachercreationrequestresponse()" + }, + { + "label": ".toAssignmentMap()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L293", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", + "community": 22, + "norm_label": ".toassignmentmap()" + }, + { + "label": ".asLong()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L305", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", + "community": 22, + "norm_label": ".aslong()" + }, + { + "label": ".trimToNull()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L319", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", + "community": 22, + "norm_label": ".trimtonull()" + }, + { + "label": ".effectiveDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L327", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "community": 22, + "norm_label": ".effectivedepartmentid()" + }, + { + "label": ".canAccessDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L335", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", + "community": 22, + "norm_label": ".canaccessdepartment()" + }, + { + "label": "EducationFormController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "community": 29, + "norm_label": "educationformcontroller.java" + }, + { + "label": "EducationFormController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "community": 29, + "norm_label": "educationformcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_restcontroller", + "community": 29, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_requestmapping", + "community": 29, + "norm_label": "requestmapping" + }, + { + "label": ".EducationFormController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L25", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", + "community": 29, + "norm_label": ".educationformcontroller()" + }, + { + "label": ".getAll()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "community": 29, + "norm_label": ".getall()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_list", + "community": 29, + "norm_label": "list" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_map", + "community": 29, + "norm_label": "map" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_string", + "community": 29, + "norm_label": "string" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_object", + "community": 29, + "norm_label": "object" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_getmapping", + "community": 29, + "norm_label": "getmapping" + }, + { + "label": ".create()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", + "community": 29, + "norm_label": ".create()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_responseentity", + "community": 29, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_postmapping", + "community": 29, + "norm_label": "postmapping" + }, + { + "label": ".delete()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", + "community": 29, + "norm_label": ".delete()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_long", + "community": 29, + "norm_label": "long" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_deletemapping", + "community": 29, + "norm_label": "deletemapping" + }, + { + "label": "EquipmentController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "community": 26, + "norm_label": "equipmentcontroller.java" + }, + { + "label": "EquipmentController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "community": 26, + "norm_label": "equipmentcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_restcontroller", + "community": 26, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_requestmapping", + "community": 26, + "norm_label": "requestmapping" + }, + { + "label": ".EquipmentController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_equipmentcontroller", + "community": 26, + "norm_label": ".equipmentcontroller()" + }, + { + "label": ".getAllEquipments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L25", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", + "community": 26, + "norm_label": ".getallequipments()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_list", + "community": 26, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_getmapping", + "community": 26, + "norm_label": "getmapping" + }, + { + "label": ".createEquipment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L30", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", + "community": 0, + "norm_label": ".createequipment()" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_map", + "community": 0, + "norm_label": "map" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_string", + "community": 0, + "norm_label": "string" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_responseentity", + "community": 0, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_postmapping", + "community": 0, + "norm_label": "postmapping" + }, + { + "label": ".deleteEquipment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", + "community": 0, + "norm_label": ".deleteequipment()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_long", + "community": 0, + "norm_label": "long" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_deletemapping", + "community": 0, + "norm_label": "deletemapping" + }, + { + "label": ".restoreEquipment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", + "community": 0, + "norm_label": ".restoreequipment()" + }, + { + "label": "GlobalExceptionHandler.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "community": 48, + "norm_label": "globalexceptionhandler.java" + }, + { + "label": "GlobalExceptionHandler", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "community": 48, + "norm_label": "globalexceptionhandler" + }, + { + "label": "RestControllerAdvice", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "restcontrolleradvice", + "community": 48, + "norm_label": "restcontrolleradvice" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_logger", + "community": 48, + "norm_label": "logger" + }, + { + "label": ".handleIllegalArgument()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "community": 48, + "norm_label": ".handleillegalargument()" + }, + { + "label": "IllegalArgumentException", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "illegalargumentexception", + "community": 13, + "norm_label": "illegalargumentexception" + }, + { + "label": "HttpServletRequest", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_httpservletrequest", + "community": 48, + "norm_label": "httpservletrequest" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_responseentity", + "community": 48, + "norm_label": "responseentity" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_map", + "community": 48, + "norm_label": "map" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_string", + "community": 48, + "norm_label": "string" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_object", + "community": 48, + "norm_label": "object" + }, + { + "label": "ExceptionHandler", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "exceptionhandler", + "community": 48, + "norm_label": "exceptionhandler" + }, + { + "label": ".handleNotFound()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "community": 48, + "norm_label": ".handlenotfound()" + }, + { + "label": "NoSuchElementException", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "nosuchelementexception", + "community": 48, + "norm_label": "nosuchelementexception" + }, + { + "label": ".handleBadRequest()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "community": 48, + "norm_label": ".handlebadrequest()" + }, + { + "label": "Exception", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_exception", + "community": 48, + "norm_label": "exception" + }, + { + "label": ".handleUnexpected()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "community": 48, + "norm_label": ".handleunexpected()" + }, + { + "label": ".error()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "community": 48, + "norm_label": ".error()" + }, + { + "label": "HttpStatus", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "httpstatus", + "community": 48, + "norm_label": "httpstatus" + }, + { + "label": ".reason()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L68", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", + "community": 48, + "norm_label": ".reason()" + }, + { + "label": "GroupController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "community": 92, + "norm_label": "groupcontroller.java" + }, + { + "label": "GroupController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "community": 25, + "norm_label": "groupcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_restcontroller", + "community": 25, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_requestmapping", + "community": 25, + "norm_label": "requestmapping" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_logger", + "community": 92, + "norm_label": "logger" + }, + { + "label": ".GroupController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "community": 25, + "norm_label": ".groupcontroller()" + }, + { + "label": ".getAllGroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L77", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", + "community": 25, + "norm_label": ".getallgroups()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_list", + "community": 25, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_getmapping", + "community": 25, + "norm_label": "getmapping" + }, + { + "label": ".getGroupsByDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L99", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", + "community": 25, + "norm_label": ".getgroupsbydepartmentid()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "community": 25, + "norm_label": "long" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "community": 25, + "norm_label": "responseentity" + }, + { + "label": ".createGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L127", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "community": 25, + "norm_label": ".creategroup()" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_postmapping", + "community": 25, + "norm_label": "postmapping" + }, + { + "label": ".updateGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L173", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "community": 25, + "norm_label": ".updategroup()" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_putmapping", + "community": 25, + "norm_label": "putmapping" + }, + { + "label": ".deleteGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L223", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", + "community": 25, + "norm_label": ".deletegroup()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_deletemapping", + "community": 25, + "norm_label": "deletemapping" + }, + { + "label": ".restoreGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L238", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", + "community": 25, + "norm_label": ".restoregroup()" + }, + { + "label": ".validateGroupRequest()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L250", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", + "community": 25, + "norm_label": ".validategrouprequest()" + }, + { + "label": ".validationError()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L275", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", + "community": 25, + "norm_label": ".validationerror()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_string", + "community": 25, + "norm_label": "string" + }, + { + "label": ".mapToResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L280", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "community": 58, + "norm_label": ".maptoresponse()" + }, + { + "label": ".getCalendarAssignments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L309", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "community": 25, + "norm_label": ".getcalendarassignments()" + }, + { + "label": ".saveCalendarAssignment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L322", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "community": 25, + "norm_label": ".savecalendarassignment()" + }, + { + "label": ".deleteCalendarAssignment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L368", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", + "community": 25, + "norm_label": ".deletecalendarassignment()" + }, + { + "label": ".loadCalendarSubjectsByCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L380", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "community": 25, + "norm_label": ".loadcalendarsubjectsbycalendar()" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_map", + "community": 25, + "norm_label": "map" + }, + { + "label": ".toAssignmentDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L395", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "community": 25, + "norm_label": ".toassignmentdto()" + }, + { + "label": ".toCalendarSubjectDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L417", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", + "community": 20, + "norm_label": ".tocalendarsubjectdto()" + }, + { + "label": "LessonTypeController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "community": 16, + "norm_label": "lessontypecontroller.java" + }, + { + "label": "LessonTypeController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", + "community": 16, + "norm_label": "lessontypecontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_restcontroller", + "community": 16, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_requestmapping", + "community": 16, + "norm_label": "requestmapping" + }, + { + "label": ".LessonTypeController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_lessontypecontroller", + "community": 16, + "norm_label": ".lessontypecontroller()" + }, + { + "label": ".getAllLessonTypes()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", + "community": 16, + "norm_label": ".getalllessontypes()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_list", + "community": 16, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_getmapping", + "community": 16, + "norm_label": "getmapping" + }, + { + "label": "ScheduleController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "community": 1, + "norm_label": "schedulecontroller.java" + }, + { + "label": "ScheduleController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "community": 1, + "norm_label": "schedulecontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_restcontroller", + "community": 1, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_requestmapping", + "community": 1, + "norm_label": "requestmapping" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_logger", + "community": 1, + "norm_label": "logger" + }, + { + "label": ".ScheduleController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L25", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_schedulecontroller", + "community": 1, + "norm_label": ".schedulecontroller()" + }, + { + "label": ".getSchedule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", + "community": 1, + "norm_label": ".getschedule()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_long", + "community": 1, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_localdate", + "community": 1, + "norm_label": "localdate" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_responseentity", + "community": 1, + "norm_label": "responseentity" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_getmapping", + "community": 1, + "norm_label": "getmapping" + }, + { + "label": "ScheduleOverrideController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller", + "community": 0, + "norm_label": "scheduleoverridecontroller.java" + }, + { + "label": "ScheduleOverrideController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "community": 0, + "norm_label": "scheduleoverridecontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_restcontroller", + "community": 0, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_requestmapping", + "community": 0, + "norm_label": "requestmapping" + }, + { + "label": ".ScheduleOverrideController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", + "community": 7, + "norm_label": ".scheduleoverridecontroller()" + }, + { + "label": ".getAll()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", + "community": 0, + "norm_label": ".getall()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_list", + "community": 0, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_getmapping", + "community": 0, + "norm_label": "getmapping" + }, + { + "label": ".create()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L48", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", + "community": 0, + "norm_label": ".create()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_responseentity", + "community": 0, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_postmapping", + "community": 0, + "norm_label": "postmapping" + }, + { + "label": ".update()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", + "community": 0, + "norm_label": ".update()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_long", + "community": 0, + "norm_label": "long" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_putmapping", + "community": 0, + "norm_label": "putmapping" + }, + { + "label": ".delete()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L61", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", + "community": 0, + "norm_label": ".delete()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_deletemapping", + "community": 0, + "norm_label": "deletemapping" + }, + { + "label": ".save()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "community": 0, + "norm_label": ".save()" + }, + { + "label": ".validate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L98", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", + "community": 0, + "norm_label": ".validate()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_string", + "community": 0, + "norm_label": "string" + }, + { + "label": ".toDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L129", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "community": 0, + "norm_label": ".todto()" + }, + { + "label": ".clean()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L145", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", + "community": 0, + "norm_label": ".clean()" + }, + { + "label": "ScheduleRuleAdminController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "community": 50, + "norm_label": "scheduleruleadmincontroller.java" + }, + { + "label": "ScheduleRuleAdminController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "community": 3, + "norm_label": "scheduleruleadmincontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_restcontroller", + "community": 3, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_requestmapping", + "community": 3, + "norm_label": "requestmapping" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "community": 3, + "norm_label": "string" + }, + { + "label": "Set", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "community": 3, + "norm_label": "set" + }, + { + "label": ".ScheduleRuleAdminController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "community": 7, + "norm_label": ".scheduleruleadmincontroller()" + }, + { + "label": ".getAll()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L64", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", + "community": 6, + "norm_label": ".getall()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "community": 3, + "norm_label": "long" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_list", + "community": 6, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_getmapping", + "community": 6, + "norm_label": "getmapping" + }, + { + "label": ".getById()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L74", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", + "community": 6, + "norm_label": ".getbyid()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_responseentity", + "community": 50, + "norm_label": "responseentity" + }, + { + "label": ".create()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L81", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "community": 50, + "norm_label": ".create()" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_postmapping", + "community": 50, + "norm_label": "postmapping" + }, + { + "label": "Transactional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_transactional", + "community": 50, + "norm_label": "transactional" + }, + { + "label": ".update()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L104", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "community": 50, + "norm_label": ".update()" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_putmapping", + "community": 50, + "norm_label": "putmapping" + }, + { + "label": ".delete()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L133", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", + "community": 50, + "norm_label": ".delete()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_deletemapping", + "community": 50, + "norm_label": "deletemapping" + }, + { + "label": ".validateRule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L145", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", + "community": 50, + "norm_label": ".validaterule()" + }, + { + "label": ".applyRule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L165", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "community": 6, + "norm_label": ".applyrule()" + }, + { + "label": ".conflictResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L202", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", + "community": 50, + "norm_label": ".conflictresponse()" + }, + { + "label": ".conflictFieldLabel()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L211", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfieldlabel", + "community": 3, + "norm_label": ".conflictfieldlabel()" + }, + { + "label": ".findConflict()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L220", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "community": 50, + "norm_label": ".findconflict()" + }, + { + "label": "Collection", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_collection", + "community": 3, + "norm_label": "collection" + }, + { + "label": ".toConflict()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "community": 3, + "norm_label": ".toconflict()" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_map", + "community": 3, + "norm_label": "map" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "community": 3, + "norm_label": "integer" + }, + { + "label": ".conflictFields()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L248", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "community": 3, + "norm_label": ".conflictfields()" + }, + { + "label": ".sameTimeSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L262", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", + "community": 3, + "norm_label": ".sametimeslot()" + }, + { + "label": ".teacherId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L268", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", + "community": 3, + "norm_label": ".teacherid()" + }, + { + "label": ".classroomId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L272", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", + "community": 3, + "norm_label": ".classroomid()" + }, + { + "label": ".timeSlotId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L276", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", + "community": 3, + "norm_label": ".timeslotid()" + }, + { + "label": ".parityOverlaps()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L280", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", + "community": 87, + "norm_label": ".parityoverlaps()" + }, + { + "label": ".sameAudience()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L287", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", + "community": 3, + "norm_label": ".sameaudience()" + }, + { + "label": ".groupIds()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L306", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "community": 3, + "norm_label": ".groupids()" + }, + { + "label": ".slotAppliesToWholeGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L317", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", + "community": 3, + "norm_label": ".slotappliestowholegroup()" + }, + { + "label": ".subgroupIdsForGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L321", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "community": 3, + "norm_label": ".subgroupidsforgroup()" + }, + { + "label": ".activeWeeksBySlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L332", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "community": 3, + "norm_label": ".activeweeksbyslot()" + }, + { + "label": ".activeWeeksOverlap()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L381", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", + "community": 3, + "norm_label": ".activeweeksoverlap()" + }, + { + "label": ".maxWeeksForRule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L390", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", + "community": 3, + "norm_label": ".maxweeksforrule()" + }, + { + "label": ".compareSlotsForGeneration()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L399", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", + "community": 3, + "norm_label": ".compareslotsforgeneration()" + }, + { + "label": ".slotAppliesToWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L417", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", + "community": 3, + "norm_label": ".slotappliestoweek()" + }, + { + "label": ".consumptionScopes()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L426", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "community": 3, + "norm_label": ".consumptionscopes()" + }, + { + "label": ".buildSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L440", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "community": 3, + "norm_label": ".buildslot()" + }, + { + "label": ".resolveSubgroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L484", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "community": 87, + "norm_label": ".resolvesubgroups()" + }, + { + "label": ".validateTypeHours()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L524", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "community": 3, + "norm_label": ".validatetypehours()" + }, + { + "label": ".validateTypeCoverage()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L549", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "community": 6, + "norm_label": ".validatetypecoverage()" + }, + { + "label": ".isMissing()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L567", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_ismissing", + "community": 3, + "norm_label": ".ismissing()" + }, + { + "label": ".isNegative()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L571", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isnegative", + "community": 3, + "norm_label": ".isnegative()" + }, + { + "label": ".isInvalidStartWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L575", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isinvalidstartweek", + "community": 3, + "norm_label": ".isinvalidstartweek()" + }, + { + "label": ".valueOrZero()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L579", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_valueorzero", + "community": 3, + "norm_label": ".valueorzero()" + }, + { + "label": ".toDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L583", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "community": 6, + "norm_label": ".todto()" + }, + { + "label": ".toSlotDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L614", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "community": 3, + "norm_label": ".toslotdto()" + }, + { + "label": ".dayName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L639", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", + "community": 3, + "norm_label": ".dayname()" + }, + { + "label": ".formatTimeSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L646", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", + "community": 52, + "norm_label": ".formattimeslot()" + }, + { + "label": ".formatSubgroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L650", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", + "community": 3, + "norm_label": ".formatsubgroup()" + }, + { + "label": ".sortedSubgroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L654", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", + "community": 3, + "norm_label": ".sortedsubgroups()" + }, + { + "label": "ScheduleRuleConflict", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L662", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", + "community": 50, + "norm_label": "scheduleruleconflict" + }, + { + "label": "LinkedHashSet", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_linkedhashset", + "community": 3, + "norm_label": "linkedhashset" + }, + { + "label": "ScheduleSearchController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller", + "community": 1, + "norm_label": "schedulesearchcontroller.java" + }, + { + "label": "ScheduleSearchController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "community": 1, + "norm_label": "schedulesearchcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_restcontroller", + "community": 1, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_requestmapping", + "community": 1, + "norm_label": "requestmapping" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_logger", + "community": 1, + "norm_label": "logger" + }, + { + "label": ".ScheduleSearchController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_schedulesearchcontroller", + "community": 1, + "norm_label": ".schedulesearchcontroller()" + }, + { + "label": ".search()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", + "community": 1, + "norm_label": ".search()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_long", + "community": 1, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_string", + "community": 1, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_localdate", + "community": 1, + "norm_label": "localdate" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_responseentity", + "community": 1, + "norm_label": "responseentity" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_getmapping", + "community": 1, + "norm_label": "getmapping" + }, + { + "label": "SpecialityController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "community": 21, + "norm_label": "specialitycontroller.java" + }, + { + "label": "SpecialityController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "community": 21, + "norm_label": "specialitycontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_restcontroller", + "community": 21, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_requestmapping", + "community": 21, + "norm_label": "requestmapping" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_logger", + "community": 21, + "norm_label": "logger" + }, + { + "label": ".SpecialityController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_specialitycontroller", + "community": 33, + "norm_label": ".specialitycontroller()" + }, + { + "label": ".getAllSpecialties()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", + "community": 21, + "norm_label": ".getallspecialties()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_list", + "community": 21, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_getmapping", + "community": 21, + "norm_label": "getmapping" + }, + { + "label": ".createSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L60", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "community": 36, + "norm_label": ".createspeciality()" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "community": 21, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_postmapping", + "community": 36, + "norm_label": "postmapping" + }, + { + "label": ".updateSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L111", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "community": 21, + "norm_label": ".updatespeciality()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "community": 21, + "norm_label": "long" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_putmapping", + "community": 21, + "norm_label": "putmapping" + }, + { + "label": ".deleteSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L167", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", + "community": 21, + "norm_label": ".deletespeciality()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_deletemapping", + "community": 21, + "norm_label": "deletemapping" + }, + { + "label": ".restoreSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L181", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", + "community": 21, + "norm_label": ".restorespeciality()" + }, + { + "label": ".getAllProfiles()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L196", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", + "community": 21, + "norm_label": ".getallprofiles()" + }, + { + "label": ".getProfiles()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L206", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", + "community": 21, + "norm_label": ".getprofiles()" + }, + { + "label": ".createProfile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L216", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "community": 21, + "norm_label": ".createprofile()" + }, + { + "label": ".updateProfile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L234", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "community": 21, + "norm_label": ".updateprofile()" + }, + { + "label": ".deleteProfile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L252", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", + "community": 21, + "norm_label": ".deleteprofile()" + }, + { + "label": ".validateProfile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L268", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "community": 21, + "norm_label": ".validateprofile()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_string", + "community": 21, + "norm_label": "string" + }, + { + "label": ".toProfileDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L281", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", + "community": 21, + "norm_label": ".toprofiledto()" + }, + { + "label": ".trimToNull()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L293", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", + "community": 21, + "norm_label": ".trimtonull()" + }, + { + "label": "SubgroupController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "community": 8, + "norm_label": "subgroupcontroller.java" + }, + { + "label": "SubgroupController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "community": 8, + "norm_label": "subgroupcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_restcontroller", + "community": 8, + "norm_label": "restcontroller" + }, + { + "label": ".SubgroupController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", + "community": 8, + "norm_label": ".subgroupcontroller()" + }, + { + "label": ".getAll()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", + "community": 8, + "norm_label": ".getall()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_list", + "community": 8, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_getmapping", + "community": 8, + "norm_label": "getmapping" + }, + { + "label": ".getByGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L45", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", + "community": 8, + "norm_label": ".getbygroup()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_long", + "community": 8, + "norm_label": "long" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_responseentity", + "community": 8, + "norm_label": "responseentity" + }, + { + "label": ".create()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "community": 8, + "norm_label": ".create()" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_postmapping", + "community": 8, + "norm_label": "postmapping" + }, + { + "label": ".update()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "community": 8, + "norm_label": ".update()" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_putmapping", + "community": 8, + "norm_label": "putmapping" + }, + { + "label": ".delete()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L114", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "community": 8, + "norm_label": ".delete()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_deletemapping", + "community": 8, + "norm_label": "deletemapping" + }, + { + "label": ".validate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L138", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", + "community": 8, + "norm_label": ".validate()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_string", + "community": 8, + "norm_label": "string" + }, + { + "label": ".validateGroupCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L151", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "community": 8, + "norm_label": ".validategroupcapacity()" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_integer", + "community": 8, + "norm_label": "integer" + }, + { + "label": ".validateDeleteKeepsCompleteSplit()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L162", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", + "community": 8, + "norm_label": ".validatedeletekeepscompletesplit()" + }, + { + "label": ".toDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L179", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", + "community": 8, + "norm_label": ".todto()" + }, + { + "label": "SubjectController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "community": 7, + "norm_label": "subjectcontroller.java" + }, + { + "label": "SubjectController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "community": 62, + "norm_label": "subjectcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_restcontroller", + "community": 62, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_requestmapping", + "community": 62, + "norm_label": "requestmapping" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_logger", + "community": 62, + "norm_label": "logger" + }, + { + "label": ".SubjectController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_subjectcontroller", + "community": 62, + "norm_label": ".subjectcontroller()" + }, + { + "label": ".getAllSubjects()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", + "community": 62, + "norm_label": ".getallsubjects()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_list", + "community": 62, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_getmapping", + "community": 62, + "norm_label": "getmapping" + }, + { + "label": ".getSubjectsByDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L57", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", + "community": 62, + "norm_label": ".getsubjectsbydepartmentid()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_long", + "community": 62, + "norm_label": "long" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_responseentity", + "community": 62, + "norm_label": "responseentity" + }, + { + "label": ".createSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "community": 62, + "norm_label": ".createsubject()" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_postmapping", + "community": 62, + "norm_label": "postmapping" + }, + { + "label": ".deleteSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L129", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", + "community": 62, + "norm_label": ".deletesubject()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_deletemapping", + "community": 62, + "norm_label": "deletemapping" + }, + { + "label": ".restoreSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L143", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", + "community": 62, + "norm_label": ".restoresubject()" + }, + { + "label": "TeacherCreationRequestController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "community": 2, + "norm_label": "teachercreationrequestcontroller.java" + }, + { + "label": "TeacherCreationRequestController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "community": 2, + "norm_label": "teachercreationrequestcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_restcontroller", + "community": 2, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_requestmapping", + "community": 2, + "norm_label": "requestmapping" + }, + { + "label": "BCryptPasswordEncoder", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_bcryptpasswordencoder", + "community": 2, + "norm_label": "bcryptpasswordencoder" + }, + { + "label": ".TeacherCreationRequestController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "community": 2, + "norm_label": ".teachercreationrequestcontroller()" + }, + { + "label": ".getRequests()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", + "community": 2, + "norm_label": ".getrequests()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_list", + "community": 2, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_getmapping", + "community": 2, + "norm_label": "getmapping" + }, + { + "label": ".approve()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L56", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "community": 2, + "norm_label": ".approve()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_long", + "community": 2, + "norm_label": "long" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_responseentity", + "community": 2, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_postmapping", + "community": 2, + "norm_label": "postmapping" + }, + { + "label": "Transactional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_transactional", + "community": 2, + "norm_label": "transactional" + }, + { + "label": ".reject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L124", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "community": 2, + "norm_label": ".reject()" + }, + { + "label": ".toResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L140", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "community": 2, + "norm_label": ".toresponse()" + }, + { + "label": ".toUserResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L160", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", + "community": 2, + "norm_label": ".touserresponse()" + }, + { + "label": ".firstNotBlank()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L174", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", + "community": 2, + "norm_label": ".firstnotblank()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_string", + "community": 2, + "norm_label": "string" + }, + { + "label": ".trimToNull()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L184", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", + "community": 2, + "norm_label": ".trimtonull()" + }, + { + "label": "TeacherSubjectController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "community": 7, + "norm_label": "teachersubjectcontroller.java" + }, + { + "label": "TeacherSubjectController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "community": 7, + "norm_label": "teachersubjectcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_restcontroller", + "community": 7, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_requestmapping", + "community": 7, + "norm_label": "requestmapping" + }, + { + "label": ".TeacherSubjectController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", + "community": 7, + "norm_label": ".teachersubjectcontroller()" + }, + { + "label": ".getAll()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", + "community": 7, + "norm_label": ".getall()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_list", + "community": 7, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_getmapping", + "community": 7, + "norm_label": "getmapping" + }, + { + "label": ".create()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "community": 7, + "norm_label": ".create()" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_map", + "community": 7, + "norm_label": "map" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_string", + "community": 7, + "norm_label": "string" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_long", + "community": 7, + "norm_label": "long" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_responseentity", + "community": 7, + "norm_label": "responseentity" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_postmapping", + "community": 7, + "norm_label": "postmapping" + }, + { + "label": ".delete()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L81", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "community": 7, + "norm_label": ".delete()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_deletemapping", + "community": 7, + "norm_label": "deletemapping" + }, + { + "label": ".canManage()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L102", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "community": 7, + "norm_label": ".canmanage()" + }, + { + "label": "TimeSlotAdminController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "community": 63, + "norm_label": "timeslotadmincontroller.java" + }, + { + "label": "TimeSlotAdminController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "community": 41, + "norm_label": "timeslotadmincontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_restcontroller", + "community": 41, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_requestmapping", + "community": 41, + "norm_label": "requestmapping" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_string", + "community": 41, + "norm_label": "string" + }, + { + "label": ".TimeSlotAdminController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", + "community": 42, + "norm_label": ".timeslotadmincontroller()" + }, + { + "label": ".getAll()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", + "community": 63, + "norm_label": ".getall()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_list", + "community": 63, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_getmapping", + "community": 63, + "norm_label": "getmapping" + }, + { + "label": ".getEffective()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", + "community": 63, + "norm_label": ".geteffective()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_localdate", + "community": 63, + "norm_label": "localdate" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "community": 41, + "norm_label": "responseentity" + }, + { + "label": ".getScopes()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", + "community": 63, + "norm_label": ".getscopes()" + }, + { + "label": ".createScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "community": 34, + "norm_label": ".createscope()" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_postmapping", + "community": 34, + "norm_label": "postmapping" + }, + { + "label": ".updateScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L82", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "community": 41, + "norm_label": ".updatescope()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_long", + "community": 41, + "norm_label": "long" + }, + { + "label": "PutMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_putmapping", + "community": 41, + "norm_label": "putmapping" + }, + { + "label": ".deleteScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L98", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", + "community": 41, + "norm_label": ".deletescope()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_deletemapping", + "community": 41, + "norm_label": "deletemapping" + }, + { + "label": ".getDateAssignments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L111", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", + "community": 63, + "norm_label": ".getdateassignments()" + }, + { + "label": ".saveDateAssignment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L120", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "community": 115, + "norm_label": ".savedateassignment()" + }, + { + "label": ".deleteDateAssignment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L143", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", + "community": 41, + "norm_label": ".deletedateassignment()" + }, + { + "label": ".create()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L152", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "community": 41, + "norm_label": ".create()" + }, + { + "label": ".update()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L167", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "community": 41, + "norm_label": ".update()" + }, + { + "label": ".delete()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L186", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", + "community": 41, + "norm_label": ".delete()" + }, + { + "label": ".validate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L199", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", + "community": 41, + "norm_label": ".validate()" + }, + { + "label": ".apply()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L215", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "community": 52, + "norm_label": ".apply()" + }, + { + "label": ".hasDuplicate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L227", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", + "community": 41, + "norm_label": ".hasduplicate()" + }, + { + "label": ".effectiveSlots()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L233", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "community": 63, + "norm_label": ".effectiveslots()" + }, + { + "label": ".effectiveScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L248", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", + "community": 63, + "norm_label": ".effectivescope()" + }, + { + "label": ".defaultScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L257", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", + "community": 73, + "norm_label": ".defaultscope()" + }, + { + "label": ".nextManualDisplayOrder()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L262", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", + "community": 73, + "norm_label": ".nextmanualdisplayorder()" + }, + { + "label": ".toDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L270", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "community": 52, + "norm_label": ".todto()" + }, + { + "label": ".toScopeDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L285", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", + "community": 41, + "norm_label": ".toscopedto()" + }, + { + "label": ".toAssignmentDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L297", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", + "community": 115, + "norm_label": ".toassignmentdto()" + }, + { + "label": "UserController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "community": 12, + "norm_label": "usercontroller.java" + }, + { + "label": "UserController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "community": 12, + "norm_label": "usercontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_restcontroller", + "community": 12, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_requestmapping", + "community": 12, + "norm_label": "requestmapping" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_logger", + "community": 12, + "norm_label": "logger" + }, + { + "label": "BCryptPasswordEncoder", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_bcryptpasswordencoder", + "community": 12, + "norm_label": "bcryptpasswordencoder" + }, + { + "label": ".UserController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", + "community": 12, + "norm_label": ".usercontroller()" + }, + { + "label": ".getAllUsers()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", + "community": 12, + "norm_label": ".getallusers()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_list", + "community": 12, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_getmapping", + "community": 12, + "norm_label": "getmapping" + }, + { + "label": ".getTeachers()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", + "community": 12, + "norm_label": ".getteachers()" + }, + { + "label": ".getTeachersByDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L77", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", + "community": 12, + "norm_label": ".getteachersbydepartmentid()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "community": 12, + "norm_label": "long" + }, + { + "label": "ResponseEntity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "community": 12, + "norm_label": "responseentity" + }, + { + "label": ".createUser()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L99", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "community": 12, + "norm_label": ".createuser()" + }, + { + "label": "PostMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_postmapping", + "community": 12, + "norm_label": "postmapping" + }, + { + "label": ".deleteUser()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L175", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", + "community": 12, + "norm_label": ".deleteuser()" + }, + { + "label": "DeleteMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_deletemapping", + "community": 12, + "norm_label": "deletemapping" + }, + { + "label": ".restoreUser()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L189", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", + "community": 12, + "norm_label": ".restoreuser()" + }, + { + "label": ".getDepartmentHistory()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L200", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "community": 17, + "norm_label": ".getdepartmenthistory()" + }, + { + "label": ".transferTeacher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L218", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "community": 12, + "norm_label": ".transferteacher()" + }, + { + "label": "Transactional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_transactional", + "community": 12, + "norm_label": "transactional" + }, + { + "label": ".getTeachersByDepartmentAtDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L262", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "community": 12, + "norm_label": ".getteachersbydepartmentatdate()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_localdate", + "community": 12, + "norm_label": "localdate" + }, + { + "label": ".toUserResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L277", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", + "community": 12, + "norm_label": ".touserresponse()" + }, + { + "label": ".toAssignmentDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L296", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", + "community": 12, + "norm_label": ".toassignmentdto()" + }, + { + "label": ".teachersForDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L310", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "community": 12, + "norm_label": ".teachersfordepartment()" + }, + { + "label": ".canAccessDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L327", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", + "community": 12, + "norm_label": ".canaccessdepartment()" + }, + { + "label": "WorkloadController.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "community": 1, + "norm_label": "workloadcontroller.java" + }, + { + "label": "WorkloadController", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "community": 1, + "norm_label": "workloadcontroller" + }, + { + "label": "RestController", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_restcontroller", + "community": 1, + "norm_label": "restcontroller" + }, + { + "label": "RequestMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_requestmapping", + "community": 1, + "norm_label": "requestmapping" + }, + { + "label": ".WorkloadController()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", + "community": 7, + "norm_label": ".workloadcontroller()" + }, + { + "label": ".teacherWorkload()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "community": 1, + "norm_label": ".teacherworkload()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_localdate", + "community": 1, + "norm_label": "localdate" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "community": 1, + "norm_label": "long" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_list", + "community": 1, + "norm_label": "list" + }, + { + "label": "GetMapping", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_getmapping", + "community": 1, + "norm_label": "getmapping" + }, + { + "label": ".classroomWorkload()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L64", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "community": 1, + "norm_label": ".classroomworkload()" + }, + { + "label": ".departmentWorkload()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "community": 1, + "norm_label": ".departmentworkload()" + }, + { + "label": ".timeSlotWorkload()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L104", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "community": 1, + "norm_label": ".timeslotworkload()" + }, + { + "label": ".freeClassrooms()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L119", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "community": 1, + "norm_label": ".freeclassrooms()" + }, + { + "label": ".summarize()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L137", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "community": 1, + "norm_label": ".summarize()" + }, + { + "label": "Function", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "function", + "community": 1, + "norm_label": "function" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_string", + "community": 1, + "norm_label": "string" + }, + { + "label": ".summary()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L150", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "community": 1, + "norm_label": ".summary()" + }, + { + "label": ".departmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L165", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", + "community": 1, + "norm_label": ".departmentname()" + }, + { + "label": ".toClassroomResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L174", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", + "community": 37, + "norm_label": ".toclassroomresponse()" + }, + { + "label": "AcademicCalendarActivityTypeDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto", + "community": 91, + "norm_label": "academiccalendaractivitytypedto.java" + }, + { + "label": "AcademicCalendarActivityTypeDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "community": 91, + "norm_label": "academiccalendaractivitytypedto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java_long", + "community": 91, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java_string", + "community": 91, + "norm_label": "string" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java_boolean", + "community": 91, + "norm_label": "boolean" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java_integer", + "community": 91, + "norm_label": "integer" + }, + { + "label": "AcademicCalendarDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendardto", + "community": 19, + "norm_label": "academiccalendardto.java" + }, + { + "label": "AcademicCalendarDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "community": 19, + "norm_label": "academiccalendardto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_long", + "community": 19, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_string", + "community": 19, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_localdate", + "community": 19, + "norm_label": "localdate" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_integer", + "community": 19, + "norm_label": "integer" + }, + { + "label": "AcademicCalendarGridDayDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto", + "community": 102, + "norm_label": "academiccalendargriddaydto.java" + }, + { + "label": "AcademicCalendarGridDayDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "community": 102, + "norm_label": "academiccalendargriddaydto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_long", + "community": 102, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_integer", + "community": 102, + "norm_label": "integer" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_localdate", + "community": 102, + "norm_label": "localdate" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_string", + "community": 102, + "norm_label": "string" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_boolean", + "community": 102, + "norm_label": "boolean" + }, + { + "label": "AcademicCalendarSubjectDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto", + "community": 20, + "norm_label": "academiccalendarsubjectdto.java" + }, + { + "label": "AcademicCalendarSubjectDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "community": 20, + "norm_label": "academiccalendarsubjectdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_java_long", + "community": 20, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_java_integer", + "community": 20, + "norm_label": "integer" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_java_string", + "community": 20, + "norm_label": "string" + }, + { + "label": "AcademicYearDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academicyeardto", + "community": 15, + "norm_label": "academicyeardto.java" + }, + { + "label": "AcademicYearDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L6", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "community": 15, + "norm_label": "academicyeardto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_long", + "community": 15, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_string", + "community": 15, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_localdate", + "community": 15, + "norm_label": "localdate" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_list", + "community": 15, + "norm_label": "list" + }, + { + "label": "ClassroomRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest", + "community": 53, + "norm_label": "classroomrequest.java" + }, + { + "label": "ClassroomRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "community": 53, + "norm_label": "classroomrequest" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_string", + "community": 53, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_integer", + "community": 53, + "norm_label": "integer" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_boolean", + "community": 53, + "norm_label": "boolean" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_list", + "community": 53, + "norm_label": "list" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_long", + "community": 53, + "norm_label": "long" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getname", + "community": 53, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setname", + "community": 53, + "norm_label": ".setname()" + }, + { + "label": ".getCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getcapacity", + "community": 53, + "norm_label": ".getcapacity()" + }, + { + "label": ".setCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L25", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setcapacity", + "community": 53, + "norm_label": ".setcapacity()" + }, + { + "label": ".getBuilding()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getbuilding", + "community": 53, + "norm_label": ".getbuilding()" + }, + { + "label": ".setBuilding()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setbuilding", + "community": 53, + "norm_label": ".setbuilding()" + }, + { + "label": ".getFloor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getfloor", + "community": 53, + "norm_label": ".getfloor()" + }, + { + "label": ".setFloor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setfloor", + "community": 53, + "norm_label": ".setfloor()" + }, + { + "label": ".getIsAvailable()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L45", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getisavailable", + "community": 53, + "norm_label": ".getisavailable()" + }, + { + "label": ".setIsAvailable()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L49", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setisavailable", + "community": 53, + "norm_label": ".setisavailable()" + }, + { + "label": ".getEquipmentIds()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids", + "community": 53, + "norm_label": ".getequipmentids()" + }, + { + "label": ".setEquipmentIds()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L57", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setequipmentids", + "community": 53, + "norm_label": ".setequipmentids()" + }, + { + "label": "ClassroomResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse", + "community": 30, + "norm_label": "classroomresponse.java" + }, + { + "label": "ClassroomResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "community": 30, + "norm_label": "classroomresponse" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_long", + "community": 30, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "community": 30, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_integer", + "community": 30, + "norm_label": "integer" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_boolean", + "community": 30, + "norm_label": "boolean" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_localdatetime", + "community": 30, + "norm_label": "localdatetime" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_list", + "community": 30, + "norm_label": "list" + }, + { + "label": ".ClassroomResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "community": 30, + "norm_label": ".classroomresponse()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getid", + "community": 30, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setid", + "community": 30, + "norm_label": ".setid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getname", + "community": 30, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setname", + "community": 30, + "norm_label": ".setname()" + }, + { + "label": ".getCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getcapacity", + "community": 30, + "norm_label": ".getcapacity()" + }, + { + "label": ".setCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setcapacity", + "community": 30, + "norm_label": ".setcapacity()" + }, + { + "label": ".getBuilding()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getbuilding", + "community": 30, + "norm_label": ".getbuilding()" + }, + { + "label": ".setBuilding()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L70", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setbuilding", + "community": 30, + "norm_label": ".setbuilding()" + }, + { + "label": ".getFloor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L74", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getfloor", + "community": 30, + "norm_label": ".getfloor()" + }, + { + "label": ".setFloor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L78", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setfloor", + "community": 30, + "norm_label": ".setfloor()" + }, + { + "label": ".getIsAvailable()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L82", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getisavailable", + "community": 30, + "norm_label": ".getisavailable()" + }, + { + "label": ".setIsAvailable()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L86", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setisavailable", + "community": 30, + "norm_label": ".setisavailable()" + }, + { + "label": ".getStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L90", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getstatus", + "community": 30, + "norm_label": ".getstatus()" + }, + { + "label": ".setStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L94", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setstatus", + "community": 30, + "norm_label": ".setstatus()" + }, + { + "label": ".getArchivedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L98", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivedat", + "community": 30, + "norm_label": ".getarchivedat()" + }, + { + "label": ".setArchivedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L102", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivedat", + "community": 30, + "norm_label": ".setarchivedat()" + }, + { + "label": ".getArchiveReason()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L106", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivereason", + "community": 30, + "norm_label": ".getarchivereason()" + }, + { + "label": ".setArchiveReason()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L110", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivereason", + "community": 30, + "norm_label": ".setarchivereason()" + }, + { + "label": ".getEquipments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L114", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getequipments", + "community": 82, + "norm_label": ".getequipments()" + }, + { + "label": ".setEquipments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L118", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setequipments", + "community": 82, + "norm_label": ".setequipments()" + }, + { + "label": "CreateDepartmentRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest", + "community": 45, + "norm_label": "createdepartmentrequest.java" + }, + { + "label": "CreateDepartmentRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "community": 45, + "norm_label": "createdepartmentrequest" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java_string", + "community": 45, + "norm_label": "string" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java_long", + "community": 45, + "norm_label": "long" + }, + { + "label": ".CreateDepartmentRequest()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_createdepartmentrequest", + "community": 45, + "norm_label": ".createdepartmentrequest()" + }, + { + "label": ".getDepartmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentname", + "community": 45, + "norm_label": ".getdepartmentname()" + }, + { + "label": ".setDepartmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentname", + "community": 45, + "norm_label": ".setdepartmentname()" + }, + { + "label": ".getDepartmentCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentcode", + "community": 45, + "norm_label": ".getdepartmentcode()" + }, + { + "label": ".setDepartmentCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentcode", + "community": 45, + "norm_label": ".setdepartmentcode()" + }, + { + "label": "CreateGroupRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest", + "community": 46, + "norm_label": "creategrouprequest.java" + }, + { + "label": "CreateGroupRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "community": 46, + "norm_label": "creategrouprequest" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_string", + "community": 46, + "norm_label": "string" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "community": 46, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_integer", + "community": 46, + "norm_label": "integer" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getname", + "community": 46, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setname", + "community": 46, + "norm_label": ".setname()" + }, + { + "label": ".getGroupSize()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getgroupsize", + "community": 46, + "norm_label": ".getgroupsize()" + }, + { + "label": ".setGroupSize()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setgroupsize", + "community": 46, + "norm_label": ".setgroupsize()" + }, + { + "label": ".getEducationFormId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L30", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteducationformid", + "community": 46, + "norm_label": ".geteducationformid()" + }, + { + "label": ".setEducationFormId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_seteducationformid", + "community": 46, + "norm_label": ".seteducationformid()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getdepartmentid", + "community": 46, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setdepartmentid", + "community": 46, + "norm_label": ".setdepartmentid()" + }, + { + "label": ".getYearStartStudy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getyearstartstudy", + "community": 46, + "norm_label": ".getyearstartstudy()" + }, + { + "label": ".setYearStartStudy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setyearstartstudy", + "community": 46, + "norm_label": ".setyearstartstudy()" + }, + { + "label": ".getSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialitycode", + "community": 46, + "norm_label": ".getspecialitycode()" + }, + { + "label": ".setSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialitycode", + "community": 46, + "norm_label": ".setspecialitycode()" + }, + { + "label": ".getSpecialtyId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyid", + "community": 46, + "norm_label": ".getspecialtyid()" + }, + { + "label": ".setSpecialtyId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyid", + "community": 46, + "norm_label": ".setspecialtyid()" + }, + { + "label": ".getSpecialtyProfileId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L70", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyprofileid", + "community": 46, + "norm_label": ".getspecialtyprofileid()" + }, + { + "label": ".setSpecialtyProfileId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L74", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyprofileid", + "community": 46, + "norm_label": ".setspecialtyprofileid()" + }, + { + "label": ".getEffectiveSpecialtyId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L78", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid", + "community": 46, + "norm_label": ".geteffectivespecialtyid()" + }, + { + "label": "CreateSpecialityRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest", + "community": 111, + "norm_label": "createspecialityrequest.java" + }, + { + "label": "CreateSpecialityRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "community": 111, + "norm_label": "createspecialityrequest" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_java_string", + "community": 111, + "norm_label": "string" + }, + { + "label": ".CreateSpecialityRequest()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_createspecialityrequest", + "community": 111, + "norm_label": ".createspecialityrequest()" + }, + { + "label": ".getSpecialityName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialityname", + "community": 111, + "norm_label": ".getspecialityname()" + }, + { + "label": ".setSpecialityName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialityname", + "community": 111, + "norm_label": ".setspecialityname()" + }, + { + "label": ".getSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialitycode", + "community": 111, + "norm_label": ".getspecialitycode()" + }, + { + "label": ".setSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialitycode", + "community": 111, + "norm_label": ".setspecialitycode()" + }, + { + "label": "CreateSubjectRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest", + "community": 83, + "norm_label": "createsubjectrequest.java" + }, + { + "label": "CreateSubjectRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "community": 83, + "norm_label": "createsubjectrequest" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_long", + "community": 83, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_string", + "community": 83, + "norm_label": "string" + }, + { + "label": ".CreateSubjectRequest()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", + "community": 83, + "norm_label": ".createsubjectrequest()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getid", + "community": 83, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setid", + "community": 83, + "norm_label": ".setid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getname", + "community": 83, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setname", + "community": 83, + "norm_label": ".setname()" + }, + { + "label": ".getCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getcode", + "community": 83, + "norm_label": ".getcode()" + }, + { + "label": ".setCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setcode", + "community": 83, + "norm_label": ".setcode()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getdepartmentid", + "community": 83, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setdepartmentid", + "community": 83, + "norm_label": ".setdepartmentid()" + }, + { + "label": "CreateTeacherCreationRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest", + "community": 74, + "norm_label": "createteachercreationrequest.java" + }, + { + "label": "CreateTeacherCreationRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "community": 74, + "norm_label": "createteachercreationrequest" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "community": 74, + "norm_label": "string" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_long", + "community": 74, + "norm_label": "long" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getusername", + "community": 74, + "norm_label": ".getusername()" + }, + { + "label": ".setUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setusername", + "community": 74, + "norm_label": ".setusername()" + }, + { + "label": ".getFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getfullname", + "community": 74, + "norm_label": ".getfullname()" + }, + { + "label": ".setFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setfullname", + "community": 74, + "norm_label": ".setfullname()" + }, + { + "label": ".getJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getjobtitle", + "community": 74, + "norm_label": ".getjobtitle()" + }, + { + "label": ".setJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setjobtitle", + "community": 74, + "norm_label": ".setjobtitle()" + }, + { + "label": ".getComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getcomment", + "community": 74, + "norm_label": ".getcomment()" + }, + { + "label": ".setComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setcomment", + "community": 74, + "norm_label": ".setcomment()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getdepartmentid", + "community": 74, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setdepartmentid", + "community": 74, + "norm_label": ".setdepartmentid()" + }, + { + "label": "CreateUserRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest", + "community": 59, + "norm_label": "createuserrequest.java" + }, + { + "label": "CreateUserRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "community": 59, + "norm_label": "createuserrequest" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "community": 59, + "norm_label": "string" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_long", + "community": 59, + "norm_label": "long" + }, + { + "label": ".CreateUserRequest()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_createuserrequest", + "community": 59, + "norm_label": ".createuserrequest()" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getusername", + "community": 59, + "norm_label": ".getusername()" + }, + { + "label": ".setUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setusername", + "community": 59, + "norm_label": ".setusername()" + }, + { + "label": ".getPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getpassword", + "community": 59, + "norm_label": ".getpassword()" + }, + { + "label": ".setPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setpassword", + "community": 59, + "norm_label": ".setpassword()" + }, + { + "label": ".getRole()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getrole", + "community": 59, + "norm_label": ".getrole()" + }, + { + "label": ".setRole()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setrole", + "community": 59, + "norm_label": ".setrole()" + }, + { + "label": ".getFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getfullname", + "community": 59, + "norm_label": ".getfullname()" + }, + { + "label": ".setFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setfullname", + "community": 59, + "norm_label": ".setfullname()" + }, + { + "label": ".getJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getjobtitle", + "community": 59, + "norm_label": ".getjobtitle()" + }, + { + "label": ".setJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setjobtitle", + "community": 59, + "norm_label": ".setjobtitle()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getdepartmentid", + "community": 59, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setdepartmentid", + "community": 59, + "norm_label": ".setdepartmentid()" + }, + { + "label": "DepartmentResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse", + "community": 93, + "norm_label": "departmentresponse.java" + }, + { + "label": "DepartmentResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "community": 93, + "norm_label": "departmentresponse" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_long", + "community": 93, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_string", + "community": 93, + "norm_label": "string" + }, + { + "label": ".DepartmentResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", + "community": 93, + "norm_label": ".departmentresponse()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getid", + "community": 93, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setid", + "community": 93, + "norm_label": ".setid()" + }, + { + "label": ".getDepartmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentname", + "community": 93, + "norm_label": ".getdepartmentname()" + }, + { + "label": ".setDepartmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentname", + "community": 93, + "norm_label": ".setdepartmentname()" + }, + { + "label": ".getDepartmentCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentcode", + "community": 93, + "norm_label": ".getdepartmentcode()" + }, + { + "label": ".setDepartmentCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentcode", + "community": 93, + "norm_label": ".setdepartmentcode()" + }, + { + "label": "DepartmentTransferRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest", + "community": 12, + "norm_label": "departmenttransferrequest.java" + }, + { + "label": "DepartmentTransferRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", + "community": 12, + "norm_label": "departmenttransferrequest" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java_long", + "community": 12, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java_localdate", + "community": 12, + "norm_label": "localdate" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java_string", + "community": 12, + "norm_label": "string" + }, + { + "label": "GroupCalendarAssignmentDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto", + "community": 92, + "norm_label": "groupcalendarassignmentdto.java" + }, + { + "label": "GroupCalendarAssignmentDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "community": 92, + "norm_label": "groupcalendarassignmentdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java_long", + "community": 92, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java_string", + "community": 92, + "norm_label": "string" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java_list", + "community": 92, + "norm_label": "list" + }, + { + "label": "GroupResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse", + "community": 31, + "norm_label": "groupresponse.java" + }, + { + "label": "GroupResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "community": 31, + "norm_label": "groupresponse" + }, + { + "label": "JsonInclude", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_jsoninclude", + "community": 31, + "norm_label": "jsoninclude" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "community": 31, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "community": 31, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_integer", + "community": 31, + "norm_label": "integer" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_boolean", + "community": 31, + "norm_label": "boolean" + }, + { + "label": ".GroupResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", + "community": 31, + "norm_label": ".groupresponse()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L65", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getid", + "community": 31, + "norm_label": ".getid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L69", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getname", + "community": 31, + "norm_label": ".getname()" + }, + { + "label": ".getGroupSize()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L73", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getgroupsize", + "community": 31, + "norm_label": ".getgroupsize()" + }, + { + "label": ".getEducationFormId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L77", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformid", + "community": 31, + "norm_label": ".geteducationformid()" + }, + { + "label": ".getEducationFormName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L81", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformname", + "community": 31, + "norm_label": ".geteducationformname()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L85", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getdepartmentid", + "community": 31, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".getCourse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L89", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getcourse", + "community": 31, + "norm_label": ".getcourse()" + }, + { + "label": ".getSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L93", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getsemester", + "community": 31, + "norm_label": ".getsemester()" + }, + { + "label": ".getYearStartStudy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L97", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getyearstartstudy", + "community": 31, + "norm_label": ".getyearstartstudy()" + }, + { + "label": ".getSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L101", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialitycode", + "community": 31, + "norm_label": ".getspecialitycode()" + }, + { + "label": ".getSpecialtyId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L105", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyid", + "community": 31, + "norm_label": ".getspecialtyid()" + }, + { + "label": ".getSpecialtyCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L109", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtycode", + "community": 31, + "norm_label": ".getspecialtycode()" + }, + { + "label": ".getSpecialtyName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L113", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyname", + "community": 31, + "norm_label": ".getspecialtyname()" + }, + { + "label": ".getSpecialtyProfileId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L117", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofileid", + "community": 31, + "norm_label": ".getspecialtyprofileid()" + }, + { + "label": ".getSpecialtyProfileName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L121", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofilename", + "community": 31, + "norm_label": ".getspecialtyprofilename()" + }, + { + "label": ".getStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L125", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstatus", + "community": 31, + "norm_label": ".getstatus()" + }, + { + "label": ".getActive()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L129", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getactive", + "community": 31, + "norm_label": ".getactive()" + }, + { + "label": ".getStudyState()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L133", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystate", + "community": 31, + "norm_label": ".getstudystate()" + }, + { + "label": ".getStudyStateName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L137", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystatename", + "community": 31, + "norm_label": ".getstudystatename()" + }, + { + "label": "LessonTypeResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse", + "community": 16, + "norm_label": "lessontyperesponse.java" + }, + { + "label": "LessonTypeResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", + "community": 16, + "norm_label": "lessontyperesponse" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_java_long", + "community": 16, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_java_string", + "community": 16, + "norm_label": "string" + }, + { + "label": "LoginRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginrequest", + "community": 112, + "norm_label": "loginrequest.java" + }, + { + "label": "LoginRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "community": 112, + "norm_label": "loginrequest" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginrequest_java_string", + "community": 112, + "norm_label": "string" + }, + { + "label": ".LoginRequest()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_loginrequest", + "community": 112, + "norm_label": ".loginrequest()" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getusername", + "community": 112, + "norm_label": ".getusername()" + }, + { + "label": ".setUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setusername", + "community": 112, + "norm_label": ".setusername()" + }, + { + "label": ".getPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getpassword", + "community": 112, + "norm_label": ".getpassword()" + }, + { + "label": ".setPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setpassword", + "community": 112, + "norm_label": ".setpassword()" + }, + { + "label": "LoginResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse", + "community": 55, + "norm_label": "loginresponse.java" + }, + { + "label": "LoginResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "community": 55, + "norm_label": "loginresponse" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "community": 55, + "norm_label": "string" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_long", + "community": 55, + "norm_label": "long" + }, + { + "label": ".LoginResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", + "community": 55, + "norm_label": ".loginresponse()" + }, + { + "label": ".isSuccess()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L30", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_issuccess", + "community": 55, + "norm_label": ".issuccess()" + }, + { + "label": ".setSuccess()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setsuccess", + "community": 55, + "norm_label": ".setsuccess()" + }, + { + "label": ".getMessage()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage", + "community": 21, + "norm_label": ".getmessage()" + }, + { + "label": ".setMessage()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setmessage", + "community": 55, + "norm_label": ".setmessage()" + }, + { + "label": ".getToken()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_gettoken", + "community": 55, + "norm_label": ".gettoken()" + }, + { + "label": ".setToken()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_settoken", + "community": 55, + "norm_label": ".settoken()" + }, + { + "label": ".getRole()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getrole", + "community": 55, + "norm_label": ".getrole()" + }, + { + "label": ".setRole()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setrole", + "community": 55, + "norm_label": ".setrole()" + }, + { + "label": ".getRedirect()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getredirect", + "community": 55, + "norm_label": ".getredirect()" + }, + { + "label": ".setRedirect()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setredirect", + "community": 55, + "norm_label": ".setredirect()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L70", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getdepartmentid", + "community": 55, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L74", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setdepartmentid", + "community": 55, + "norm_label": ".setdepartmentid()" + }, + { + "label": ".getUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L78", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getuserid", + "community": 55, + "norm_label": ".getuserid()" + }, + { + "label": ".setUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L82", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setuserid", + "community": 55, + "norm_label": ".setuserid()" + }, + { + "label": "RenderedLessonDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_renderedlessondto", + "community": 1, + "norm_label": "renderedlessondto.java" + }, + { + "label": "RenderedLessonDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "community": 1, + "norm_label": "renderedlessondto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_long", + "community": 1, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_localdate", + "community": 1, + "norm_label": "localdate" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_integer", + "community": 1, + "norm_label": "integer" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_string", + "community": 1, + "norm_label": "string" + }, + { + "label": "LocalTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_localtime", + "community": 1, + "norm_label": "localtime" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_list", + "community": 1, + "norm_label": "list" + }, + { + "label": "ReviewTeacherCreationRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest", + "community": 64, + "norm_label": "reviewteachercreationrequest.java" + }, + { + "label": "ReviewTeacherCreationRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "community": 64, + "norm_label": "reviewteachercreationrequest" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "community": 64, + "norm_label": "string" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_long", + "community": 64, + "norm_label": "long" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getusername", + "community": 64, + "norm_label": ".getusername()" + }, + { + "label": ".setUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setusername", + "community": 64, + "norm_label": ".setusername()" + }, + { + "label": ".getFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getfullname", + "community": 64, + "norm_label": ".getfullname()" + }, + { + "label": ".setFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L24", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setfullname", + "community": 64, + "norm_label": ".setfullname()" + }, + { + "label": ".getJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getjobtitle", + "community": 64, + "norm_label": ".getjobtitle()" + }, + { + "label": ".setJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setjobtitle", + "community": 64, + "norm_label": ".setjobtitle()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getdepartmentid", + "community": 64, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L40", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setdepartmentid", + "community": 64, + "norm_label": ".setdepartmentid()" + }, + { + "label": ".getPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getpassword", + "community": 64, + "norm_label": ".getpassword()" + }, + { + "label": ".setPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L48", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setpassword", + "community": 64, + "norm_label": ".setpassword()" + }, + { + "label": ".getReviewComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L52", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getreviewcomment", + "community": 64, + "norm_label": ".getreviewcomment()" + }, + { + "label": ".setReviewComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L56", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setreviewcomment", + "community": 64, + "norm_label": ".setreviewcomment()" + }, + { + "label": "ScheduleOverrideDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto", + "community": 0, + "norm_label": "scheduleoverridedto.java" + }, + { + "label": "ScheduleOverrideDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L6", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "community": 0, + "norm_label": "scheduleoverridedto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_long", + "community": 0, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_localdate", + "community": 0, + "norm_label": "localdate" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_string", + "community": 0, + "norm_label": "string" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_localdatetime", + "community": 0, + "norm_label": "localdatetime" + }, + { + "label": "ScheduleRuleDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruledto", + "community": 50, + "norm_label": "scheduleruledto.java" + }, + { + "label": "ScheduleRuleDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "community": 50, + "norm_label": "scheduleruledto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_long", + "community": 50, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_string", + "community": 50, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_integer", + "community": 50, + "norm_label": "integer" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_list", + "community": 50, + "norm_label": "list" + }, + { + "label": "ScheduleRuleSlotDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto", + "community": 87, + "norm_label": "scheduleruleslotdto.java" + }, + { + "label": "ScheduleRuleSlotDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "community": 87, + "norm_label": "scheduleruleslotdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_long", + "community": 87, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_integer", + "community": 87, + "norm_label": "integer" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_string", + "community": 87, + "norm_label": "string" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_list", + "community": 87, + "norm_label": "list" + }, + { + "label": "SemesterDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_semesterdto", + "community": 15, + "norm_label": "semesterdto.java" + }, + { + "label": "SemesterDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "community": 15, + "norm_label": "semesterdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_semesterdto_java_long", + "community": 15, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_semesterdto_java_string", + "community": 15, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_semesterdto_java_localdate", + "community": 15, + "norm_label": "localdate" + }, + { + "label": "SpecialityResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse", + "community": 21, + "norm_label": "specialityresponse.java" + }, + { + "label": "SpecialityResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "community": 96, + "norm_label": "specialityresponse" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_long", + "community": 96, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_string", + "community": 96, + "norm_label": "string" + }, + { + "label": ".SpecialityResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", + "community": 96, + "norm_label": ".specialityresponse()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getid", + "community": 96, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setid", + "community": 96, + "norm_label": ".setid()" + }, + { + "label": ".getSpecialityName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialityname", + "community": 96, + "norm_label": ".getspecialityname()" + }, + { + "label": ".setSpecialityName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialityname", + "community": 96, + "norm_label": ".setspecialityname()" + }, + { + "label": ".getSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialitycode", + "community": 96, + "norm_label": ".getspecialitycode()" + }, + { + "label": ".setSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialitycode", + "community": 96, + "norm_label": ".setspecialitycode()" + }, + { + "label": "SpecialtyProfileDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto", + "community": 21, + "norm_label": "specialtyprofiledto.java" + }, + { + "label": "SpecialtyProfileDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "community": 21, + "norm_label": "specialtyprofiledto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_java_long", + "community": 21, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_java_string", + "community": 21, + "norm_label": "string" + }, + { + "label": "SubgroupDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subgroupdto", + "community": 8, + "norm_label": "subgroupdto.java" + }, + { + "label": "SubgroupDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "community": 8, + "norm_label": "subgroupdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subgroupdto_java_long", + "community": 8, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subgroupdto_java_string", + "community": 8, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subgroupdto_java_integer", + "community": 8, + "norm_label": "integer" + }, + { + "label": "SubjectCommentDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto", + "community": 4, + "norm_label": "subjectcommentdto.java" + }, + { + "label": "SubjectCommentDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", + "community": 4, + "norm_label": "subjectcommentdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java_long", + "community": 4, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java_string", + "community": 4, + "norm_label": "string" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java_localdatetime", + "community": 4, + "norm_label": "localdatetime" + }, + { + "label": "SubjectResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse", + "community": 103, + "norm_label": "subjectresponse.java" + }, + { + "label": "SubjectResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "community": 103, + "norm_label": "subjectresponse" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_long", + "community": 103, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_string", + "community": 103, + "norm_label": "string" + }, + { + "label": ".SubjectResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", + "community": 103, + "norm_label": ".subjectresponse()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getid", + "community": 103, + "norm_label": ".getid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getname", + "community": 103, + "norm_label": ".getname()" + }, + { + "label": ".getCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getcode", + "community": 103, + "norm_label": ".getcode()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getdepartmentid", + "community": 103, + "norm_label": ".getdepartmentid()" + }, + { + "label": "TeacherCreationRequestResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse", + "community": 2, + "norm_label": "teachercreationrequestresponse.java" + }, + { + "label": "TeacherCreationRequestResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "community": 2, + "norm_label": "teachercreationrequestresponse" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java_long", + "community": 2, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java_string", + "community": 2, + "norm_label": "string" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java_localdatetime", + "community": 2, + "norm_label": "localdatetime" + }, + { + "label": "TeacherDepartmentAssignmentDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto", + "community": 12, + "norm_label": "teacherdepartmentassignmentdto.java" + }, + { + "label": "TeacherDepartmentAssignmentDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", + "community": 12, + "norm_label": "teacherdepartmentassignmentdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_long", + "community": 12, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_string", + "community": 12, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_localdate", + "community": 12, + "norm_label": "localdate" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_boolean", + "community": 12, + "norm_label": "boolean" + }, + { + "label": "TeacherSubjectResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse", + "community": 104, + "norm_label": "teachersubjectresponse.java" + }, + { + "label": "TeacherSubjectResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "community": 104, + "norm_label": "teachersubjectresponse" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_long", + "community": 104, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_string", + "community": 104, + "norm_label": "string" + }, + { + "label": ".TeacherSubjectResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", + "community": 104, + "norm_label": ".teachersubjectresponse()" + }, + { + "label": ".getUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getuserid", + "community": 104, + "norm_label": ".getuserid()" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getusername", + "community": 104, + "norm_label": ".getusername()" + }, + { + "label": ".getSubjectId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L25", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectid", + "community": 104, + "norm_label": ".getsubjectid()" + }, + { + "label": ".getSubjectName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectname", + "community": 104, + "norm_label": ".getsubjectname()" + }, + { + "label": "TimeSlotDateAssignmentDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto", + "community": 115, + "norm_label": "timeslotdateassignmentdto.java" + }, + { + "label": "TimeSlotDateAssignmentDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "community": 115, + "norm_label": "timeslotdateassignmentdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java_long", + "community": 115, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java_localdate", + "community": 115, + "norm_label": "localdate" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java_string", + "community": 115, + "norm_label": "string" + }, + { + "label": "TimeSlotDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdto", + "community": 41, + "norm_label": "timeslotdto.java" + }, + { + "label": "TimeSlotDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "community": 41, + "norm_label": "timeslotdto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_long", + "community": 41, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_integer", + "community": 41, + "norm_label": "integer" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_string", + "community": 41, + "norm_label": "string" + }, + { + "label": "LocalTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_localtime", + "community": 41, + "norm_label": "localtime" + }, + { + "label": "TimeSlotScopeDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto", + "community": 63, + "norm_label": "timeslotscopedto.java" + }, + { + "label": "TimeSlotScopeDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "community": 63, + "norm_label": "timeslotscopedto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java_long", + "community": 63, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java_string", + "community": 63, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java_integer", + "community": 63, + "norm_label": "integer" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java_boolean", + "community": 63, + "norm_label": "boolean" + }, + { + "label": "UserResponse.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse", + "community": 57, + "norm_label": "userresponse.java" + }, + { + "label": "UserResponse", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "community": 57, + "norm_label": "userresponse" + }, + { + "label": "JsonInclude", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_java_jsoninclude", + "community": 57, + "norm_label": "jsoninclude" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_java_long", + "community": 57, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "community": 57, + "norm_label": "string" + }, + { + "label": ".UserResponse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", + "community": 57, + "norm_label": ".userresponse()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getid", + "community": 57, + "norm_label": ".getid()" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getusername", + "community": 57, + "norm_label": ".getusername()" + }, + { + "label": ".getRole()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getrole", + "community": 57, + "norm_label": ".getrole()" + }, + { + "label": ".getFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getfullname", + "community": 57, + "norm_label": ".getfullname()" + }, + { + "label": ".getJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getjobtitle", + "community": 57, + "norm_label": ".getjobtitle()" + }, + { + "label": ".getDepartmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentname", + "community": 57, + "norm_label": ".getdepartmentname()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L70", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentid", + "community": 57, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L74", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setdepartmentid", + "community": 57, + "norm_label": ".setdepartmentid()" + }, + { + "label": ".getStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L78", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getstatus", + "community": 57, + "norm_label": ".getstatus()" + }, + { + "label": ".setStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L82", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setstatus", + "community": 57, + "norm_label": ".setstatus()" + }, + { + "label": "WorkloadSummaryDto.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto", + "community": 1, + "norm_label": "workloadsummarydto.java" + }, + { + "label": "WorkloadSummaryDto", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "community": 1, + "norm_label": "workloadsummarydto" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_java_long", + "community": 1, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_java_string", + "community": 1, + "norm_label": "string" + }, + { + "label": "AcademicCalendar.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar", + "community": 92, + "norm_label": "academiccalendar.java" + }, + { + "label": "AcademicCalendar", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "community": 65, + "norm_label": "academiccalendar" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_entity", + "community": 65, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_table", + "community": 65, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_long", + "community": 65, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_string", + "community": 65, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_integer", + "community": 65, + "norm_label": "integer" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getid", + "community": 65, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setid", + "community": 65, + "norm_label": ".setid()" + }, + { + "label": ".getTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_gettitle", + "community": 65, + "norm_label": ".gettitle()" + }, + { + "label": ".setTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_settitle", + "community": 65, + "norm_label": ".settitle()" + }, + { + "label": ".getAcademicYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getacademicyear", + "community": 43, + "norm_label": ".getacademicyear()" + }, + { + "label": ".setAcademicYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setacademicyear", + "community": 43, + "norm_label": ".setacademicyear()" + }, + { + "label": ".getSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspeciality", + "community": 65, + "norm_label": ".getspeciality()" + }, + { + "label": ".setSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspeciality", + "community": 65, + "norm_label": ".setspeciality()" + }, + { + "label": ".getSpecialtyProfile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspecialtyprofile", + "community": 33, + "norm_label": ".getspecialtyprofile()" + }, + { + "label": ".setSpecialtyProfile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspecialtyprofile", + "community": 33, + "norm_label": ".setspecialtyprofile()" + }, + { + "label": ".getStudyForm()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getstudyform", + "community": 88, + "norm_label": ".getstudyform()" + }, + { + "label": ".setStudyForm()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setstudyform", + "community": 88, + "norm_label": ".setstudyform()" + }, + { + "label": ".getCourseCount()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount", + "community": 65, + "norm_label": ".getcoursecount()" + }, + { + "label": ".setCourseCount()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L87", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setcoursecount", + "community": 65, + "norm_label": ".setcoursecount()" + }, + { + "label": "AcademicCalendarActivityType.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype", + "community": 40, + "norm_label": "academiccalendaractivitytype.java" + }, + { + "label": "AcademicCalendarActivityType", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "community": 40, + "norm_label": "academiccalendaractivitytype" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_entity", + "community": 40, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_table", + "community": 40, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_long", + "community": 40, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "community": 40, + "norm_label": "string" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_boolean", + "community": 40, + "norm_label": "boolean" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_integer", + "community": 40, + "norm_label": "integer" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getid", + "community": 40, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setid", + "community": 40, + "norm_label": ".setid()" + }, + { + "label": ".getCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcode", + "community": 40, + "norm_label": ".getcode()" + }, + { + "label": ".setCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcode", + "community": 40, + "norm_label": ".setcode()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getname", + "community": 40, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setname", + "community": 40, + "norm_label": ".setname()" + }, + { + "label": ".getAllowSchedule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getallowschedule", + "community": 40, + "norm_label": ".getallowschedule()" + }, + { + "label": ".setAllowSchedule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setallowschedule", + "community": 40, + "norm_label": ".setallowschedule()" + }, + { + "label": ".getColorCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcolorcode", + "community": 40, + "norm_label": ".getcolorcode()" + }, + { + "label": ".setColorCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcolorcode", + "community": 40, + "norm_label": ".setcolorcode()" + }, + { + "label": ".getDisplayOrder()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdisplayorder", + "community": 40, + "norm_label": ".getdisplayorder()" + }, + { + "label": ".setDisplayOrder()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdisplayorder", + "community": 40, + "norm_label": ".setdisplayorder()" + }, + { + "label": ".getDescription()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdescription", + "community": 40, + "norm_label": ".getdescription()" + }, + { + "label": ".setDescription()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdescription", + "community": 40, + "norm_label": ".setdescription()" + }, + { + "label": "AcademicCalendarDay.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday", + "community": 49, + "norm_label": "academiccalendarday.java" + }, + { + "label": "AcademicCalendarDay", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "community": 49, + "norm_label": "academiccalendarday" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_entity", + "community": 49, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_table", + "community": 49, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_long", + "community": 49, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_integer", + "community": 49, + "norm_label": "integer" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_localdate", + "community": 49, + "norm_label": "localdate" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getid", + "community": 49, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setid", + "community": 49, + "norm_label": ".setid()" + }, + { + "label": ".getAcademicCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getacademiccalendar", + "community": 65, + "norm_label": ".getacademiccalendar()" + }, + { + "label": ".setAcademicCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setacademiccalendar", + "community": 65, + "norm_label": ".setacademiccalendar()" + }, + { + "label": ".getCourseNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getcoursenumber", + "community": 49, + "norm_label": ".getcoursenumber()" + }, + { + "label": ".setCourseNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setcoursenumber", + "community": 49, + "norm_label": ".setcoursenumber()" + }, + { + "label": ".getDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdate", + "community": 49, + "norm_label": ".getdate()" + }, + { + "label": ".setDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdate", + "community": 49, + "norm_label": ".setdate()" + }, + { + "label": ".getWeekNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getweeknumber", + "community": 49, + "norm_label": ".getweeknumber()" + }, + { + "label": ".setWeekNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setweeknumber", + "community": 49, + "norm_label": ".setweeknumber()" + }, + { + "label": ".getDayOfWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdayofweek", + "community": 49, + "norm_label": ".getdayofweek()" + }, + { + "label": ".setDayOfWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdayofweek", + "community": 49, + "norm_label": ".setdayofweek()" + }, + { + "label": ".getActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getactivitytype", + "community": 49, + "norm_label": ".getactivitytype()" + }, + { + "label": ".setActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L87", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setactivitytype", + "community": 49, + "norm_label": ".setactivitytype()" + }, + { + "label": "AcademicCalendarSubject.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject", + "community": 20, + "norm_label": "academiccalendarsubject.java" + }, + { + "label": "AcademicCalendarSubject", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "community": 20, + "norm_label": "academiccalendarsubject" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_entity", + "community": 20, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_table", + "community": 20, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_long", + "community": 20, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_integer", + "community": 20, + "norm_label": "integer" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getid", + "community": 20, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setid", + "community": 20, + "norm_label": ".setid()" + }, + { + "label": ".getAcademicCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getacademiccalendar", + "community": 20, + "norm_label": ".getacademiccalendar()" + }, + { + "label": ".setAcademicCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setacademiccalendar", + "community": 20, + "norm_label": ".setacademiccalendar()" + }, + { + "label": ".getSemesterNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsemesternumber", + "community": 20, + "norm_label": ".getsemesternumber()" + }, + { + "label": ".setSemesterNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsemesternumber", + "community": 20, + "norm_label": ".setsemesternumber()" + }, + { + "label": ".getSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsubject", + "community": 20, + "norm_label": ".getsubject()" + }, + { + "label": ".setSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsubject", + "community": 20, + "norm_label": ".setsubject()" + }, + { + "label": "AcademicYear.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear", + "community": 43, + "norm_label": "academicyear.java" + }, + { + "label": "AcademicYear", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "community": 43, + "norm_label": "academicyear" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_java_entity", + "community": 43, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_java_table", + "community": 43, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_java_long", + "community": 43, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_java_string", + "community": 43, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_java_localdate", + "community": 43, + "norm_label": "localdate" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L24", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getid", + "community": 43, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setid", + "community": 43, + "norm_label": ".setid()" + }, + { + "label": ".getTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_gettitle", + "community": 43, + "norm_label": ".gettitle()" + }, + { + "label": ".setTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_settitle", + "community": 43, + "norm_label": ".settitle()" + }, + { + "label": ".getStartDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L40", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getstartdate", + "community": 43, + "norm_label": ".getstartdate()" + }, + { + "label": ".setStartDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setstartdate", + "community": 43, + "norm_label": ".setstartdate()" + }, + { + "label": ".getEndDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L48", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getenddate", + "community": 43, + "norm_label": ".getenddate()" + }, + { + "label": ".setEndDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L52", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setenddate", + "community": 43, + "norm_label": ".setenddate()" + }, + { + "label": "AuthRefreshToken.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken", + "community": 5, + "norm_label": "authrefreshtoken.java" + }, + { + "label": "AuthRefreshToken", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "community": 5, + "norm_label": "authrefreshtoken" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_entity", + "community": 5, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_table", + "community": 5, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_long", + "community": 5, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "community": 5, + "norm_label": "string" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "community": 5, + "norm_label": "localdatetime" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getid", + "community": 5, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setid", + "community": 5, + "norm_label": ".setid()" + }, + { + "label": ".getUser()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuser", + "community": 10, + "norm_label": ".getuser()" + }, + { + "label": ".setUser()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser", + "community": 5, + "norm_label": ".setuser()" + }, + { + "label": ".getTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant", + "community": 5, + "norm_label": ".gettenant()" + }, + { + "label": ".setTenant()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant", + "community": 5, + "norm_label": ".settenant()" + }, + { + "label": ".getTokenHash()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettokenhash", + "community": 5, + "norm_label": ".gettokenhash()" + }, + { + "label": ".setTokenHash()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash", + "community": 5, + "norm_label": ".settokenhash()" + }, + { + "label": ".getIssuedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getissuedat", + "community": 5, + "norm_label": ".getissuedat()" + }, + { + "label": ".setIssuedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L87", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat", + "community": 5, + "norm_label": ".setissuedat()" + }, + { + "label": ".getExpiresAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L91", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getexpiresat", + "community": 5, + "norm_label": ".getexpiresat()" + }, + { + "label": ".setExpiresAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L95", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat", + "community": 5, + "norm_label": ".setexpiresat()" + }, + { + "label": ".getRevokedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L99", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat", + "community": 5, + "norm_label": ".getrevokedat()" + }, + { + "label": ".setRevokedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L103", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrevokedat", + "community": 5, + "norm_label": ".setrevokedat()" + }, + { + "label": ".getRotatedToTokenHash()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L107", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrotatedtotokenhash", + "community": 5, + "norm_label": ".getrotatedtotokenhash()" + }, + { + "label": ".setRotatedToTokenHash()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L111", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrotatedtotokenhash", + "community": 5, + "norm_label": ".setrotatedtotokenhash()" + }, + { + "label": ".getUserAgent()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L115", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuseragent", + "community": 5, + "norm_label": ".getuseragent()" + }, + { + "label": ".setUserAgent()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L119", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuseragent", + "community": 5, + "norm_label": ".setuseragent()" + }, + { + "label": ".getIpAddress()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L123", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getipaddress", + "community": 5, + "norm_label": ".getipaddress()" + }, + { + "label": ".setIpAddress()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L127", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setipaddress", + "community": 5, + "norm_label": ".setipaddress()" + }, + { + "label": ".isActive()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L131", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_isactive", + "community": 5, + "norm_label": ".isactive()" + }, + { + "label": "Classroom.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom", + "community": 37, + "norm_label": "classroom.java" + }, + { + "label": "Classroom", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "community": 37, + "norm_label": "classroom" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_java_entity", + "community": 37, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_java_table", + "community": 37, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_java_long", + "community": 37, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_java_string", + "community": 37, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_java_integer", + "community": 37, + "norm_label": "integer" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_java_boolean", + "community": 37, + "norm_label": "boolean" + }, + { + "label": "Set", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_java_set", + "community": 37, + "norm_label": "set" + }, + { + "label": ".Classroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_classroom", + "community": 37, + "norm_label": ".classroom()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getid", + "community": 37, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L40", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setid", + "community": 37, + "norm_label": ".setid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getname", + "community": 37, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L48", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setname", + "community": 37, + "norm_label": ".setname()" + }, + { + "label": ".getCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L52", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getcapacity", + "community": 37, + "norm_label": ".getcapacity()" + }, + { + "label": ".setCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L56", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setcapacity", + "community": 37, + "norm_label": ".setcapacity()" + }, + { + "label": ".getBuilding()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L60", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getbuilding", + "community": 37, + "norm_label": ".getbuilding()" + }, + { + "label": ".setBuilding()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L64", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setbuilding", + "community": 37, + "norm_label": ".setbuilding()" + }, + { + "label": ".getFloor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L68", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getfloor", + "community": 37, + "norm_label": ".getfloor()" + }, + { + "label": ".setFloor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L72", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setfloor", + "community": 37, + "norm_label": ".setfloor()" + }, + { + "label": ".getIsAvailable()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L76", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getisavailable", + "community": 37, + "norm_label": ".getisavailable()" + }, + { + "label": ".setIsAvailable()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L80", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setisavailable", + "community": 37, + "norm_label": ".setisavailable()" + }, + { + "label": ".getEquipments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L84", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getequipments", + "community": 37, + "norm_label": ".getequipments()" + }, + { + "label": ".setEquipments()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setequipments", + "community": 37, + "norm_label": ".setequipments()" + }, + { + "label": "Department.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department", + "community": 10, + "norm_label": "department.java" + }, + { + "label": "Department", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_department", + "community": 24, + "norm_label": "department" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_java_entity", + "community": 24, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_java_table", + "community": 24, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_java_long", + "community": 24, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_java_string", + "community": 24, + "norm_label": "string" + }, + { + "label": ".Department()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_department_department", + "community": 24, + "norm_label": ".department()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_department_getid", + "community": 24, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_department_setid", + "community": 24, + "norm_label": ".setid()" + }, + { + "label": ".getDepartmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_department_getdepartmentname", + "community": 24, + "norm_label": ".getdepartmentname()" + }, + { + "label": ".setDepartmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_department_setdepartmentname", + "community": 24, + "norm_label": ".setdepartmentname()" + }, + { + "label": ".getDepartmentCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_department_getdepartmentcode", + "community": 24, + "norm_label": ".getdepartmentcode()" + }, + { + "label": ".setDepartmentCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_department_department_setdepartmentcode", + "community": 24, + "norm_label": ".setdepartmentcode()" + }, + { + "label": "EducationForm.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform", + "community": 29, + "norm_label": "educationform.java" + }, + { + "label": "EducationForm", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "community": 88, + "norm_label": "educationform" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_java_entity", + "community": 88, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_java_table", + "community": 88, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_java_long", + "community": 88, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_java_string", + "community": 88, + "norm_label": "string" + }, + { + "label": ".EducationForm()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_educationform_educationform", + "community": 88, + "norm_label": ".educationform()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_educationform_getid", + "community": 88, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_educationform_setid", + "community": 88, + "norm_label": ".setid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_educationform_getname", + "community": 88, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_educationform_educationform_setname", + "community": 88, + "norm_label": ".setname()" + }, + { + "label": "Equipment.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment", + "community": 82, + "norm_label": "equipment.java" + }, + { + "label": "Equipment", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "community": 82, + "norm_label": "equipment" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_java_entity", + "community": 82, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_java_table", + "community": 82, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_java_long", + "community": 82, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_java_string", + "community": 82, + "norm_label": "string" + }, + { + "label": ".Equipment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", + "community": 82, + "norm_label": ".equipment()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L24", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_equipment_getid", + "community": 82, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_equipment_setid", + "community": 82, + "norm_label": ".setid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_equipment_getname", + "community": 82, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_equipment_equipment_setname", + "community": 82, + "norm_label": ".setname()" + }, + { + "label": "LessonType.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype", + "community": 16, + "norm_label": "lessontype.java" + }, + { + "label": "LessonType", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "community": 16, + "norm_label": "lessontype" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_java_entity", + "community": 16, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_java_table", + "community": 16, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_java_long", + "community": 16, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_java_string", + "community": 16, + "norm_label": "string" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getid", + "community": 16, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setid", + "community": 16, + "norm_label": ".setid()" + }, + { + "label": ".getLessonType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L24", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getlessontype", + "community": 16, + "norm_label": ".getlessontype()" + }, + { + "label": ".setLessonType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setlessontype", + "community": 16, + "norm_label": ".setlessontype()" + }, + { + "label": "LifecycleEntity.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity", + "community": 27, + "norm_label": "lifecycleentity.java" + }, + { + "label": "LifecycleEntity", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "community": 27, + "norm_label": "lifecycleentity" + }, + { + "label": "MappedSuperclass", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "mappedsuperclass", + "community": 27, + "norm_label": "mappedsuperclass" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_string", + "community": 27, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdate", + "community": 27, + "norm_label": "localdate" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdatetime", + "community": 27, + "norm_label": "localdatetime" + }, + { + "label": ".getStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getstatus", + "community": 27, + "norm_label": ".getstatus()" + }, + { + "label": ".setStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setstatus", + "community": 27, + "norm_label": ".setstatus()" + }, + { + "label": ".getActiveFrom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactivefrom", + "community": 27, + "norm_label": ".getactivefrom()" + }, + { + "label": ".setActiveFrom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactivefrom", + "community": 27, + "norm_label": ".setactivefrom()" + }, + { + "label": ".getActiveTo()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactiveto", + "community": 27, + "norm_label": ".getactiveto()" + }, + { + "label": ".setActiveTo()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactiveto", + "community": 27, + "norm_label": ".setactiveto()" + }, + { + "label": ".getArchivedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivedat", + "community": 27, + "norm_label": ".getarchivedat()" + }, + { + "label": ".setArchivedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivedat", + "community": 27, + "norm_label": ".setarchivedat()" + }, + { + "label": ".getArchiveReason()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivereason", + "community": 27, + "norm_label": ".getarchivereason()" + }, + { + "label": ".setArchiveReason()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivereason", + "community": 27, + "norm_label": ".setarchivereason()" + }, + { + "label": ".isActiveRecord()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", + "community": 27, + "norm_label": ".isactiverecord()" + }, + { + "label": "JsonIgnore", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_jsonignore", + "community": 27, + "norm_label": "jsonignore" + }, + { + "label": ".isArchivedRecord()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L76", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", + "community": 27, + "norm_label": ".isarchivedrecord()" + }, + { + "label": ".isActiveOn()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L81", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", + "community": 27, + "norm_label": ".isactiveon()" + }, + { + "label": ".archive()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L94", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", + "community": 27, + "norm_label": ".archive()" + }, + { + "label": ".restore()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L101", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_restore", + "community": 27, + "norm_label": ".restore()" + }, + { + "label": "Role.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Role.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_role", + "community": 7, + "norm_label": "role.java" + }, + { + "label": "Role", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Role.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_role_role", + "community": 10, + "norm_label": "role" + }, + { + "label": "ScheduleLessonCategory.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory", + "community": 13, + "norm_label": "schedulelessoncategory.java" + }, + { + "label": "ScheduleLessonCategory", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "community": 13, + "norm_label": "schedulelessoncategory" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java_string", + "community": 13, + "norm_label": "string" + }, + { + "label": "getDisplayName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_getdisplayname", + "community": 13, + "norm_label": "getdisplayname()" + }, + { + "label": "fromLessonType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", + "community": 13, + "norm_label": "fromlessontype()" + }, + { + "label": "ScheduleOverride.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride", + "community": 0, + "norm_label": "scheduleoverride.java" + }, + { + "label": "ScheduleOverride", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "community": 0, + "norm_label": "scheduleoverride" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_entity", + "community": 0, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_table", + "community": 0, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_long", + "community": 0, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdate", + "community": 0, + "norm_label": "localdate" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_string", + "community": 0, + "norm_label": "string" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdatetime", + "community": 0, + "norm_label": "localdatetime" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getid", + "community": 0, + "norm_label": ".getid()" + }, + { + "label": ".getBaseRuleSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getbaseruleslot", + "community": 0, + "norm_label": ".getbaseruleslot()" + }, + { + "label": ".setBaseRuleSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setbaseruleslot", + "community": 0, + "norm_label": ".setbaseruleslot()" + }, + { + "label": ".getLessonDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getlessondate", + "community": 0, + "norm_label": ".getlessondate()" + }, + { + "label": ".setLessonDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setlessondate", + "community": 0, + "norm_label": ".setlessondate()" + }, + { + "label": ".getAction()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L70", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getaction", + "community": 0, + "norm_label": ".getaction()" + }, + { + "label": ".setAction()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L74", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setaction", + "community": 0, + "norm_label": ".setaction()" + }, + { + "label": ".getNewTimeSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L78", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewtimeslot", + "community": 0, + "norm_label": ".getnewtimeslot()" + }, + { + "label": ".setNewTimeSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L82", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewtimeslot", + "community": 0, + "norm_label": ".setnewtimeslot()" + }, + { + "label": ".getNewClassroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L86", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewclassroom", + "community": 0, + "norm_label": ".getnewclassroom()" + }, + { + "label": ".setNewClassroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L90", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewclassroom", + "community": 0, + "norm_label": ".setnewclassroom()" + }, + { + "label": ".getNewTeacher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L94", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewteacher", + "community": 0, + "norm_label": ".getnewteacher()" + }, + { + "label": ".setNewTeacher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L98", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewteacher", + "community": 0, + "norm_label": ".setnewteacher()" + }, + { + "label": ".getNewLessonFormat()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L102", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewlessonformat", + "community": 0, + "norm_label": ".getnewlessonformat()" + }, + { + "label": ".setNewLessonFormat()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L106", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewlessonformat", + "community": 0, + "norm_label": ".setnewlessonformat()" + }, + { + "label": ".getComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L110", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcomment", + "community": 0, + "norm_label": ".getcomment()" + }, + { + "label": ".setComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L114", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcomment", + "community": 0, + "norm_label": ".setcomment()" + }, + { + "label": ".getCreatedBy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L118", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedby", + "community": 0, + "norm_label": ".getcreatedby()" + }, + { + "label": ".setCreatedBy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L122", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedby", + "community": 0, + "norm_label": ".setcreatedby()" + }, + { + "label": ".getCreatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L126", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedat", + "community": 0, + "norm_label": ".getcreatedat()" + }, + { + "label": ".setCreatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L130", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedat", + "community": 0, + "norm_label": ".setcreatedat()" + }, + { + "label": "ScheduleParity.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleParity.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleparity", + "community": 87, + "norm_label": "scheduleparity.java" + }, + { + "label": "ScheduleParity", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleParity.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "community": 87, + "norm_label": "scheduleparity" + }, + { + "label": "ScheduleRule.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule", + "community": 6, + "norm_label": "schedulerule.java" + }, + { + "label": "ScheduleRule", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "community": 6, + "norm_label": "schedulerule" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_java_entity", + "community": 6, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_java_table", + "community": 6, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_java_long", + "community": 6, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_java_string", + "community": 6, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_java_localdate", + "community": 6, + "norm_label": "localdate" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "community": 6, + "norm_label": "integer" + }, + { + "label": "Set", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_java_set", + "community": 6, + "norm_label": "set" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L64", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getid", + "community": 6, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L68", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setid", + "community": 6, + "norm_label": ".setid()" + }, + { + "label": ".getSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L72", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsubject", + "community": 4, + "norm_label": ".getsubject()" + }, + { + "label": ".setSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L76", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsubject", + "community": 4, + "norm_label": ".setsubject()" + }, + { + "label": ".getSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L80", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsemester", + "community": 35, + "norm_label": ".getsemester()" + }, + { + "label": ".setSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L84", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsemester", + "community": 6, + "norm_label": ".setsemester()" + }, + { + "label": ".getStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getstatus", + "community": 6, + "norm_label": ".getstatus()" + }, + { + "label": ".setStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L92", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setstatus", + "community": 6, + "norm_label": ".setstatus()" + }, + { + "label": ".getValidFrom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L96", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidfrom", + "community": 6, + "norm_label": ".getvalidfrom()" + }, + { + "label": ".setValidFrom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L100", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidfrom", + "community": 6, + "norm_label": ".setvalidfrom()" + }, + { + "label": ".getValidTo()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L104", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidto", + "community": 6, + "norm_label": ".getvalidto()" + }, + { + "label": ".setValidTo()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L108", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidto", + "community": 6, + "norm_label": ".setvalidto()" + }, + { + "label": ".getLectureAcademicHours()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L112", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlectureacademichours", + "community": 6, + "norm_label": ".getlectureacademichours()" + }, + { + "label": ".setLectureAcademicHours()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L116", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlectureacademichours", + "community": 6, + "norm_label": ".setlectureacademichours()" + }, + { + "label": ".getLaboratoryAcademicHours()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L120", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratoryacademichours", + "community": 6, + "norm_label": ".getlaboratoryacademichours()" + }, + { + "label": ".setLaboratoryAcademicHours()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L124", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratoryacademichours", + "community": 6, + "norm_label": ".setlaboratoryacademichours()" + }, + { + "label": ".getPracticeAcademicHours()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L128", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticeacademichours", + "community": 6, + "norm_label": ".getpracticeacademichours()" + }, + { + "label": ".setPracticeAcademicHours()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L132", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticeacademichours", + "community": 6, + "norm_label": ".setpracticeacademichours()" + }, + { + "label": ".getLectureStartWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L136", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlecturestartweek", + "community": 6, + "norm_label": ".getlecturestartweek()" + }, + { + "label": ".setLectureStartWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L140", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlecturestartweek", + "community": 6, + "norm_label": ".setlecturestartweek()" + }, + { + "label": ".getLaboratoryStartWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L144", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratorystartweek", + "community": 6, + "norm_label": ".getlaboratorystartweek()" + }, + { + "label": ".setLaboratoryStartWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L148", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratorystartweek", + "community": 6, + "norm_label": ".setlaboratorystartweek()" + }, + { + "label": ".getPracticeStartWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L152", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticestartweek", + "community": 6, + "norm_label": ".getpracticestartweek()" + }, + { + "label": ".setPracticeStartWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L156", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticestartweek", + "community": 6, + "norm_label": ".setpracticestartweek()" + }, + { + "label": ".academicHoursFor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L160", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor", + "community": 6, + "norm_label": ".academichoursfor()" + }, + { + "label": ".startWeekFor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L168", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor", + "community": 6, + "norm_label": ".startweekfor()" + }, + { + "label": ".isActiveRecord()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L176", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", + "community": 6, + "norm_label": ".isactiverecord()" + }, + { + "label": "JsonIgnore", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_java_jsonignore", + "community": 6, + "norm_label": "jsonignore" + }, + { + "label": ".isArchivedRecord()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L181", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isarchivedrecord", + "community": 6, + "norm_label": ".isarchivedrecord()" + }, + { + "label": ".isActiveOn()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L186", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", + "community": 6, + "norm_label": ".isactiveon()" + }, + { + "label": ".archive()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L199", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_archive", + "community": 6, + "norm_label": ".archive()" + }, + { + "label": ".restore()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L203", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_restore", + "community": 6, + "norm_label": ".restore()" + }, + { + "label": ".valueOrZero()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L208", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", + "community": 6, + "norm_label": ".valueorzero()" + }, + { + "label": ".valueOrDefault()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L212", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", + "community": 6, + "norm_label": ".valueordefault()" + }, + { + "label": ".getGroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L216", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups", + "community": 6, + "norm_label": ".getgroups()" + }, + { + "label": ".setGroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L220", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setgroups", + "community": 6, + "norm_label": ".setgroups()" + }, + { + "label": ".getSlots()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L224", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots", + "community": 50, + "norm_label": ".getslots()" + }, + { + "label": ".setSlots()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L228", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setslots", + "community": 6, + "norm_label": ".setslots()" + }, + { + "label": "ScheduleRuleSlot.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot", + "community": 3, + "norm_label": "scheduleruleslot.java" + }, + { + "label": "ScheduleRuleSlot", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "community": 3, + "norm_label": "scheduleruleslot" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_entity", + "community": 3, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_table", + "community": 3, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_long", + "community": 3, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_integer", + "community": 3, + "norm_label": "integer" + }, + { + "label": "Set", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_set", + "community": 3, + "norm_label": "set" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_string", + "community": 3, + "norm_label": "string" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getid", + "community": 3, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setid", + "community": 3, + "norm_label": ".setid()" + }, + { + "label": ".getScheduleRule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule", + "community": 3, + "norm_label": ".getschedulerule()" + }, + { + "label": ".setScheduleRule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setschedulerule", + "community": 3, + "norm_label": ".setschedulerule()" + }, + { + "label": ".getDayOfWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getdayofweek", + "community": 3, + "norm_label": ".getdayofweek()" + }, + { + "label": ".setDayOfWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setdayofweek", + "community": 3, + "norm_label": ".setdayofweek()" + }, + { + "label": ".getParity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getparity", + "community": 87, + "norm_label": ".getparity()" + }, + { + "label": ".setParity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setparity", + "community": 87, + "norm_label": ".setparity()" + }, + { + "label": ".getTimeSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L87", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot", + "community": 3, + "norm_label": ".gettimeslot()" + }, + { + "label": ".setTimeSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L91", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_settimeslot", + "community": 3, + "norm_label": ".settimeslot()" + }, + { + "label": ".getSubgroupId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L95", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", + "community": 3, + "norm_label": ".getsubgroupid()" + }, + { + "label": ".getSubgroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L99", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", + "community": 75, + "norm_label": ".getsubgroup()" + }, + { + "label": ".setSubgroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L103", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroup", + "community": 75, + "norm_label": ".setsubgroup()" + }, + { + "label": ".getSubgroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L110", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups", + "community": 3, + "norm_label": ".getsubgroups()" + }, + { + "label": ".setSubgroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L114", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", + "community": 3, + "norm_label": ".setsubgroups()" + }, + { + "label": ".getSubgroupIds()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L121", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", + "community": 3, + "norm_label": ".getsubgroupids()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_list", + "community": 3, + "norm_label": "list" + }, + { + "label": ".getSubgroupNames()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L127", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", + "community": 3, + "norm_label": ".getsubgroupnames()" + }, + { + "label": ".getTeacher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L133", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getteacher", + "community": 10, + "norm_label": ".getteacher()" + }, + { + "label": ".setTeacher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L137", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setteacher", + "community": 10, + "norm_label": ".setteacher()" + }, + { + "label": ".getClassroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L141", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom", + "community": 3, + "norm_label": ".getclassroom()" + }, + { + "label": ".setClassroom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L145", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setclassroom", + "community": 3, + "norm_label": ".setclassroom()" + }, + { + "label": ".getLessonType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L149", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessontype", + "community": 16, + "norm_label": ".getlessontype()" + }, + { + "label": ".setLessonType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L153", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessontype", + "community": 16, + "norm_label": ".setlessontype()" + }, + { + "label": ".getLessonFormat()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L157", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessonformat", + "community": 3, + "norm_label": ".getlessonformat()" + }, + { + "label": ".setLessonFormat()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L161", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessonformat", + "community": 3, + "norm_label": ".setlessonformat()" + }, + { + "label": "Semester.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester", + "community": 35, + "norm_label": "semester.java" + }, + { + "label": "Semester", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester", + "community": 35, + "norm_label": "semester" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_java_entity", + "community": 35, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_java_table", + "community": 35, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_java_long", + "community": 35, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_java_localdate", + "community": 35, + "norm_label": "localdate" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_getid", + "community": 35, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_setid", + "community": 35, + "norm_label": ".setid()" + }, + { + "label": ".getAcademicYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_getacademicyear", + "community": 43, + "norm_label": ".getacademicyear()" + }, + { + "label": ".setAcademicYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_setacademicyear", + "community": 43, + "norm_label": ".setacademicyear()" + }, + { + "label": ".getSemesterType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L45", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_getsemestertype", + "community": 35, + "norm_label": ".getsemestertype()" + }, + { + "label": ".setSemesterType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L49", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_setsemestertype", + "community": 35, + "norm_label": ".setsemestertype()" + }, + { + "label": ".getStartDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_getstartdate", + "community": 35, + "norm_label": ".getstartdate()" + }, + { + "label": ".setStartDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L57", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_setstartdate", + "community": 35, + "norm_label": ".setstartdate()" + }, + { + "label": ".getEndDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L61", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_getenddate", + "community": 35, + "norm_label": ".getenddate()" + }, + { + "label": ".setEndDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L65", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semester_semester_setenddate", + "community": 35, + "norm_label": ".setenddate()" + }, + { + "label": "SemesterType.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SemesterType.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semestertype", + "community": 35, + "norm_label": "semestertype.java" + }, + { + "label": "SemesterType", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SemesterType.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "community": 35, + "norm_label": "semestertype" + }, + { + "label": "Speciality.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality", + "community": 92, + "norm_label": "speciality.java" + }, + { + "label": "Speciality", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "community": 36, + "norm_label": "speciality" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_java_entity", + "community": 36, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_java_table", + "community": 36, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_java_long", + "community": 36, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_java_string", + "community": 36, + "norm_label": "string" + }, + { + "label": ".Speciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", + "community": 36, + "norm_label": ".speciality()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getid", + "community": 36, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setid", + "community": 36, + "norm_label": ".setid()" + }, + { + "label": ".getSpecialityName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialityname", + "community": 36, + "norm_label": ".getspecialityname()" + }, + { + "label": ".setSpecialityName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialityname", + "community": 36, + "norm_label": ".setspecialityname()" + }, + { + "label": ".getSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialitycode", + "community": 36, + "norm_label": ".getspecialitycode()" + }, + { + "label": ".setSpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialitycode", + "community": 36, + "norm_label": ".setspecialitycode()" + }, + { + "label": "SpecialtyProfile.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile", + "community": 92, + "norm_label": "specialtyprofile.java" + }, + { + "label": "SpecialtyProfile", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "community": 33, + "norm_label": "specialtyprofile" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_entity", + "community": 33, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_table", + "community": 33, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_long", + "community": 33, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_string", + "community": 33, + "norm_label": "string" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getid", + "community": 33, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setid", + "community": 33, + "norm_label": ".setid()" + }, + { + "label": ".getSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getspeciality", + "community": 33, + "norm_label": ".getspeciality()" + }, + { + "label": ".setSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setspeciality", + "community": 33, + "norm_label": ".setspeciality()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getname", + "community": 33, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setname", + "community": 33, + "norm_label": ".setname()" + }, + { + "label": ".getDescription()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getdescription", + "community": 33, + "norm_label": ".getdescription()" + }, + { + "label": ".setDescription()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setdescription", + "community": 33, + "norm_label": ".setdescription()" + }, + { + "label": "StudentGroup.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup", + "community": 29, + "norm_label": "studentgroup.java" + }, + { + "label": "StudentGroup", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "community": 18, + "norm_label": "studentgroup" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_java_entity", + "community": 18, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_java_table", + "community": 18, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_java_long", + "community": 18, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_java_string", + "community": 18, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_java_integer", + "community": 18, + "norm_label": "integer" + }, + { + "label": ".StudentGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_studentgroup", + "community": 18, + "norm_label": ".studentgroup()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L40", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getid", + "community": 18, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setid", + "community": 18, + "norm_label": ".setid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L48", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getname", + "community": 18, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L52", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setname", + "community": 18, + "norm_label": ".setname()" + }, + { + "label": ".getGroupSize()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L56", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getgroupsize", + "community": 18, + "norm_label": ".getgroupsize()" + }, + { + "label": ".setGroupSize()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L60", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setgroupsize", + "community": 18, + "norm_label": ".setgroupsize()" + }, + { + "label": ".getEducationForm()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L64", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_geteducationform", + "community": 58, + "norm_label": ".geteducationform()" + }, + { + "label": ".setEducationForm()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L68", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_seteducationform", + "community": 25, + "norm_label": ".seteducationform()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L72", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getdepartmentid", + "community": 18, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L76", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setdepartmentid", + "community": 18, + "norm_label": ".setdepartmentid()" + }, + { + "label": ".getSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L80", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspeciality", + "community": 36, + "norm_label": ".getspeciality()" + }, + { + "label": ".setSpeciality()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L84", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspeciality", + "community": 36, + "norm_label": ".setspeciality()" + }, + { + "label": ".getSpecialtyProfile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspecialtyprofile", + "community": 33, + "norm_label": ".getspecialtyprofile()" + }, + { + "label": ".setSpecialtyProfile()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L92", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspecialtyprofile", + "community": 33, + "norm_label": ".setspecialtyprofile()" + }, + { + "label": ".getYearStartStudy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L96", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getyearstartstudy", + "community": 18, + "norm_label": ".getyearstartstudy()" + }, + { + "label": ".setYearStartStudy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L100", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setyearstartstudy", + "community": 18, + "norm_label": ".setyearstartstudy()" + }, + { + "label": "StudentGroupCalendarAssignment.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment", + "community": 44, + "norm_label": "studentgroupcalendarassignment.java" + }, + { + "label": "StudentGroupCalendarAssignment", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "community": 44, + "norm_label": "studentgroupcalendarassignment" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java_entity", + "community": 44, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java_table", + "community": 44, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java_long", + "community": 44, + "norm_label": "long" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L25", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getid", + "community": 44, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setid", + "community": 44, + "norm_label": ".setid()" + }, + { + "label": ".getStudentGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getstudentgroup", + "community": 44, + "norm_label": ".getstudentgroup()" + }, + { + "label": ".setStudentGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setstudentgroup", + "community": 44, + "norm_label": ".setstudentgroup()" + }, + { + "label": ".getAcademicYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademicyear", + "community": 44, + "norm_label": ".getacademicyear()" + }, + { + "label": ".setAcademicYear()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L45", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademicyear", + "community": 44, + "norm_label": ".setacademicyear()" + }, + { + "label": ".getAcademicCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L49", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademiccalendar", + "community": 44, + "norm_label": ".getacademiccalendar()" + }, + { + "label": ".setAcademicCalendar()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademiccalendar", + "community": 44, + "norm_label": ".setacademiccalendar()" + }, + { + "label": "StudentGroupStudyState.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate", + "community": 38, + "norm_label": "studentgroupstudystate.java" + }, + { + "label": "StudentGroupStudyState", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", + "community": 38, + "norm_label": "studentgroupstudystate" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_java_string", + "community": 38, + "norm_label": "string" + }, + { + "label": "getLabel()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_getlabel", + "community": 38, + "norm_label": "getlabel()" + }, + { + "label": "Subgroup.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup", + "community": 75, + "norm_label": "subgroup.java" + }, + { + "label": "Subgroup", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "community": 75, + "norm_label": "subgroup" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_java_entity", + "community": 75, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_java_table", + "community": 75, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_java_long", + "community": 75, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_java_string", + "community": 75, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_java_integer", + "community": 8, + "norm_label": "integer" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getid", + "community": 75, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setid", + "community": 75, + "norm_label": ".setid()" + }, + { + "label": ".getStudentGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentgroup", + "community": 75, + "norm_label": ".getstudentgroup()" + }, + { + "label": ".setStudentGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentgroup", + "community": 75, + "norm_label": ".setstudentgroup()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getname", + "community": 75, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setname", + "community": 75, + "norm_label": ".setname()" + }, + { + "label": ".getStudentCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentcapacity", + "community": 8, + "norm_label": ".getstudentcapacity()" + }, + { + "label": ".setStudentCapacity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentcapacity", + "community": 8, + "norm_label": ".setstudentcapacity()" + }, + { + "label": "Subject.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject", + "community": 92, + "norm_label": "subject.java" + }, + { + "label": "Subject", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject", + "community": 4, + "norm_label": "subject" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_java_entity", + "community": 4, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_java_table", + "community": 4, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_java_long", + "community": 4, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_java_string", + "community": 4, + "norm_label": "string" + }, + { + "label": ".Subject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_subject", + "community": 4, + "norm_label": ".subject()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_getid", + "community": 4, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_setid", + "community": 4, + "norm_label": ".setid()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L40", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_getname", + "community": 4, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_setname", + "community": 4, + "norm_label": ".setname()" + }, + { + "label": ".getCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L48", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_getcode", + "community": 4, + "norm_label": ".getcode()" + }, + { + "label": ".setCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L52", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_setcode", + "community": 4, + "norm_label": ".setcode()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L56", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_getdepartmentid", + "community": 4, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L60", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subject_subject_setdepartmentid", + "community": 4, + "norm_label": ".setdepartmentid()" + }, + { + "label": "SubjectComment.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment", + "community": 4, + "norm_label": "subjectcomment.java" + }, + { + "label": "SubjectComment", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "community": 4, + "norm_label": "subjectcomment" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_entity", + "community": 4, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_table", + "community": 4, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_long", + "community": 4, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_string", + "community": 4, + "norm_label": "string" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_localdatetime", + "community": 4, + "norm_label": "localdatetime" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getid", + "community": 4, + "norm_label": ".getid()" + }, + { + "label": ".getSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getsubject", + "community": 4, + "norm_label": ".getsubject()" + }, + { + "label": ".setSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setsubject", + "community": 4, + "norm_label": ".setsubject()" + }, + { + "label": ".getAuthor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getauthor", + "community": 4, + "norm_label": ".getauthor()" + }, + { + "label": ".setAuthor()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L45", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setauthor", + "community": 4, + "norm_label": ".setauthor()" + }, + { + "label": ".getComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L49", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcomment", + "community": 4, + "norm_label": ".getcomment()" + }, + { + "label": ".setComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcomment", + "community": 4, + "norm_label": ".setcomment()" + }, + { + "label": ".getCreatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L57", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcreatedat", + "community": 4, + "norm_label": ".getcreatedat()" + }, + { + "label": ".setCreatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L61", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcreatedat", + "community": 4, + "norm_label": ".setcreatedat()" + }, + { + "label": "TeacherCreationRequest.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest", + "community": 2, + "norm_label": "teachercreationrequest.java" + }, + { + "label": "TeacherCreationRequest", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "community": 2, + "norm_label": "teachercreationrequest" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_entity", + "community": 2, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_table", + "community": 2, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "community": 2, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "community": 2, + "norm_label": "string" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "community": 2, + "norm_label": "localdatetime" + }, + { + "label": ".touch()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L56", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_touch", + "community": 2, + "norm_label": ".touch()" + }, + { + "label": "PreUpdate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "preupdate", + "community": 2, + "norm_label": "preupdate" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L61", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getid", + "community": 2, + "norm_label": ".getid()" + }, + { + "label": ".getDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L65", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getdepartment", + "community": 24, + "norm_label": ".getdepartment()" + }, + { + "label": ".setDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L69", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setdepartment", + "community": 24, + "norm_label": ".setdepartment()" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L73", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getusername", + "community": 2, + "norm_label": ".getusername()" + }, + { + "label": ".setUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L77", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setusername", + "community": 2, + "norm_label": ".setusername()" + }, + { + "label": ".getFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L81", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getfullname", + "community": 2, + "norm_label": ".getfullname()" + }, + { + "label": ".setFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L85", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setfullname", + "community": 2, + "norm_label": ".setfullname()" + }, + { + "label": ".getJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L89", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getjobtitle", + "community": 2, + "norm_label": ".getjobtitle()" + }, + { + "label": ".setJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L93", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setjobtitle", + "community": 2, + "norm_label": ".setjobtitle()" + }, + { + "label": ".getComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L97", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcomment", + "community": 2, + "norm_label": ".getcomment()" + }, + { + "label": ".setComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L101", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcomment", + "community": 2, + "norm_label": ".setcomment()" + }, + { + "label": ".getStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L105", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getstatus", + "community": 2, + "norm_label": ".getstatus()" + }, + { + "label": ".setStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L109", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setstatus", + "community": 2, + "norm_label": ".setstatus()" + }, + { + "label": ".getRequestedBy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L113", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getrequestedby", + "community": 2, + "norm_label": ".getrequestedby()" + }, + { + "label": ".setRequestedBy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L117", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setrequestedby", + "community": 2, + "norm_label": ".setrequestedby()" + }, + { + "label": ".getCreatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L121", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedat", + "community": 2, + "norm_label": ".getcreatedat()" + }, + { + "label": ".setCreatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L125", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedat", + "community": 2, + "norm_label": ".setcreatedat()" + }, + { + "label": ".getUpdatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L129", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getupdatedat", + "community": 2, + "norm_label": ".getupdatedat()" + }, + { + "label": ".setUpdatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L133", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setupdatedat", + "community": 2, + "norm_label": ".setupdatedat()" + }, + { + "label": ".getReviewedBy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L137", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedby", + "community": 2, + "norm_label": ".getreviewedby()" + }, + { + "label": ".setReviewedBy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L141", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedby", + "community": 2, + "norm_label": ".setreviewedby()" + }, + { + "label": ".getReviewedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L145", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedat", + "community": 2, + "norm_label": ".getreviewedat()" + }, + { + "label": ".setReviewedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L149", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedat", + "community": 2, + "norm_label": ".setreviewedat()" + }, + { + "label": ".getReviewComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L153", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewcomment", + "community": 2, + "norm_label": ".getreviewcomment()" + }, + { + "label": ".setReviewComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L157", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewcomment", + "community": 2, + "norm_label": ".setreviewcomment()" + }, + { + "label": ".getCreatedTeacherId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L161", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedteacherid", + "community": 2, + "norm_label": ".getcreatedteacherid()" + }, + { + "label": ".setCreatedTeacherId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L165", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedteacherid", + "community": 2, + "norm_label": ".setcreatedteacherid()" + }, + { + "label": "TeacherCreationRequestStatus.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequestStatus.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus", + "community": 2, + "norm_label": "teachercreationrequeststatus.java" + }, + { + "label": "TeacherCreationRequestStatus", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequestStatus.java", + "source_location": "L3", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "community": 2, + "norm_label": "teachercreationrequeststatus" + }, + { + "label": "TeacherDepartmentAssignment.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment", + "community": 17, + "norm_label": "teacherdepartmentassignment.java" + }, + { + "label": "TeacherDepartmentAssignment", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "community": 17, + "norm_label": "teacherdepartmentassignment" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_entity", + "community": 17, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_table", + "community": 17, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_long", + "community": 17, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdate", + "community": 17, + "norm_label": "localdate" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_boolean", + "community": 28, + "norm_label": "boolean" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_string", + "community": 17, + "norm_label": "string" + }, + { + "label": "LocalDateTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdatetime", + "community": 17, + "norm_label": "localdatetime" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getid", + "community": 17, + "norm_label": ".getid()" + }, + { + "label": ".getTeacher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getteacher", + "community": 17, + "norm_label": ".getteacher()" + }, + { + "label": ".setTeacher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setteacher", + "community": 17, + "norm_label": ".setteacher()" + }, + { + "label": ".getDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getdepartment", + "community": 24, + "norm_label": ".getdepartment()" + }, + { + "label": ".setDepartment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setdepartment", + "community": 24, + "norm_label": ".setdepartment()" + }, + { + "label": ".getValidFrom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidfrom", + "community": 17, + "norm_label": ".getvalidfrom()" + }, + { + "label": ".setValidFrom()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L66", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidfrom", + "community": 17, + "norm_label": ".setvalidfrom()" + }, + { + "label": ".getValidTo()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L70", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidto", + "community": 17, + "norm_label": ".getvalidto()" + }, + { + "label": ".setValidTo()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L74", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidto", + "community": 17, + "norm_label": ".setvalidto()" + }, + { + "label": ".getPrimaryAssignment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L78", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment", + "community": 28, + "norm_label": ".getprimaryassignment()" + }, + { + "label": ".setPrimaryAssignment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L82", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment", + "community": 12, + "norm_label": ".setprimaryassignment()" + }, + { + "label": ".getComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L86", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcomment", + "community": 17, + "norm_label": ".getcomment()" + }, + { + "label": ".setComment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L90", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcomment", + "community": 17, + "norm_label": ".setcomment()" + }, + { + "label": ".getCreatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L94", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedat", + "community": 17, + "norm_label": ".getcreatedat()" + }, + { + "label": ".setCreatedAt()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L98", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedat", + "community": 17, + "norm_label": ".setcreatedat()" + }, + { + "label": ".getCreatedBy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L102", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedby", + "community": 17, + "norm_label": ".getcreatedby()" + }, + { + "label": ".setCreatedBy()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L106", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedby", + "community": 17, + "norm_label": ".setcreatedby()" + }, + { + "label": "TeacherSubject.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject", + "community": 4, + "norm_label": "teachersubject.java" + }, + { + "label": "TeacherSubject", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "community": 4, + "norm_label": "teachersubject" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_java_entity", + "community": 4, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_java_table", + "community": 4, + "norm_label": "table" + }, + { + "label": "IdClass", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "idclass", + "community": 4, + "norm_label": "idclass" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_java_long", + "community": 4, + "norm_label": "long" + }, + { + "label": ".TeacherSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_teachersubject", + "community": 4, + "norm_label": ".teachersubject()" + }, + { + "label": ".getUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuserid", + "community": 4, + "norm_label": ".getuserid()" + }, + { + "label": ".setUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setuserid", + "community": 4, + "norm_label": ".setuserid()" + }, + { + "label": ".getSubjectId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubjectid", + "community": 4, + "norm_label": ".getsubjectid()" + }, + { + "label": ".setSubjectId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L46", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setsubjectid", + "community": 4, + "norm_label": ".setsubjectid()" + }, + { + "label": ".getUser()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuser", + "community": 4, + "norm_label": ".getuser()" + }, + { + "label": ".getSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L54", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubject", + "community": 4, + "norm_label": ".getsubject()" + }, + { + "label": "TeacherSubjectId.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid", + "community": 105, + "norm_label": "teachersubjectid.java" + }, + { + "label": "TeacherSubjectId", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L6", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "community": 105, + "norm_label": "teachersubjectid" + }, + { + "label": "Serializable", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "serializable", + "community": 105, + "norm_label": "serializable" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_long", + "community": 105, + "norm_label": "long" + }, + { + "label": ".TeacherSubjectId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_teachersubjectid", + "community": 105, + "norm_label": ".teachersubjectid()" + }, + { + "label": ".getUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getuserid", + "community": 105, + "norm_label": ".getuserid()" + }, + { + "label": ".setUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setuserid", + "community": 105, + "norm_label": ".setuserid()" + }, + { + "label": ".getSubjectId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getsubjectid", + "community": 105, + "norm_label": ".getsubjectid()" + }, + { + "label": ".setSubjectId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setsubjectid", + "community": 105, + "norm_label": ".setsubjectid()" + }, + { + "label": ".equals()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals", + "community": 6, + "norm_label": ".equals()" + }, + { + "label": "Object", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_object", + "community": 6, + "norm_label": "object" + }, + { + "label": "Override", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_override", + "community": 116, + "norm_label": "override" + }, + { + "label": ".hashCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_hashcode", + "community": 116, + "norm_label": ".hashcode()" + }, + { + "label": "TimeSlot.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot", + "community": 52, + "norm_label": "timeslot.java" + }, + { + "label": "TimeSlot", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "community": 52, + "norm_label": "timeslot" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_java_entity", + "community": 52, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_java_table", + "community": 52, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_java_long", + "community": 52, + "norm_label": "long" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_java_integer", + "community": 52, + "norm_label": "integer" + }, + { + "label": "LocalTime", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_java_localtime", + "community": 52, + "norm_label": "localtime" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getid", + "community": 52, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setid", + "community": 52, + "norm_label": ".setid()" + }, + { + "label": ".getOrderNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber", + "community": 13, + "norm_label": ".getordernumber()" + }, + { + "label": ".setOrderNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setordernumber", + "community": 52, + "norm_label": ".setordernumber()" + }, + { + "label": ".getTimeSlotScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_gettimeslotscope", + "community": 34, + "norm_label": ".gettimeslotscope()" + }, + { + "label": ".setTimeSlotScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_settimeslotscope", + "community": 34, + "norm_label": ".settimeslotscope()" + }, + { + "label": ".getStartTime()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime", + "community": 52, + "norm_label": ".getstarttime()" + }, + { + "label": ".setStartTime()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setstarttime", + "community": 52, + "norm_label": ".setstarttime()" + }, + { + "label": ".getEndTime()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime", + "community": 52, + "norm_label": ".getendtime()" + }, + { + "label": ".setEndTime()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setendtime", + "community": 52, + "norm_label": ".setendtime()" + }, + { + "label": ".getDurationMinutes()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getdurationminutes", + "community": 52, + "norm_label": ".getdurationminutes()" + }, + { + "label": ".setDurationMinutes()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setdurationminutes", + "community": 52, + "norm_label": ".setdurationminutes()" + }, + { + "label": "TimeSlotDateAssignment.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment", + "community": 42, + "norm_label": "timeslotdateassignment.java" + }, + { + "label": "TimeSlotDateAssignment", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "community": 42, + "norm_label": "timeslotdateassignment" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_entity", + "community": 42, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_table", + "community": 42, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_long", + "community": 42, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_localdate", + "community": 42, + "norm_label": "localdate" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getid", + "community": 42, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setid", + "community": 42, + "norm_label": ".setid()" + }, + { + "label": ".getDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L30", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getdate", + "community": 42, + "norm_label": ".getdate()" + }, + { + "label": ".setDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setdate", + "community": 42, + "norm_label": ".setdate()" + }, + { + "label": ".getTimeSlotScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_gettimeslotscope", + "community": 42, + "norm_label": ".gettimeslotscope()" + }, + { + "label": ".setTimeSlotScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_settimeslotscope", + "community": 42, + "norm_label": ".settimeslotscope()" + }, + { + "label": "TimeSlotScope.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope", + "community": 34, + "norm_label": "timeslotscope.java" + }, + { + "label": "TimeSlotScope", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "community": 34, + "norm_label": "timeslotscope" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_entity", + "community": 34, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_table", + "community": 34, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_long", + "community": 34, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_string", + "community": 34, + "norm_label": "string" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_integer", + "community": 34, + "norm_label": "integer" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_boolean", + "community": 34, + "norm_label": "boolean" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L31", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getid", + "community": 34, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setid", + "community": 34, + "norm_label": ".setid()" + }, + { + "label": ".getCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getcode", + "community": 34, + "norm_label": ".getcode()" + }, + { + "label": ".setCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setcode", + "community": 34, + "norm_label": ".setcode()" + }, + { + "label": ".getName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getname", + "community": 34, + "norm_label": ".getname()" + }, + { + "label": ".setName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setname", + "community": 34, + "norm_label": ".setname()" + }, + { + "label": ".getApplyMode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode", + "community": 34, + "norm_label": ".getapplymode()" + }, + { + "label": ".setApplyMode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setapplymode", + "community": 34, + "norm_label": ".setapplymode()" + }, + { + "label": ".getDayOfWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdayofweek", + "community": 34, + "norm_label": ".getdayofweek()" + }, + { + "label": ".setDayOfWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdayofweek", + "community": 34, + "norm_label": ".setdayofweek()" + }, + { + "label": ".getSystemScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope", + "community": 41, + "norm_label": ".getsystemscope()" + }, + { + "label": ".setSystemScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setsystemscope", + "community": 34, + "norm_label": ".setsystemscope()" + }, + { + "label": ".getDisplayOrder()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdisplayorder", + "community": 34, + "norm_label": ".getdisplayorder()" + }, + { + "label": ".setDisplayOrder()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdisplayorder", + "community": 34, + "norm_label": ".setdisplayorder()" + }, + { + "label": "User.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user", + "community": 10, + "norm_label": "user.java" + }, + { + "label": "User", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L5", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user", + "community": 10, + "norm_label": "user" + }, + { + "label": "Entity", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_java_entity", + "community": 10, + "norm_label": "entity" + }, + { + "label": "Table", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_java_table", + "community": 10, + "norm_label": "table" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_java_long", + "community": 10, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_java_string", + "community": 10, + "norm_label": "string" + }, + { + "label": ".User()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_user", + "community": 10, + "norm_label": ".user()" + }, + { + "label": ".getId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_getid", + "community": 10, + "norm_label": ".getid()" + }, + { + "label": ".setId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L39", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_setid", + "community": 10, + "norm_label": ".setid()" + }, + { + "label": ".getUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_getusername", + "community": 10, + "norm_label": ".getusername()" + }, + { + "label": ".setUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_setusername", + "community": 10, + "norm_label": ".setusername()" + }, + { + "label": ".getPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L51", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_getpassword", + "community": 10, + "norm_label": ".getpassword()" + }, + { + "label": ".setPassword()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L55", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_setpassword", + "community": 10, + "norm_label": ".setpassword()" + }, + { + "label": ".getRole()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_getrole", + "community": 10, + "norm_label": ".getrole()" + }, + { + "label": ".setRole()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_setrole", + "community": 10, + "norm_label": ".setrole()" + }, + { + "label": ".getFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_getfullname", + "community": 10, + "norm_label": ".getfullname()" + }, + { + "label": ".setFullName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_setfullname", + "community": 10, + "norm_label": ".setfullname()" + }, + { + "label": ".getJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L75", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_getjobtitle", + "community": 10, + "norm_label": ".getjobtitle()" + }, + { + "label": ".setJobTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_setjobtitle", + "community": 10, + "norm_label": ".setjobtitle()" + }, + { + "label": ".getDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_getdepartmentid", + "community": 10, + "norm_label": ".getdepartmentid()" + }, + { + "label": ".setDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L87", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_model_user_user_setdepartmentid", + "community": 10, + "norm_label": ".setdepartmentid()" + }, + { + "label": "AcademicCalendarActivityTypeRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository", + "community": 95, + "norm_label": "academiccalendaractivitytyperepository.java" + }, + { + "label": "AcademicCalendarActivityTypeRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "community": 95, + "norm_label": "academiccalendaractivitytyperepository" + }, + { + "label": "JpaRepository", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "jparepository", + "community": 7, + "norm_label": "jparepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_long", + "community": 95, + "norm_label": "long" + }, + { + "label": ".findAllByOrderByDisplayOrderAscCodeAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc", + "community": 95, + "norm_label": ".findallbyorderbydisplayorderasccodeasc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_list", + "community": 95, + "norm_label": "list" + }, + { + "label": ".findByCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", + "community": 95, + "norm_label": ".findbycode()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_string", + "community": 95, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_optional", + "community": 95, + "norm_label": "optional" + }, + { + "label": "AcademicCalendarDayRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "community": 76, + "norm_label": "academiccalendardayrepository.java" + }, + { + "label": "AcademicCalendarDayRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "community": 76, + "norm_label": "academiccalendardayrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_long", + "community": 76, + "norm_label": "long" + }, + { + "label": ".findByCalendarIdWithActivity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", + "community": 76, + "norm_label": ".findbycalendaridwithactivity()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_list", + "community": 76, + "norm_label": "list" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_query", + "community": 76, + "norm_label": "query" + }, + { + "label": ".findByCalendarIdAndCourseNumberAndDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L24", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", + "community": 76, + "norm_label": ".findbycalendaridandcoursenumberanddate()" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_integer", + "community": 76, + "norm_label": "integer" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_localdate", + "community": 76, + "norm_label": "localdate" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_optional", + "community": 76, + "norm_label": "optional" + }, + { + "label": ".existsByActivityTypeId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L38", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_existsbyactivitytypeid", + "community": 76, + "norm_label": ".existsbyactivitytypeid()" + }, + { + "label": ".deleteByCalendarId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L40", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", + "community": 76, + "norm_label": ".deletebycalendarid()" + }, + { + "label": "Modifying", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "modifying", + "community": 76, + "norm_label": "modifying" + }, + { + "label": "AcademicCalendarRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository", + "community": 106, + "norm_label": "academiccalendarrepository.java" + }, + { + "label": "AcademicCalendarRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "community": 106, + "norm_label": "academiccalendarrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_long", + "community": 106, + "norm_label": "long" + }, + { + "label": ".countByStudyFormId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_countbystudyformid", + "community": 106, + "norm_label": ".countbystudyformid()" + }, + { + "label": ".findAllWithDetails()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", + "community": 106, + "norm_label": ".findallwithdetails()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_list", + "community": 106, + "norm_label": "list" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_query", + "community": 106, + "norm_label": "query" + }, + { + "label": ".findByIdWithDetails()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", + "community": 106, + "norm_label": ".findbyidwithdetails()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_optional", + "community": 106, + "norm_label": "optional" + }, + { + "label": "AcademicCalendarSubjectRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository", + "community": 20, + "norm_label": "academiccalendarsubjectrepository.java" + }, + { + "label": "AcademicCalendarSubjectRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "community": 20, + "norm_label": "academiccalendarsubjectrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_long", + "community": 20, + "norm_label": "long" + }, + { + "label": ".findByCalendarIdWithSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", + "community": 20, + "norm_label": ".findbycalendaridwithsubject()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_list", + "community": 20, + "norm_label": "list" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_query", + "community": 20, + "norm_label": "query" + }, + { + "label": ".findByCalendarIdInWithSubject()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", + "community": 20, + "norm_label": ".findbycalendaridinwithsubject()" + }, + { + "label": "Collection", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_collection", + "community": 20, + "norm_label": "collection" + }, + { + "label": ".deleteByAcademicCalendar_Id()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_deletebyacademiccalendar_id", + "community": 20, + "norm_label": ".deletebyacademiccalendar_id()" + }, + { + "label": "AcademicYearRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academicyearrepository", + "community": 43, + "norm_label": "academicyearrepository.java" + }, + { + "label": "AcademicYearRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "community": 25, + "norm_label": "academicyearrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_java_long", + "community": 25, + "norm_label": "long" + }, + { + "label": ".findByTitle()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", + "community": 43, + "norm_label": ".findbytitle()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_java_string", + "community": 43, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_java_optional", + "community": 43, + "norm_label": "optional" + }, + { + "label": "AuthRefreshTokenRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository", + "community": 5, + "norm_label": "authrefreshtokenrepository.java" + }, + { + "label": "AuthRefreshTokenRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "community": 5, + "norm_label": "authrefreshtokenrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java_long", + "community": 5, + "norm_label": "long" + }, + { + "label": ".findByTokenHash()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", + "community": 5, + "norm_label": ".findbytokenhash()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java_string", + "community": 5, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java_optional", + "community": 5, + "norm_label": "optional" + }, + { + "label": "ClassroomRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_classroomrepository", + "community": 7, + "norm_label": "classroomrepository.java" + }, + { + "label": "ClassroomRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "community": 7, + "norm_label": "classroomrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_long", + "community": 7, + "norm_label": "long" + }, + { + "label": ".findByName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", + "community": 7, + "norm_label": ".findbyname()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_string", + "community": 7, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_optional", + "community": 7, + "norm_label": "optional" + }, + { + "label": ".findByStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", + "community": 7, + "norm_label": ".findbystatusnot()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_list", + "community": 7, + "norm_label": "list" + }, + { + "label": "DepartmentRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "community": 7, + "norm_label": "departmentrepository.java" + }, + { + "label": "DepartmentRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "community": 24, + "norm_label": "departmentrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_long", + "community": 45, + "norm_label": "long" + }, + { + "label": ".findByDepartmentName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", + "community": 45, + "norm_label": ".findbydepartmentname()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_string", + "community": 24, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_optional", + "community": 45, + "norm_label": "optional" + }, + { + "label": ".findByDepartmentCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", + "community": 45, + "norm_label": ".findbydepartmentcode()" + }, + { + "label": ".findByStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", + "community": 24, + "norm_label": ".findbystatusnot()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_list", + "community": 24, + "norm_label": "list" + }, + { + "label": "EducationFormRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_educationformrepository", + "community": 29, + "norm_label": "educationformrepository.java" + }, + { + "label": "EducationFormRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "community": 29, + "norm_label": "educationformrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_long", + "community": 29, + "norm_label": "long" + }, + { + "label": ".findByName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", + "community": 29, + "norm_label": ".findbyname()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_string", + "community": 29, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_optional", + "community": 29, + "norm_label": "optional" + }, + { + "label": ".findAllByOrderByNameAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc", + "community": 29, + "norm_label": ".findallbyorderbynameasc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_list", + "community": 29, + "norm_label": "list" + }, + { + "label": "EquipmentRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_equipmentrepository", + "community": 26, + "norm_label": "equipmentrepository.java" + }, + { + "label": "EquipmentRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "community": 26, + "norm_label": "equipmentrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_long", + "community": 26, + "norm_label": "long" + }, + { + "label": ".findByName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", + "community": 26, + "norm_label": ".findbyname()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_string", + "community": 26, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_optional", + "community": 26, + "norm_label": "optional" + }, + { + "label": ".findByStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", + "community": 26, + "norm_label": ".findbystatusnot()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_list", + "community": 26, + "norm_label": "list" + }, + { + "label": "GroupRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository", + "community": 18, + "norm_label": "grouprepository.java" + }, + { + "label": "GroupRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "community": 18, + "norm_label": "grouprepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_long", + "community": 18, + "norm_label": "long" + }, + { + "label": ".findByEducationFormId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", + "community": 18, + "norm_label": ".findbyeducationformid()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_list", + "community": 18, + "norm_label": "list" + }, + { + "label": ".findByDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", + "community": 18, + "norm_label": ".findbydepartmentid()" + }, + { + "label": ".findByStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", + "community": 18, + "norm_label": ".findbystatusnot()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_string", + "community": 18, + "norm_label": "string" + }, + { + "label": ".findByDepartmentIdAndStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", + "community": 18, + "norm_label": ".findbydepartmentidandstatusnot()" + }, + { + "label": "LessonTypesRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository", + "community": 16, + "norm_label": "lessontypesrepository.java" + }, + { + "label": "LessonTypesRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", + "source_location": "L6", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "community": 16, + "norm_label": "lessontypesrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_java_long", + "community": 16, + "norm_label": "long" + }, + { + "label": "ScheduleOverrideRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "community": 0, + "norm_label": "scheduleoverriderepository.java" + }, + { + "label": "ScheduleOverrideRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "community": 0, + "norm_label": "scheduleoverriderepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_long", + "community": 0, + "norm_label": "long" + }, + { + "label": ".findByLessonDateBetweenWithDetails()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", + "community": 0, + "norm_label": ".findbylessondatebetweenwithdetails()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_localdate", + "community": 0, + "norm_label": "localdate" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_list", + "community": 0, + "norm_label": "list" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_query", + "community": 0, + "norm_label": "query" + }, + { + "label": ".findByBaseRuleSlotIdAndLessonDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L28", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", + "community": 0, + "norm_label": ".findbybaseruleslotidandlessondate()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_optional", + "community": 0, + "norm_label": "optional" + }, + { + "label": "ScheduleRuleRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository", + "community": 97, + "norm_label": "schedulerulerepository.java" + }, + { + "label": "ScheduleRuleRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "community": 97, + "norm_label": "schedulerulerepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_long", + "community": 97, + "norm_label": "long" + }, + { + "label": ".findByGroupIdAndSemesterId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", + "community": 97, + "norm_label": ".findbygroupidandsemesterid()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_list", + "community": 97, + "norm_label": "list" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_query", + "community": 97, + "norm_label": "query" + }, + { + "label": ".findByTeacherIdAndSemesterId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", + "community": 97, + "norm_label": ".findbyteacheridandsemesterid()" + }, + { + "label": ".findAllWithDetails()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L60", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", + "community": 97, + "norm_label": ".findallwithdetails()" + }, + { + "label": ".findByIdWithDetails()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L79", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", + "community": 97, + "norm_label": ".findbyidwithdetails()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_optional", + "community": 97, + "norm_label": "optional" + }, + { + "label": "ScheduleRuleSlotRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository", + "community": 8, + "norm_label": "scheduleruleslotrepository.java" + }, + { + "label": "ScheduleRuleSlotRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "community": 8, + "norm_label": "scheduleruleslotrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java_long", + "community": 8, + "norm_label": "long" + }, + { + "label": ".existsBySubgroupId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid", + "community": 8, + "norm_label": ".existsbysubgroupid()" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java_query", + "community": 8, + "norm_label": "query" + }, + { + "label": "SemesterRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository", + "community": 35, + "norm_label": "semesterrepository.java" + }, + { + "label": "SemesterRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "community": 35, + "norm_label": "semesterrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_long", + "community": 35, + "norm_label": "long" + }, + { + "label": ".findFirstByStartDateLessThanEqualAndEndDateGreaterThanEqual()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", + "community": 35, + "norm_label": ".findfirstbystartdatelessthanequalandenddategreaterthanequal()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_localdate", + "community": 35, + "norm_label": "localdate" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_optional", + "community": 35, + "norm_label": "optional" + }, + { + "label": ".findByAcademicYearIdOrderByStartDateAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", + "community": 35, + "norm_label": ".findbyacademicyearidorderbystartdateasc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_list", + "community": 35, + "norm_label": "list" + }, + { + "label": ".findByAcademicYearIdAndSemesterType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", + "community": 35, + "norm_label": ".findbyacademicyearidandsemestertype()" + }, + { + "label": "SpecialtiesRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository", + "community": 36, + "norm_label": "specialtiesrepository.java" + }, + { + "label": "SpecialtiesRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "community": 36, + "norm_label": "specialtiesrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_long", + "community": 36, + "norm_label": "long" + }, + { + "label": ".findBySpecialityName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", + "community": 36, + "norm_label": ".findbyspecialityname()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_string", + "community": 36, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_optional", + "community": 36, + "norm_label": "optional" + }, + { + "label": ".findBySpecialityCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", + "community": 36, + "norm_label": ".findbyspecialitycode()" + }, + { + "label": ".findByStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", + "community": 36, + "norm_label": ".findbystatusnot()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_list", + "community": 36, + "norm_label": "list" + }, + { + "label": "SpecialtyProfileRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository", + "community": 33, + "norm_label": "specialtyprofilerepository.java" + }, + { + "label": "SpecialtyProfileRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "community": 33, + "norm_label": "specialtyprofilerepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_long", + "community": 33, + "norm_label": "long" + }, + { + "label": ".findBySpecialityIdOrderByNameAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", + "community": 33, + "norm_label": ".findbyspecialityidorderbynameasc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_list", + "community": 33, + "norm_label": "list" + }, + { + "label": ".findBySpecialityIdAndName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", + "community": 33, + "norm_label": ".findbyspecialityidandname()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_string", + "community": 33, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_optional", + "community": 33, + "norm_label": "optional" + }, + { + "label": "StudentGroupCalendarAssignmentRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository", + "community": 44, + "norm_label": "studentgroupcalendarassignmentrepository.java" + }, + { + "label": "StudentGroupCalendarAssignmentRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "community": 44, + "norm_label": "studentgroupcalendarassignmentrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_long", + "community": 44, + "norm_label": "long" + }, + { + "label": ".findByGroupIdWithDetails()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", + "community": 44, + "norm_label": ".findbygroupidwithdetails()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_list", + "community": 44, + "norm_label": "list" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_query", + "community": 44, + "norm_label": "query" + }, + { + "label": ".findByGroupIdAndAcademicYearIdWithDetails()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", + "community": 44, + "norm_label": ".findbygroupidandacademicyearidwithdetails()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_optional", + "community": 44, + "norm_label": "optional" + }, + { + "label": ".findForSchedule()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", + "community": 44, + "norm_label": ".findforschedule()" + }, + { + "label": "SubgroupRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository", + "community": 8, + "norm_label": "subgrouprepository.java" + }, + { + "label": "SubgroupRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "community": 8, + "norm_label": "subgrouprepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_long", + "community": 8, + "norm_label": "long" + }, + { + "label": ".findAllWithGroupsOrderByGroupNameAndName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", + "community": 8, + "norm_label": ".findallwithgroupsorderbygroupnameandname()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_list", + "community": 8, + "norm_label": "list" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "community": 8, + "norm_label": "query" + }, + { + "label": ".findByStudentGroupIdOrderByNameAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", + "community": 8, + "norm_label": ".findbystudentgroupidorderbynameasc()" + }, + { + "label": ".findByIdAndStudentGroupId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", + "community": 8, + "norm_label": ".findbyidandstudentgroupid()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_optional", + "community": 8, + "norm_label": "optional" + }, + { + "label": ".existsByStudentGroupIdAndNameIgnoreCase()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", + "community": 8, + "norm_label": ".existsbystudentgroupidandnameignorecase()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_string", + "community": 8, + "norm_label": "string" + }, + { + "label": ".sumActiveStudentCapacityByGroupId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", + "community": 8, + "norm_label": ".sumactivestudentcapacitybygroupid()" + }, + { + "label": ".sumActiveStudentCapacityByGroupIdExcludingId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", + "community": 8, + "norm_label": ".sumactivestudentcapacitybygroupidexcludingid()" + }, + { + "label": ".countActiveByGroupIdExcludingId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L68", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", + "community": 8, + "norm_label": ".countactivebygroupidexcludingid()" + }, + { + "label": "SubjectCommentRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository", + "community": 7, + "norm_label": "subjectcommentrepository.java" + }, + { + "label": "SubjectCommentRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "community": 7, + "norm_label": "subjectcommentrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java_long", + "community": 7, + "norm_label": "long" + }, + { + "label": ".findBySubjectIdOrderByCreatedAtDesc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", + "community": 7, + "norm_label": ".findbysubjectidorderbycreatedatdesc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java_list", + "community": 7, + "norm_label": "list" + }, + { + "label": "SubjectRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository", + "community": 7, + "norm_label": "subjectrepository.java" + }, + { + "label": "SubjectRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "community": 7, + "norm_label": "subjectrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_long", + "community": 4, + "norm_label": "long" + }, + { + "label": ".findByName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", + "community": 7, + "norm_label": ".findbyname()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_string", + "community": 4, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_optional", + "community": 7, + "norm_label": "optional" + }, + { + "label": ".findByDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", + "community": 4, + "norm_label": ".findbydepartmentid()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_list", + "community": 4, + "norm_label": "list" + }, + { + "label": ".findByStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", + "community": 4, + "norm_label": ".findbystatusnot()" + }, + { + "label": ".findByDepartmentIdAndStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", + "community": 4, + "norm_label": ".findbydepartmentidandstatusnot()" + }, + { + "label": "TeacherCreationRequestRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository", + "community": 2, + "norm_label": "teachercreationrequestrepository.java" + }, + { + "label": "TeacherCreationRequestRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "community": 2, + "norm_label": "teachercreationrequestrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_long", + "community": 2, + "norm_label": "long" + }, + { + "label": ".findByDepartment_IdOrderByCreatedAtDesc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", + "community": 2, + "norm_label": ".findbydepartment_idorderbycreatedatdesc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_list", + "community": 2, + "norm_label": "list" + }, + { + "label": ".findByStatusOrderByCreatedAtDesc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", + "community": 2, + "norm_label": ".findbystatusorderbycreatedatdesc()" + }, + { + "label": ".findAllByOrderByCreatedAtDesc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc", + "community": 2, + "norm_label": ".findallbyorderbycreatedatdesc()" + }, + { + "label": ".existsByUsernameAndStatus()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus", + "community": 2, + "norm_label": ".existsbyusernameandstatus()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_string", + "community": 2, + "norm_label": "string" + }, + { + "label": "TeacherDepartmentAssignmentRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "community": 17, + "norm_label": "teacherdepartmentassignmentrepository.java" + }, + { + "label": "TeacherDepartmentAssignmentRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "community": 17, + "norm_label": "teacherdepartmentassignmentrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_long", + "community": 17, + "norm_label": "long" + }, + { + "label": ".findHistoryByTeacherId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", + "community": 17, + "norm_label": ".findhistorybyteacherid()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_list", + "community": 17, + "norm_label": "list" + }, + { + "label": "Query", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_query", + "community": 17, + "norm_label": "query" + }, + { + "label": ".findOpenPrimaryByTeacherId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L24", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", + "community": 17, + "norm_label": ".findopenprimarybyteacherid()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_optional", + "community": 17, + "norm_label": "optional" + }, + { + "label": ".findDepartmentTeachersAtDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", + "community": 17, + "norm_label": ".finddepartmentteachersatdate()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_localdate", + "community": 17, + "norm_label": "localdate" + }, + { + "label": ".existsActiveAssignment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L50", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", + "community": 17, + "norm_label": ".existsactiveassignment()" + }, + { + "label": "TeacherSubjectRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository", + "community": 7, + "norm_label": "teachersubjectrepository.java" + }, + { + "label": "TeacherSubjectRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "community": 7, + "norm_label": "teachersubjectrepository" + }, + { + "label": ".findByUserId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", + "community": 4, + "norm_label": ".findbyuserid()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java_long", + "community": 4, + "norm_label": "long" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java_list", + "community": 4, + "norm_label": "list" + }, + { + "label": ".findBySubjectId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", + "community": 4, + "norm_label": ".findbysubjectid()" + }, + { + "label": "TimeSlotDateAssignmentRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository", + "community": 42, + "norm_label": "timeslotdateassignmentrepository.java" + }, + { + "label": "TimeSlotDateAssignmentRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "community": 42, + "norm_label": "timeslotdateassignmentrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_long", + "community": 42, + "norm_label": "long" + }, + { + "label": ".findByDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", + "community": 42, + "norm_label": ".findbydate()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_localdate", + "community": 42, + "norm_label": "localdate" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_optional", + "community": 42, + "norm_label": "optional" + }, + { + "label": ".findAllByOrderByDateAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc", + "community": 42, + "norm_label": ".findallbyorderbydateasc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_list", + "community": 42, + "norm_label": "list" + }, + { + "label": ".findByDateBetweenOrderByDateAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", + "community": 42, + "norm_label": ".findbydatebetweenorderbydateasc()" + }, + { + "label": ".existsByTimeSlotScopeId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_existsbytimeslotscopeid", + "community": 42, + "norm_label": ".existsbytimeslotscopeid()" + }, + { + "label": "TimeSlotRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository", + "community": 98, + "norm_label": "timeslotrepository.java" + }, + { + "label": "TimeSlotRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "community": 98, + "norm_label": "timeslotrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_long", + "community": 98, + "norm_label": "long" + }, + { + "label": ".findAllByOrderByTimeSlotScopeDisplayOrderAscOrderNumberAscStartTimeAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc", + "community": 98, + "norm_label": ".findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_list", + "community": 98, + "norm_label": "list" + }, + { + "label": ".findAllByTimeSlotScopeIdOrderByOrderNumberAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", + "community": 98, + "norm_label": ".findallbytimeslotscopeidorderbyordernumberasc()" + }, + { + "label": ".findByTimeSlotScopeIdAndOrderNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", + "community": 98, + "norm_label": ".findbytimeslotscopeidandordernumber()" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_integer", + "community": 98, + "norm_label": "integer" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_optional", + "community": 98, + "norm_label": "optional" + }, + { + "label": ".existsByTimeSlotScopeId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_existsbytimeslotscopeid", + "community": 98, + "norm_label": ".existsbytimeslotscopeid()" + }, + { + "label": "TimeSlotScopeRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository", + "community": 73, + "norm_label": "timeslotscoperepository.java" + }, + { + "label": "TimeSlotScopeRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "community": 73, + "norm_label": "timeslotscoperepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_long", + "community": 73, + "norm_label": "long" + }, + { + "label": ".findAllByOrderByDisplayOrderAscNameAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc", + "community": 73, + "norm_label": ".findallbyorderbydisplayorderascnameasc()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_list", + "community": 73, + "norm_label": "list" + }, + { + "label": ".findByCode()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L13", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", + "community": 73, + "norm_label": ".findbycode()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_string", + "community": 73, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_optional", + "community": 73, + "norm_label": "optional" + }, + { + "label": ".findFirstByApplyModeOrderByDisplayOrderAsc()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", + "community": 73, + "norm_label": ".findfirstbyapplymodeorderbydisplayorderasc()" + }, + { + "label": ".findByApplyModeAndDayOfWeek()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", + "community": 73, + "norm_label": ".findbyapplymodeanddayofweek()" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_integer", + "community": 73, + "norm_label": "integer" + }, + { + "label": "UserRepository.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository", + "community": 7, + "norm_label": "userrepository.java" + }, + { + "label": "UserRepository", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "community": 7, + "norm_label": "userrepository" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_java_long", + "community": 10, + "norm_label": "long" + }, + { + "label": ".findByUsername()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L12", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", + "community": 10, + "norm_label": ".findbyusername()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_java_string", + "community": 10, + "norm_label": "string" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_java_optional", + "community": 10, + "norm_label": "optional" + }, + { + "label": ".findByRole()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", + "community": 10, + "norm_label": ".findbyrole()" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_java_list", + "community": 10, + "norm_label": "list" + }, + { + "label": ".findByRoleAndDepartmentId()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", + "community": 10, + "norm_label": ".findbyroleanddepartmentid()" + }, + { + "label": ".findByStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", + "community": 10, + "norm_label": ".findbystatusnot()" + }, + { + "label": ".findByRoleAndStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", + "community": 10, + "norm_label": ".findbyroleandstatusnot()" + }, + { + "label": ".findByRoleAndDepartmentIdAndStatusNot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", + "community": 10, + "norm_label": ".findbyroleanddepartmentidandstatusnot()" + }, + { + "label": "AcademicDateService.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice", + "community": 94, + "norm_label": "academicdateservice.java" + }, + { + "label": "AcademicDateService", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "community": 94, + "norm_label": "academicdateservice" + }, + { + "label": "Service", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_service", + "community": 94, + "norm_label": "service" + }, + { + "label": ".AcademicDateService()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", + "community": 76, + "norm_label": ".academicdateservice()" + }, + { + "label": ".findSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L32", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", + "community": 13, + "norm_label": ".findsemester()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_localdate", + "community": 94, + "norm_label": "localdate" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_optional", + "community": 94, + "norm_label": "optional" + }, + { + "label": ".getWeekNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", + "community": 94, + "norm_label": ".getweeknumber()" + }, + { + "label": ".getParity()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", + "community": 94, + "norm_label": ".getparity()" + }, + { + "label": ".getCourseNumber()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", + "community": 94, + "norm_label": ".getcoursenumber()" + }, + { + "label": ".getActivityType()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L58", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "community": 94, + "norm_label": ".getactivitytype()" + }, + { + "label": ".isTheoryDay()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L77", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", + "community": 94, + "norm_label": ".istheoryday()" + }, + { + "label": ".hasCalendarAssignment()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L83", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", + "community": 94, + "norm_label": ".hascalendarassignment()" + }, + { + "label": "ScheduleGeneratorService.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "community": 13, + "norm_label": "schedulegeneratorservice.java" + }, + { + "label": "ScheduleGeneratorService", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "community": 13, + "norm_label": "schedulegeneratorservice" + }, + { + "label": "Service", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_service", + "community": 13, + "norm_label": "service" + }, + { + "label": "Logger", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_logger", + "community": 13, + "norm_label": "logger" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "community": 13, + "norm_label": "string" + }, + { + "label": ".ScheduleGeneratorService()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "community": 73, + "norm_label": ".schedulegeneratorservice()" + }, + { + "label": ".buildScheduleForGroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "community": 13, + "norm_label": ".buildscheduleforgroup()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_long", + "community": 13, + "norm_label": "long" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "community": 13, + "norm_label": "localdate" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "community": 13, + "norm_label": "list" + }, + { + "label": ".buildScheduleForTeacher()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L96", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "community": 13, + "norm_label": ".buildscheduleforteacher()" + }, + { + "label": ".clearCache()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L130", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache", + "community": 15, + "norm_label": ".clearcache()" + }, + { + "label": ".validateRange()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L135", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", + "community": 13, + "norm_label": ".validaterange()" + }, + { + "label": ".sortRules()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L147", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", + "community": 13, + "norm_label": ".sortrules()" + }, + { + "label": ".sortRenderedLessons()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L155", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", + "community": 13, + "norm_label": ".sortrenderedlessons()" + }, + { + "label": ".primeConsumedHoursBeforeRange()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "community": 13, + "norm_label": ".primeconsumedhoursbeforerange()" + }, + { + "label": "Map", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_map", + "community": 13, + "norm_label": "map" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_integer", + "community": 13, + "norm_label": "integer" + }, + { + "label": ".minDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L183", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", + "community": 13, + "norm_label": ".mindate()" + }, + { + "label": ".processRuleForDate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "community": 13, + "norm_label": ".processrulefordate()" + }, + { + "label": ".eligibleGroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L297", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "community": 13, + "norm_label": ".eligiblegroups()" + }, + { + "label": ".consumptionBucket()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L311", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", + "community": 13, + "norm_label": ".consumptionbucket()" + }, + { + "label": ".consumptionProgressKey()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L315", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "community": 13, + "norm_label": ".consumptionprogresskey()" + }, + { + "label": ".lessonScopesForSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L325", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "community": 13, + "norm_label": ".lessonscopesforslot()" + }, + { + "label": "LessonScope", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L353", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", + "community": 13, + "norm_label": "lessonscope" + }, + { + "label": "ActiveLessonScope", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L356", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_activelessonscope", + "community": 13, + "norm_label": "activelessonscope" + }, + { + "label": ".toRenderedLesson()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "community": 13, + "norm_label": ".torenderedlesson()" + }, + { + "label": ".formatSubgroup()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L414", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", + "community": 13, + "norm_label": ".formatsubgroup()" + }, + { + "label": ".resolveEffectiveTimeSlot()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L418", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", + "community": 13, + "norm_label": ".resolveeffectivetimeslot()" + }, + { + "label": ".effectiveScope()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L429", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", + "community": 13, + "norm_label": ".effectivescope()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_optional", + "community": 13, + "norm_label": "optional" + }, + { + "label": ".dayName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L437", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", + "community": 13, + "norm_label": ".dayname()" + }, + { + "label": "DayOfWeek", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "dayofweek", + "community": 13, + "norm_label": "dayofweek" + }, + { + "label": ".displayUserName()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L442", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", + "community": 13, + "norm_label": ".displayusername()" + }, + { + "label": "ScheduleQueryService.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "community": 1, + "norm_label": "schedulequeryservice.java" + }, + { + "label": "ScheduleQueryService", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L15", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "community": 1, + "norm_label": "schedulequeryservice" + }, + { + "label": "Service", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_service", + "community": 1, + "norm_label": "service" + }, + { + "label": ".ScheduleQueryService()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L26", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", + "community": 0, + "norm_label": ".schedulequeryservice()" + }, + { + "label": ".search()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "community": 1, + "norm_label": ".search()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_long", + "community": 1, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_string", + "community": 1, + "norm_label": "string" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_localdate", + "community": 1, + "norm_label": "localdate" + }, + { + "label": "List", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_list", + "community": 1, + "norm_label": "list" + }, + { + "label": ".applyOverrides()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L67", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "community": 1, + "norm_label": ".applyoverrides()" + }, + { + "label": ".applyOverride()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "community": 0, + "norm_label": ".applyoverride()" + }, + { + "label": ".overrideKey()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L144", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", + "community": 1, + "norm_label": ".overridekey()" + }, + { + "label": ".validateRange()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L148", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", + "community": 1, + "norm_label": ".validaterange()" + }, + { + "label": ".resolveGroups()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L160", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "community": 1, + "norm_label": ".resolvegroups()" + }, + { + "label": ".deduplicate()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L183", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", + "community": 1, + "norm_label": ".deduplicate()" + }, + { + "label": ".lessonKey()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L198", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", + "community": 1, + "norm_label": ".lessonkey()" + }, + { + "label": ".sortedSignature()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L210", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", + "community": 1, + "norm_label": ".sortedsignature()" + }, + { + "label": "MutableLesson", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L220", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "community": 1, + "norm_label": "mutablelesson" + }, + { + "label": "LinkedHashSet", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_linkedhashset", + "community": 1, + "norm_label": "linkedhashset" + }, + { + "label": ".MutableLesson()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L227", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_mutablelesson", + "community": 1, + "norm_label": ".mutablelesson()" + }, + { + "label": ".merge()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L231", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", + "community": 1, + "norm_label": ".merge()" + }, + { + "label": ".toDto()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L246", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", + "community": 3, + "norm_label": ".todto()" + }, + { + "label": "StudentGroupLifecycleService.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "community": 38, + "norm_label": "studentgrouplifecycleservice.java" + }, + { + "label": "StudentGroupLifecycleService", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "community": 38, + "norm_label": "studentgrouplifecycleservice" + }, + { + "label": "Service", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_service", + "community": 38, + "norm_label": "service" + }, + { + "label": ".StudentGroupLifecycleService()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_studentgrouplifecycleservice", + "community": 44, + "norm_label": ".studentgrouplifecycleservice()" + }, + { + "label": ".isAvailableForSelection()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", + "community": 38, + "norm_label": ".isavailableforselection()" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_localdate", + "community": 38, + "norm_label": "localdate" + }, + { + "label": ".mayHaveScheduleInRange()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L30", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", + "community": 38, + "norm_label": ".mayhavescheduleinrange()" + }, + { + "label": ".getStudyState()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L43", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", + "community": 38, + "norm_label": ".getstudystate()" + }, + { + "label": ".hasStarted()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L59", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", + "community": 38, + "norm_label": ".hasstarted()" + }, + { + "label": ".isGraduatedOn()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "community": 38, + "norm_label": ".isgraduatedon()" + }, + { + "label": "Optional", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_optional", + "community": 38, + "norm_label": "optional" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_integer", + "community": 38, + "norm_label": "integer" + }, + { + "label": ".resolveCourseLimit()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L72", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "community": 38, + "norm_label": ".resolvecourselimit()" + }, + { + "label": "CourseAndSemesterCalculator.java", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator", + "community": 58, + "norm_label": "courseandsemestercalculator.java" + }, + { + "label": "CourseAndSemesterCalculator", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", + "community": 58, + "norm_label": "courseandsemestercalculator" + }, + { + "label": "Service", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_service", + "community": 58, + "norm_label": "service" + }, + { + "label": ".getActualCourse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", + "community": 58, + "norm_label": ".getactualcourse()" + }, + { + "label": "Integer", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_integer", + "community": 58, + "norm_label": "integer" + }, + { + "label": "LocalDate", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_localdate", + "community": 58, + "norm_label": "localdate" + }, + { + "label": ".getActualSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L24", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", + "community": 58, + "norm_label": ".getactualsemester()" + }, + { + "label": ".getFutureCourse()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", + "community": 58, + "norm_label": ".getfuturecourse()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_string", + "community": 58, + "norm_label": "string" + }, + { + "label": ".getFutureSemester()", + "file_type": "code", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L47", + "_origin": "ast", + "id": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", + "community": 58, + "norm_label": ".getfuturesemester()" + }, + { + "label": "JwtTokenServiceTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest", + "community": 39, + "norm_label": "jwttokenservicetest.java" + }, + { + "label": "JwtTokenServiceTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "community": 39, + "norm_label": "jwttokenservicetest" + }, + { + "label": ".authenticatesValidTokenForSameTenant()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", + "community": 39, + "norm_label": ".authenticatesvalidtokenforsametenant()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_test", + "community": 39, + "norm_label": "test" + }, + { + "label": ".rejectsTokenForDifferentTenant()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L36", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", + "community": 39, + "norm_label": ".rejectstokenfordifferenttenant()" + }, + { + "label": ".rejectsTokenWithDifferentSignature()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L44", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", + "community": 39, + "norm_label": ".rejectstokenwithdifferentsignature()" + }, + { + "label": ".rejectsExpiredToken()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", + "community": 39, + "norm_label": ".rejectsexpiredtoken()" + }, + { + "label": ".expiredToken()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", + "community": 39, + "norm_label": ".expiredtoken()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_string", + "community": 39, + "norm_label": "string" + }, + { + "label": ".properties()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L85", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "community": 39, + "norm_label": ".properties()" + }, + { + "label": "Duration", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_duration", + "community": 39, + "norm_label": "duration" + }, + { + "label": ".user()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L93", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", + "community": 39, + "norm_label": ".user()" + }, + { + "label": "RefreshTokenServiceTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest", + "community": 5, + "norm_label": "refreshtokenservicetest.java" + }, + { + "label": "RefreshTokenServiceTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "community": 5, + "norm_label": "refreshtokenservicetest" + }, + { + "label": ".storesOnlyTokenHash()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L23", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "community": 5, + "norm_label": ".storesonlytokenhash()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java_test", + "community": 5, + "norm_label": "test" + }, + { + "label": ".rotatesRefreshTokenAndRejectsReplay()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "community": 5, + "norm_label": ".rotatesrefreshtokenandrejectsreplay()" + }, + { + "label": ".rejectsTokenFromDifferentTenant()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L62", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", + "community": 5, + "norm_label": ".rejectstokenfromdifferenttenant()" + }, + { + "label": ".logoutRevokesActiveToken()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L73", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "community": 5, + "norm_label": ".logoutrevokesactivetoken()" + }, + { + "label": ".properties()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L88", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", + "community": 5, + "norm_label": ".properties()" + }, + { + "label": ".activeToken()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L94", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "community": 5, + "norm_label": ".activetoken()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java_string", + "community": 5, + "norm_label": "string" + }, + { + "label": ".user()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L104", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", + "community": 5, + "norm_label": ".user()" + }, + { + "label": "TenantConfigWatcherTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest", + "community": 116, + "norm_label": "tenantconfigwatchertest.java" + }, + { + "label": "TenantConfigWatcherTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L7", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest", + "community": 116, + "norm_label": "tenantconfigwatchertest" + }, + { + "label": ".configHashUsesSha256Hex()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", + "community": 116, + "norm_label": ".confighashusessha256hex()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_java_test", + "community": 116, + "norm_label": "test" + }, + { + "label": ".configHashChangesWhenContentChanges()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L18", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", + "community": 116, + "norm_label": ".confighashchangeswhencontentchanges()" + }, + { + "label": "AuthControllerTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_authcontrollertest", + "community": 28, + "norm_label": "authcontrollertest.java" + }, + { + "label": "AuthControllerTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L14", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest", + "community": 28, + "norm_label": "authcontrollertest" + }, + { + "label": ".clearAuthContext()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L16", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_clearauthcontext", + "community": 28, + "norm_label": ".clearauthcontext()" + }, + { + "label": "AfterEach", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_java_aftereach", + "community": 28, + "norm_label": "aftereach" + }, + { + "label": ".meAllowsNullDepartmentId()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", + "community": 28, + "norm_label": ".meallowsnulldepartmentid()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_java_test", + "community": 28, + "norm_label": "test" + }, + { + "label": "DepartmentWorkspaceControllerTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "community": 7, + "norm_label": "departmentworkspacecontrollertest.java" + }, + { + "label": "DepartmentWorkspaceControllerTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L33", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", + "community": 28, + "norm_label": "departmentworkspacecontrollertest" + }, + { + "label": ".clearAuthContext()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L35", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_clearauthcontext", + "community": 28, + "norm_label": ".clearauthcontext()" + }, + { + "label": "AfterEach", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_aftereach", + "community": 28, + "norm_label": "aftereach" + }, + { + "label": ".commentsRejectSubjectWithoutDepartmentForDepartmentUserWithoutNpe()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L40", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", + "community": 28, + "norm_label": ".commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_test", + "community": 28, + "norm_label": "test" + }, + { + "label": ".teachersUseAssignmentsAndFallbackWithoutDuplicates()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L63", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", + "community": 28, + "norm_label": ".teachersuseassignmentsandfallbackwithoutduplicates()" + }, + { + "label": ".departmentCanAddExistingTeacherAsSecondaryAssignment()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L89", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "community": 28, + "norm_label": ".departmentcanaddexistingteacherassecondaryassignment()" + }, + { + "label": ".assignment()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L122", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", + "community": 28, + "norm_label": ".assignment()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_long", + "community": 28, + "norm_label": "long" + }, + { + "label": ".user()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L131", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", + "community": 28, + "norm_label": ".user()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_string", + "community": 28, + "norm_label": "string" + }, + { + "label": "UserControllerTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "community": 10, + "norm_label": "usercontrollertest.java" + }, + { + "label": "UserControllerTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest", + "community": 10, + "norm_label": "usercontrollertest" + }, + { + "label": ".teachersUseUnifiedUserResponseMapping()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", + "community": 10, + "norm_label": ".teachersuseunifieduserresponsemapping()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_java_test", + "community": 10, + "norm_label": "test" + }, + { + "label": ".user()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L53", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", + "community": 10, + "norm_label": ".user()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_java_long", + "community": 10, + "norm_label": "long" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_java_string", + "community": 10, + "norm_label": "string" + }, + { + "label": "WorkloadControllerTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "community": 7, + "norm_label": "workloadcontrollertest.java" + }, + { + "label": "WorkloadControllerTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest", + "community": 121, + "norm_label": "workloadcontrollertest" + }, + { + "label": ".freeClassroomsSkipsNullAvailabilityWithoutNpe()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L22", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", + "community": 121, + "norm_label": ".freeclassroomsskipsnullavailabilitywithoutnpe()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java_test", + "community": 121, + "norm_label": "test" + }, + { + "label": ".classroom()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L42", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", + "community": 121, + "norm_label": ".classroom()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java_long", + "community": 121, + "norm_label": "long" + }, + { + "label": "Boolean", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java_boolean", + "community": 121, + "norm_label": "boolean" + }, + { + "label": "LifecycleEntityTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest", + "community": 27, + "norm_label": "lifecycleentitytest.java" + }, + { + "label": "LifecycleEntityTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", + "community": 27, + "norm_label": "lifecycleentitytest" + }, + { + "label": ".archivedEntityIsNotActiveOnDateWithoutActiveTo()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", + "community": 27, + "norm_label": ".archivedentityisnotactiveondatewithoutactiveto()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java_test", + "community": 27, + "norm_label": "test" + }, + { + "label": ".archivedEntityRemainsActiveForHistoricalDatesBeforeActiveTo()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", + "community": 27, + "norm_label": ".archivedentityremainsactiveforhistoricaldatesbeforeactiveto()" + }, + { + "label": ".activeEntityUsesDateRange()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L29", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", + "community": 27, + "norm_label": ".activeentityusesdaterange()" + }, + { + "label": "ScheduleLessonCategoryTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest", + "community": 16, + "norm_label": "schedulelessoncategorytest.java" + }, + { + "label": "ScheduleLessonCategoryTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L8", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", + "community": 16, + "norm_label": "schedulelessoncategorytest" + }, + { + "label": ".mapsCanonicalLessonTypes()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L10", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", + "community": 16, + "norm_label": ".mapscanonicallessontypes()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java_test", + "community": 16, + "norm_label": "test" + }, + { + "label": ".rejectsAmbiguousLessonType()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L20", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", + "community": 16, + "norm_label": ".rejectsambiguouslessontype()" + }, + { + "label": ".rejectsUnsupportedLessonType()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", + "community": 16, + "norm_label": ".rejectsunsupportedlessontype()" + }, + { + "label": ".lessonType()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L34", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", + "community": 16, + "norm_label": ".lessontype()" + }, + { + "label": "String", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java_string", + "community": 16, + "norm_label": "string" + }, + { + "label": "ScheduleRuleTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_scheduleruletest", + "community": 6, + "norm_label": "scheduleruletest.java" + }, + { + "label": "ScheduleRuleTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest", + "community": 6, + "norm_label": "scheduleruletest" + }, + { + "label": ".activeOnUsesStatusAndValidityRange()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", + "community": 6, + "norm_label": ".activeonusesstatusandvalidityrange()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_scheduleruletest_java_test", + "community": 6, + "norm_label": "test" + }, + { + "label": ".archiveAndRestoreToggleStatus()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L27", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", + "community": 6, + "norm_label": ".archiveandrestoretogglestatus()" + }, + { + "label": "ScheduleQueryServiceTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest", + "community": 18, + "norm_label": "schedulequeryservicetest.java" + }, + { + "label": "ScheduleQueryServiceTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", + "community": 18, + "norm_label": "schedulequeryservicetest" + }, + { + "label": ".rejectsTooBroadGroupSearch()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L21", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", + "community": 18, + "norm_label": ".rejectstoobroadgroupsearch()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java_test", + "community": 18, + "norm_label": "test" + }, + { + "label": ".teacherSearchDoesNotLoadAllGroups()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L45", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", + "community": 18, + "norm_label": ".teachersearchdoesnotloadallgroups()" + }, + { + "label": ".group()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L71", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", + "community": 18, + "norm_label": ".group()" + }, + { + "label": "StudentGroupLifecycleServiceTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest", + "community": 38, + "norm_label": "studentgrouplifecycleservicetest.java" + }, + { + "label": "StudentGroupLifecycleServiceTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L17", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", + "community": 38, + "norm_label": "studentgrouplifecycleservicetest" + }, + { + "label": ".futureGroupIsSelectableButDoesNotHaveScheduleBeforeStudyStart()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", + "community": 38, + "norm_label": ".futuregroupisselectablebutdoesnothaveschedulebeforestudystart()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java_test", + "community": 38, + "norm_label": "test" + }, + { + "label": ".groupAfterCalendarCourseLimitIsGraduatedAndUnavailableForSelection()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L30", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", + "community": 38, + "norm_label": ".groupaftercalendarcourselimitisgraduatedandunavailableforselection()" + }, + { + "label": ".serviceWithAssignments()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L41", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", + "community": 38, + "norm_label": ".servicewithassignments()" + }, + { + "label": ".group()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L48", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", + "community": 38, + "norm_label": ".group()" + }, + { + "label": "Long", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java_long", + "community": 38, + "norm_label": "long" + }, + { + "label": ".assignment()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L56", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", + "community": 38, + "norm_label": ".assignment()" + }, + { + "label": "CourseAndSemesterCalculatorTest.java", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L1", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest", + "community": 58, + "norm_label": "courseandsemestercalculatortest.java" + }, + { + "label": "CourseAndSemesterCalculatorTest", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L9", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest", + "community": 58, + "norm_label": "courseandsemestercalculatortest" + }, + { + "label": ".courseAndSemesterAreZeroBeforeStudyStart()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L11", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", + "community": 58, + "norm_label": ".courseandsemesterarezerobeforestudystart()" + }, + { + "label": "Test", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java_test", + "community": 58, + "norm_label": "test" + }, + { + "label": ".septemberStartsFirstCourseAndFirstSemester()", + "file_type": "code", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L19", + "_origin": "ast", + "id": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", + "community": 58, + "norm_label": ".septemberstartsfirstcourseandfirstsemester()" + }, + { + "label": "api.js", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_api", + "community": 66, + "norm_label": "api.js" + }, + { + "label": "AUTH_KEYS", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L3", + "_origin": "ast", + "id": "frontend_admin_js_api_auth_keys", + "community": 66, + "norm_label": "auth_keys" + }, + { + "label": "getToken()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L5", + "_origin": "ast", + "id": "frontend_admin_js_api_gettoken", + "community": 66, + "norm_label": "gettoken()" + }, + { + "label": "isAuthenticatedAsAdmin()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L9", + "_origin": "ast", + "id": "frontend_admin_js_api_isauthenticatedasadmin", + "community": 66, + "norm_label": "isauthenticatedasadmin()" + }, + { + "label": "isAuthenticatedAsRole()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L14", + "_origin": "ast", + "id": "frontend_admin_js_api_isauthenticatedasrole", + "community": 66, + "norm_label": "isauthenticatedasrole()" + }, + { + "label": "isAuthenticatedAsAny()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L19", + "_origin": "ast", + "id": "frontend_admin_js_api_isauthenticatedasany", + "community": 66, + "norm_label": "isauthenticatedasany()" + }, + { + "label": "getHeaders()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L24", + "_origin": "ast", + "id": "frontend_admin_js_api_getheaders", + "community": 66, + "norm_label": "getheaders()" + }, + { + "label": "apiFetch()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L36", + "_origin": "ast", + "id": "frontend_admin_js_api_apifetch", + "community": 66, + "norm_label": "apifetch()" + }, + { + "label": "refreshAccessToken()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L75", + "_origin": "ast", + "id": "frontend_admin_js_api_refreshaccesstoken", + "community": 66, + "norm_label": "refreshaccesstoken()" + }, + { + "label": "cache", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L98", + "_origin": "ast", + "id": "frontend_admin_js_api_cache", + "community": 66, + "norm_label": "cache" + }, + { + "label": "CACHABLE_PREFIXES", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L100", + "_origin": "ast", + "id": "frontend_admin_js_api_cachable_prefixes", + "community": 66, + "norm_label": "cachable_prefixes" + }, + { + "label": "invalidateCache()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L109", + "_origin": "ast", + "id": "frontend_admin_js_api_invalidatecache", + "community": 66, + "norm_label": "invalidatecache()" + }, + { + "label": "clearCache()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L137", + "_origin": "ast", + "id": "frontend_admin_js_api_clearcache", + "community": 66, + "norm_label": "clearcache()" + }, + { + "label": "logout()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L141", + "_origin": "ast", + "id": "frontend_admin_js_api_logout", + "community": 66, + "norm_label": "logout()" + }, + { + "label": "storeAuthState()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L155", + "_origin": "ast", + "id": "frontend_admin_js_api_storeauthstate", + "community": 66, + "norm_label": "storeauthstate()" + }, + { + "label": "clearAuthState()", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L166", + "_origin": "ast", + "id": "frontend_admin_js_api_clearauthstate", + "community": 66, + "norm_label": "clearauthstate()" + }, + { + "label": "api", + "file_type": "code", + "source_file": "frontend/admin/js/api.js", + "source_location": "L170", + "_origin": "ast", + "id": "frontend_admin_js_api_api", + "community": 14, + "norm_label": "api" + }, + { + "label": "dropdown.js", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_dropdown", + "community": 56, + "norm_label": "dropdown.js" + }, + { + "label": "CustomSelect", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L3", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect", + "community": 107, + "norm_label": "customselect" + }, + { + "label": ".constructor()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect_constructor", + "community": 107, + "norm_label": ".constructor()" + }, + { + "label": ".init()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L47", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect_init", + "community": 107, + "norm_label": ".init()" + }, + { + "label": ".rebuildMenu()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L98", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect_rebuildmenu", + "community": 107, + "norm_label": ".rebuildmenu()" + }, + { + "label": ".syncTriggerText()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L162", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect_synctriggertext", + "community": 107, + "norm_label": ".synctriggertext()" + }, + { + "label": ".handleTriggerClick()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L195", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect_handletriggerclick", + "community": 107, + "norm_label": ".handletriggerclick()" + }, + { + "label": ".closeAll()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L229", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect_closeall", + "community": 107, + "norm_label": ".closeall()" + }, + { + "label": ".close()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L238", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect_close", + "community": 107, + "norm_label": ".close()" + }, + { + "label": ".handleItemClick()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L244", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_customselect_handleitemclick", + "community": 107, + "norm_label": ".handleitemclick()" + }, + { + "label": "initAllCustomDropdowns()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L257", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_initallcustomdropdowns", + "community": 56, + "norm_label": "initallcustomdropdowns()" + }, + { + "label": "refreshCustomDropdowns()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L264", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_refreshcustomdropdowns", + "community": 56, + "norm_label": "refreshcustomdropdowns()" + }, + { + "label": "startDropdownAutoObserver()", + "file_type": "code", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L281", + "_origin": "ast", + "id": "frontend_admin_js_dropdown_startdropdownautoobserver", + "community": 56, + "norm_label": "startdropdownautoobserver()" + }, + { + "label": "main.js", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_main", + "community": 32, + "norm_label": "main.js" + }, + { + "label": "AUTHORIZED_ROLES", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L10", + "_origin": "ast", + "id": "frontend_admin_js_main_authorized_roles", + "community": 32, + "norm_label": "authorized_roles" + }, + { + "label": "currentRole", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L11", + "_origin": "ast", + "id": "frontend_admin_js_main_currentrole", + "community": 32, + "norm_label": "currentrole" + }, + { + "label": "ROUTES", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L24", + "_origin": "ast", + "id": "frontend_admin_js_main_routes", + "community": 32, + "norm_label": "routes" + }, + { + "label": "ROLE_NAVIGATION", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L123", + "_origin": "ast", + "id": "frontend_admin_js_main_role_navigation", + "community": 32, + "norm_label": "role_navigation" + }, + { + "label": "appContent", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L145", + "_origin": "ast", + "id": "frontend_admin_js_main_appcontent", + "community": 32, + "norm_label": "appcontent" + }, + { + "label": "pageTitle", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L146", + "_origin": "ast", + "id": "frontend_admin_js_main_pagetitle", + "community": 32, + "norm_label": "pagetitle" + }, + { + "label": "navItems", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L147", + "_origin": "ast", + "id": "frontend_admin_js_main_navitems", + "community": 32, + "norm_label": "navitems" + }, + { + "label": "sidebar", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L148", + "_origin": "ast", + "id": "frontend_admin_js_main_sidebar", + "community": 32, + "norm_label": "sidebar" + }, + { + "label": "sidebarOverlay", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L149", + "_origin": "ast", + "id": "frontend_admin_js_main_sidebaroverlay", + "community": 32, + "norm_label": "sidebaroverlay" + }, + { + "label": "menuToggle", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L150", + "_origin": "ast", + "id": "frontend_admin_js_main_menutoggle", + "community": 32, + "norm_label": "menutoggle" + }, + { + "label": "sidebarCloseBtn", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L151", + "_origin": "ast", + "id": "frontend_admin_js_main_sidebarclosebtn", + "community": 32, + "norm_label": "sidebarclosebtn" + }, + { + "label": "btnLogout", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L152", + "_origin": "ast", + "id": "frontend_admin_js_main_btnlogout", + "community": 32, + "norm_label": "btnlogout" + }, + { + "label": "main", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L153", + "_origin": "ast", + "id": "frontend_admin_js_main_main", + "community": 32, + "norm_label": "main" + }, + { + "label": "teacherRequestsNavBadge", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L154", + "_origin": "ast", + "id": "frontend_admin_js_main_teacherrequestsnavbadge", + "community": 32, + "norm_label": "teacherrequestsnavbadge" + }, + { + "label": "teacherRequestsTitleBadge", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L155", + "_origin": "ast", + "id": "frontend_admin_js_main_teacherrequeststitlebadge", + "community": 32, + "norm_label": "teacherrequeststitlebadge" + }, + { + "label": "allowedTabs", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L157", + "_origin": "ast", + "id": "frontend_admin_js_main_allowedtabs", + "community": 32, + "norm_label": "allowedtabs" + }, + { + "label": "settingsDropdown", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L201", + "_origin": "ast", + "id": "frontend_admin_js_main_settingsdropdown", + "community": 32, + "norm_label": "settingsdropdown" + }, + { + "label": "btnSettings", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L202", + "_origin": "ast", + "id": "frontend_admin_js_main_btnsettings", + "community": 32, + "norm_label": "btnsettings" + }, + { + "label": "switchTab()", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L234", + "_origin": "ast", + "id": "frontend_admin_js_main_switchtab", + "community": 32, + "norm_label": "switchtab()" + }, + { + "label": "configureRoleInterface()", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L270", + "_origin": "ast", + "id": "frontend_admin_js_main_configureroleinterface", + "community": 32, + "norm_label": "configureroleinterface()" + }, + { + "label": "refreshTeacherRequestBadge()", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L289", + "_origin": "ast", + "id": "frontend_admin_js_main_refreshteacherrequestbadge", + "community": 32, + "norm_label": "refreshteacherrequestbadge()" + }, + { + "label": "updateTeacherRequestBadge()", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L304", + "_origin": "ast", + "id": "frontend_admin_js_main_updateteacherrequestbadge", + "community": 32, + "norm_label": "updateteacherrequestbadge()" + }, + { + "label": "requestCountLabel()", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L313", + "_origin": "ast", + "id": "frontend_admin_js_main_requestcountlabel", + "community": 32, + "norm_label": "requestcountlabel()" + }, + { + "label": "hashTab", + "file_type": "code", + "source_file": "frontend/admin/js/main.js", + "source_location": "L325", + "_origin": "ast", + "id": "frontend_admin_js_main_hashtab", + "community": 32, + "norm_label": "hashtab" + }, + { + "label": "otel.js", + "file_type": "code", + "source_file": "frontend/admin/js/otel.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_otel", + "community": 130, + "norm_label": "otel.js" + }, + { + "label": "provider", + "file_type": "code", + "source_file": "frontend/admin/js/otel.js", + "source_location": "L11", + "_origin": "ast", + "id": "frontend_admin_js_otel_provider", + "community": 130, + "norm_label": "provider" + }, + { + "label": "traceExporter", + "file_type": "code", + "source_file": "frontend/admin/js/otel.js", + "source_location": "L19", + "_origin": "ast", + "id": "frontend_admin_js_otel_traceexporter", + "community": 130, + "norm_label": "traceexporter" + }, + { + "label": "utils.js", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_utils", + "community": 14, + "norm_label": "utils.js" + }, + { + "label": "ESCAPE_MAP", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_utils_escape_map", + "community": 14, + "norm_label": "escape_map" + }, + { + "label": "escapeHtml()", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L9", + "_origin": "ast", + "id": "frontend_admin_js_utils_escapehtml", + "community": 14, + "norm_label": "escapehtml()" + }, + { + "label": "showAlert()", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L14", + "_origin": "ast", + "id": "frontend_admin_js_utils_showalert", + "community": 14, + "norm_label": "showalert()" + }, + { + "label": "hideAlert()", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L21", + "_origin": "ast", + "id": "frontend_admin_js_utils_hidealert", + "community": 14, + "norm_label": "hidealert()" + }, + { + "label": "applyRippleEffect()", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L28", + "_origin": "ast", + "id": "frontend_admin_js_utils_applyrippleeffect", + "community": 32, + "norm_label": "applyrippleeffect()" + }, + { + "label": "initMultiSelect()", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L53", + "_origin": "ast", + "id": "frontend_admin_js_utils_initmultiselect", + "community": 89, + "norm_label": "initmultiselect()" + }, + { + "label": "updateSelectText()", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L83", + "_origin": "ast", + "id": "frontend_admin_js_utils_updateselecttext", + "community": 89, + "norm_label": "updateselecttext()" + }, + { + "label": "closeAllDropdownsOnOutsideClick()", + "file_type": "code", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L97", + "_origin": "ast", + "id": "frontend_admin_js_utils_closealldropdownsonoutsideclick", + "community": 32, + "norm_label": "closealldropdownsonoutsideclick()" + }, + { + "label": "academic-calendar.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_academic_calendar", + "community": 14, + "norm_label": "academic-calendar.js" + }, + { + "label": "DAY_OPTIONS", + "file_type": "code", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_academic_calendar_day_options", + "community": 14, + "norm_label": "day_options" + }, + { + "label": "SEMESTER_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L14", + "_origin": "ast", + "id": "frontend_admin_js_views_academic_calendar_semester_labels", + "community": 14, + "norm_label": "semester_labels" + }, + { + "label": "initAcademicCalendar()", + "file_type": "code", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L19", + "_origin": "ast", + "id": "frontend_admin_js_views_academic_calendar_initacademiccalendar", + "community": 14, + "norm_label": "initacademiccalendar()" + }, + { + "label": "auditorium-workload.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_auditorium_workload", + "community": 89, + "norm_label": "auditorium-workload.js" + }, + { + "label": "WORKLOAD_TARGETS", + "file_type": "code", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L14", + "_origin": "ast", + "id": "frontend_admin_js_views_auditorium_workload_workload_targets", + "community": 89, + "norm_label": "workload_targets" + }, + { + "label": "DAY_SHORT_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L44", + "_origin": "ast", + "id": "frontend_admin_js_views_auditorium_workload_day_short_labels", + "community": 89, + "norm_label": "day_short_labels" + }, + { + "label": "DAY_FULL_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L54", + "_origin": "ast", + "id": "frontend_admin_js_views_auditorium_workload_day_full_labels", + "community": 89, + "norm_label": "day_full_labels" + }, + { + "label": "DAY_ORDER", + "file_type": "code", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L64", + "_origin": "ast", + "id": "frontend_admin_js_views_auditorium_workload_day_order", + "community": 89, + "norm_label": "day_order" + }, + { + "label": "CELL_PARITY_LAYOUT", + "file_type": "code", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L66", + "_origin": "ast", + "id": "frontend_admin_js_views_auditorium_workload_cell_parity_layout", + "community": 89, + "norm_label": "cell_parity_layout" + }, + { + "label": "initAuditoriumWorkload()", + "file_type": "code", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L71", + "_origin": "ast", + "id": "frontend_admin_js_views_auditorium_workload_initauditoriumworkload", + "community": 9, + "norm_label": "initauditoriumworkload()" + }, + { + "label": "classrooms.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_classrooms", + "community": 89, + "norm_label": "classrooms.js" + }, + { + "label": "fetchEquipments()", + "file_type": "code", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_classrooms_fetchequipments", + "community": 89, + "norm_label": "fetchequipments()" + }, + { + "label": "renderEquipmentCheckboxes()", + "file_type": "code", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L13", + "_origin": "ast", + "id": "frontend_admin_js_views_classrooms_renderequipmentcheckboxes", + "community": 89, + "norm_label": "renderequipmentcheckboxes()" + }, + { + "label": "initClassrooms()", + "file_type": "code", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L34", + "_origin": "ast", + "id": "frontend_admin_js_views_classrooms_initclassrooms", + "community": 89, + "norm_label": "initclassrooms()" + }, + { + "label": "dashboard.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_dashboard", + "community": 14, + "norm_label": "dashboard.js" + }, + { + "label": "initDashboard()", + "file_type": "code", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_dashboard_initdashboard", + "community": 14, + "norm_label": "initdashboard()" + }, + { + "label": "department-workspace.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace", + "community": 71, + "norm_label": "department-workspace.js" + }, + { + "label": "initDepartmentWorkspace()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L6", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_initdepartmentworkspace", + "community": 71, + "norm_label": "initdepartmentworkspace()" + }, + { + "label": "loadDepartments()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L477", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_loaddepartments", + "community": 71, + "norm_label": "loaddepartments()" + }, + { + "label": "fillSelect()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L487", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_fillselect", + "community": 71, + "norm_label": "fillselect()" + }, + { + "label": "setDefaultDates()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L494", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_setdefaultdates", + "community": 71, + "norm_label": "setdefaultdates()" + }, + { + "label": "toIsoDate()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L502", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_toisodate", + "community": 71, + "norm_label": "toisodate()" + }, + { + "label": "formatDateTime()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L506", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_formatdatetime", + "community": 71, + "norm_label": "formatdatetime()" + }, + { + "label": "subjectCountLabel()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L511", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_subjectcountlabel", + "community": 71, + "norm_label": "subjectcountlabel()" + }, + { + "label": "requestCountLabel()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L519", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_requestcountlabel", + "community": 71, + "norm_label": "requestcountlabel()" + }, + { + "label": "requestStatusLabel()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L527", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_requeststatuslabel", + "community": 71, + "norm_label": "requeststatuslabel()" + }, + { + "label": "requestStatusClass()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L535", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_requeststatusclass", + "community": 71, + "norm_label": "requeststatusclass()" + }, + { + "label": "renderTeacherMetric()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L543", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_renderteachermetric", + "community": 71, + "norm_label": "renderteachermetric()" + }, + { + "label": "workloadLabel()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L553", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_workloadlabel", + "community": 71, + "norm_label": "workloadlabel()" + }, + { + "label": "workloadKeys()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L565", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_workloadkeys", + "community": 71, + "norm_label": "workloadkeys()" + }, + { + "label": "normalizeTeacherName()", + "file_type": "code", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L572", + "_origin": "ast", + "id": "frontend_admin_js_views_department_workspace_normalizeteachername", + "community": 71, + "norm_label": "normalizeteachername()" + }, + { + "label": "groups.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_groups", + "community": 14, + "norm_label": "groups.js" + }, + { + "label": "fetchEducationForms()", + "file_type": "code", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_groups_fetcheducationforms", + "community": 14, + "norm_label": "fetcheducationforms()" + }, + { + "label": "initGroups()", + "file_type": "code", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L15", + "_origin": "ast", + "id": "frontend_admin_js_views_groups_initgroups", + "community": 14, + "norm_label": "initgroups()" + }, + { + "label": "schedule-view.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view", + "community": 9, + "norm_label": "schedule-view.js" + }, + { + "label": "PARITY_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L9", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_parity_labels", + "community": 9, + "norm_label": "parity_labels" + }, + { + "label": "DAY_SHORT_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L14", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_day_short_labels", + "community": 9, + "norm_label": "day_short_labels" + }, + { + "label": "DAY_FULL_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L23", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_day_full_labels", + "community": 9, + "norm_label": "day_full_labels" + }, + { + "label": "DAY_ORDER", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L32", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_day_order", + "community": 9, + "norm_label": "day_order" + }, + { + "label": "CELL_PARITY_LAYOUT", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L33", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_cell_parity_layout", + "community": 9, + "norm_label": "cell_parity_layout" + }, + { + "label": "initScheduleView()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L40", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_initscheduleview", + "community": 9, + "norm_label": "initscheduleview()" + }, + { + "label": "loadDictionaries()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L729", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_loaddictionaries", + "community": 9, + "norm_label": "loaddictionaries()" + }, + { + "label": "setDefaultDate()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L760", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_setdefaultdate", + "community": 9, + "norm_label": "setdefaultdate()" + }, + { + "label": "fillSelect()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L765", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_fillselect", + "community": 9, + "norm_label": "fillselect()" + }, + { + "label": "addOptional()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L772", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_addoptional", + "community": 9, + "norm_label": "addoptional()" + }, + { + "label": "valueOf()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L776", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_valueof", + "community": 9, + "norm_label": "valueof()" + }, + { + "label": "normalizeId()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L780", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_normalizeid", + "community": 9, + "norm_label": "normalizeid()" + }, + { + "label": "roomLabel()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L785", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_roomlabel", + "community": 9, + "norm_label": "roomlabel()" + }, + { + "label": "collectSlots()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L789", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_collectslots", + "community": 9, + "norm_label": "collectslots()" + }, + { + "label": "groupLessonsByDateSlot()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L812", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_grouplessonsbydateslot", + "community": 9, + "norm_label": "grouplessonsbydateslot()" + }, + { + "label": "buildScheduleSections()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L828", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_buildschedulesections", + "community": 9, + "norm_label": "buildschedulesections()" + }, + { + "label": "splitEntitiesForLesson()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L852", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_splitentitiesforlesson", + "community": 9, + "norm_label": "splitentitiesforlesson()" + }, + { + "label": "singleEntity()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L865", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_singleentity", + "community": 9, + "norm_label": "singleentity()" + }, + { + "label": "listEntities()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L874", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_listentities", + "community": 9, + "norm_label": "listentities()" + }, + { + "label": "sortLessons()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L893", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_sortlessons", + "community": 9, + "norm_label": "sortlessons()" + }, + { + "label": "lessonSlotDescriptor()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L903", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_lessonslotdescriptor", + "community": 9, + "norm_label": "lessonslotdescriptor()" + }, + { + "label": "buildCombinedWeekBlocks()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L911", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_buildcombinedweekblocks", + "community": 9, + "norm_label": "buildcombinedweekblocks()" + }, + { + "label": "weekParity()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L942", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_weekparity", + "community": 9, + "norm_label": "weekparity()" + }, + { + "label": "buildDatesByDay()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L950", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_builddatesbyday", + "community": 9, + "norm_label": "builddatesbyday()" + }, + { + "label": "parityForDate()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L961", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_parityfordate", + "community": 9, + "norm_label": "parityfordate()" + }, + { + "label": "combinedWeekCaption()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L969", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_combinedweekcaption", + "community": 9, + "norm_label": "combinedweekcaption()" + }, + { + "label": "mobileDayCaption()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L973", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_mobiledaycaption", + "community": 9, + "norm_label": "mobiledaycaption()" + }, + { + "label": "periodCaption()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L977", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_periodcaption", + "community": 9, + "norm_label": "periodcaption()" + }, + { + "label": "lessonSlotKey()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L981", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_lessonslotkey", + "community": 9, + "norm_label": "lessonslotkey()" + }, + { + "label": "dateSlotKey()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L986", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_dateslotkey", + "community": 9, + "norm_label": "dateslotkey()" + }, + { + "label": "weekStart()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L990", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_weekstart", + "community": 9, + "norm_label": "weekstart()" + }, + { + "label": "twoWeekRange()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L997", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_twoweekrange", + "community": 9, + "norm_label": "twoweekrange()" + }, + { + "label": "addDays()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1007", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_adddays", + "community": 9, + "norm_label": "adddays()" + }, + { + "label": "parseIsoDate()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1013", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_parseisodate", + "community": 9, + "norm_label": "parseisodate()" + }, + { + "label": "datesBetween()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1018", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_datesbetween", + "community": 9, + "norm_label": "datesbetween()" + }, + { + "label": "isoDay()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1026", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_isoday", + "community": 9, + "norm_label": "isoday()" + }, + { + "label": "dayShort()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1031", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_dayshort", + "community": 9, + "norm_label": "dayshort()" + }, + { + "label": "formatDate()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1035", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_formatdate", + "community": 9, + "norm_label": "formatdate()" + }, + { + "label": "formatDateShort()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1041", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_formatdateshort", + "community": 9, + "norm_label": "formatdateshort()" + }, + { + "label": "trimTime()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1046", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_trimtime", + "community": 9, + "norm_label": "trimtime()" + }, + { + "label": "toIsoDate()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1050", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_toisodate", + "community": 9, + "norm_label": "toisodate()" + }, + { + "label": "lessonCountLabel()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1058", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_lessoncountlabel", + "community": 9, + "norm_label": "lessoncountlabel()" + }, + { + "label": "sectionCountLabel()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1066", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_sectioncountlabel", + "community": 9, + "norm_label": "sectioncountlabel()" + }, + { + "label": "compareSlots()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1074", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_compareslots", + "community": 9, + "norm_label": "compareslots()" + }, + { + "label": "naturalCompare()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1084", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_view_naturalcompare", + "community": 9, + "norm_label": "naturalcompare()" + }, + { + "label": "schedule.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule", + "community": 14, + "norm_label": "schedule.js" + }, + { + "label": "DAY_OPTIONS", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_day_options", + "community": 14, + "norm_label": "day_options" + }, + { + "label": "PARITY_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L14", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_parity_labels", + "community": 14, + "norm_label": "parity_labels" + }, + { + "label": "CELL_PARITY_LAYOUT", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L20", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_cell_parity_layout", + "community": 14, + "norm_label": "cell_parity_layout" + }, + { + "label": "SEMESTER_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L25", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_semester_labels", + "community": 14, + "norm_label": "semester_labels" + }, + { + "label": "LESSON_TYPE_LIMITS", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L33", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_lesson_type_limits", + "community": 14, + "norm_label": "lesson_type_limits" + }, + { + "label": "initSchedule()", + "file_type": "code", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L60", + "_origin": "ast", + "id": "frontend_admin_js_views_schedule_initschedule", + "community": 14, + "norm_label": "initschedule()" + }, + { + "label": "subjects.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_subjects", + "community": 14, + "norm_label": "subjects.js" + }, + { + "label": "initSubjects()", + "file_type": "code", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_subjects_initsubjects", + "community": 14, + "norm_label": "initsubjects()" + }, + { + "label": "teacher-requests.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_teacher_requests", + "community": 14, + "norm_label": "teacher-requests.js" + }, + { + "label": "initTeacherRequests()", + "file_type": "code", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_teacher_requests_initteacherrequests", + "community": 14, + "norm_label": "initteacherrequests()" + }, + { + "label": "university-structure.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_university_structure", + "community": 14, + "norm_label": "university-structure.js" + }, + { + "label": "initUniversityStructure()", + "file_type": "code", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_university_structure_inituniversitystructure", + "community": 14, + "norm_label": "inituniversitystructure()" + }, + { + "label": "users.js", + "file_type": "code", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_js_views_users", + "community": 14, + "norm_label": "users.js" + }, + { + "label": "ROLE_LABELS", + "file_type": "code", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_js_views_users_role_labels", + "community": 14, + "norm_label": "role_labels" + }, + { + "label": "ROLE_BADGE", + "file_type": "code", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L12", + "_origin": "ast", + "id": "frontend_admin_js_views_users_role_badge", + "community": 14, + "norm_label": "role_badge" + }, + { + "label": "initUsers()", + "file_type": "code", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L21", + "_origin": "ast", + "id": "frontend_admin_js_views_users_initusers", + "community": 14, + "norm_label": "initusers()" + }, + { + "label": "main.js", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_settings_js_main", + "community": 56, + "norm_label": "main.js" + }, + { + "label": "role", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L7", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_role", + "community": 56, + "norm_label": "role" + }, + { + "label": "ROUTES", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L19", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_routes", + "community": 56, + "norm_label": "routes" + }, + { + "label": "ROLE_TABS", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L47", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_role_tabs", + "community": 56, + "norm_label": "role_tabs" + }, + { + "label": "allowedTabs", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L51", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_allowedtabs", + "community": 56, + "norm_label": "allowedtabs" + }, + { + "label": "appContent", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L57", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_appcontent", + "community": 56, + "norm_label": "appcontent" + }, + { + "label": "pageTitle", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L58", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_pagetitle", + "community": 56, + "norm_label": "pagetitle" + }, + { + "label": "navItems", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L59", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_navitems", + "community": 56, + "norm_label": "navitems" + }, + { + "label": "sidebar", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L60", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_sidebar", + "community": 56, + "norm_label": "sidebar" + }, + { + "label": "sidebarOverlay", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L61", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_sidebaroverlay", + "community": 56, + "norm_label": "sidebaroverlay" + }, + { + "label": "menuToggle", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L62", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_menutoggle", + "community": 56, + "norm_label": "menutoggle" + }, + { + "label": "sidebarCloseBtn", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L63", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_sidebarclosebtn", + "community": 56, + "norm_label": "sidebarclosebtn" + }, + { + "label": "main", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L64", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_main", + "community": 56, + "norm_label": "main" + }, + { + "label": "switchTab()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L111", + "_origin": "ast", + "id": "frontend_admin_settings_js_main_switchtab", + "community": 56, + "norm_label": "switchtab()" + }, + { + "label": "database.js", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_database", + "community": 14, + "norm_label": "database.js" + }, + { + "label": "initDatabase()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_database_initdatabase", + "community": 14, + "norm_label": "initdatabase()" + }, + { + "label": "edu-forms.js", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_edu_forms", + "community": 14, + "norm_label": "edu-forms.js" + }, + { + "label": "allEducationForms", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_edu_forms_alleducationforms", + "community": 14, + "norm_label": "alleducationforms" + }, + { + "label": "fetchEducationForms()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L6", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_edu_forms_fetcheducationforms", + "community": 14, + "norm_label": "fetcheducationforms()" + }, + { + "label": "initEduForms()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L16", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_edu_forms_initeduforms", + "community": 14, + "norm_label": "initeduforms()" + }, + { + "label": "time-slots.js", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_time_slots", + "community": 118, + "norm_label": "time-slots.js" + }, + { + "label": "APPLY_MODE_LABELS", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L4", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_time_slots_apply_mode_labels", + "community": 118, + "norm_label": "apply_mode_labels" + }, + { + "label": "DAY_SHORT_LABELS", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L10", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_time_slots_day_short_labels", + "community": 118, + "norm_label": "day_short_labels" + }, + { + "label": "initTimeSlotsSettings()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L20", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_time_slots_inittimeslotssettings", + "community": 34, + "norm_label": "inittimeslotssettings()" + }, + { + "label": "scopeOptionLabel()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L298", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_time_slots_scopeoptionlabel", + "community": 118, + "norm_label": "scopeoptionlabel()" + }, + { + "label": "scopeBadgeLabel()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L305", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_time_slots_scopebadgelabel", + "community": 118, + "norm_label": "scopebadgelabel()" + }, + { + "label": "dayShort()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L311", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_time_slots_dayshort", + "community": 118, + "norm_label": "dayshort()" + }, + { + "label": "trimTime()", + "file_type": "code", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L315", + "_origin": "ast", + "id": "frontend_admin_settings_js_views_time_slots_trimtime", + "community": 118, + "norm_label": "trimtime()" + }, + { + "label": "script.js", + "file_type": "code", + "source_file": "frontend/script.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_script", + "community": 119, + "norm_label": "script.js" + }, + { + "label": "clearFieldError()", + "file_type": "code", + "source_file": "frontend/script.js", + "source_location": "L70", + "_origin": "ast", + "id": "frontend_script_clearfielderror", + "community": 119, + "norm_label": "clearfielderror()" + }, + { + "label": "setFieldError()", + "file_type": "code", + "source_file": "frontend/script.js", + "source_location": "L75", + "_origin": "ast", + "id": "frontend_script_setfielderror", + "community": 119, + "norm_label": "setfielderror()" + }, + { + "label": "showAlert()", + "file_type": "code", + "source_file": "frontend/script.js", + "source_location": "L86", + "_origin": "ast", + "id": "frontend_script_showalert", + "community": 119, + "norm_label": "showalert()" + }, + { + "label": "hideAlert()", + "file_type": "code", + "source_file": "frontend/script.js", + "source_location": "L91", + "_origin": "ast", + "id": "frontend_script_hidealert", + "community": 119, + "norm_label": "hidealert()" + }, + { + "label": "setLoading()", + "file_type": "code", + "source_file": "frontend/script.js", + "source_location": "L96", + "_origin": "ast", + "id": "frontend_script_setloading", + "community": 119, + "norm_label": "setloading()" + }, + { + "label": "validate()", + "file_type": "code", + "source_file": "frontend/script.js", + "source_location": "L102", + "_origin": "ast", + "id": "frontend_script_validate", + "community": 119, + "norm_label": "validate()" + }, + { + "label": "theme-toggle.js", + "file_type": "code", + "source_file": "frontend/theme-toggle.js", + "source_location": "L1", + "_origin": "ast", + "id": "frontend_theme_toggle", + "community": 132, + "norm_label": "theme-toggle.js" + }, + { + "label": "init()", + "file_type": "code", + "source_file": "frontend/theme-toggle.js", + "source_location": "L22", + "_origin": "ast", + "id": "frontend_theme_toggle_init", + "community": 132, + "norm_label": "init()" + }, + { + "label": "script.js", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L1", + "_origin": "ast", + "id": "resume_script", + "community": 100, + "norm_label": "script.js" + }, + { + "label": "incidentRunbooks", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L3", + "_origin": "ast", + "id": "resume_script_incidentrunbooks", + "community": 100, + "norm_label": "incidentrunbooks" + }, + { + "label": "initPrintButton()", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L65", + "_origin": "ast", + "id": "resume_script_initprintbutton", + "community": 100, + "norm_label": "initprintbutton()" + }, + { + "label": "initCopyButtons()", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L74", + "_origin": "ast", + "id": "resume_script_initcopybuttons", + "community": 100, + "norm_label": "initcopybuttons()" + }, + { + "label": "initReveal()", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L91", + "_origin": "ast", + "id": "resume_script_initreveal", + "community": 100, + "norm_label": "initreveal()" + }, + { + "label": "initNavigationHighlight()", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L115", + "_origin": "ast", + "id": "resume_script_initnavigationhighlight", + "community": 100, + "norm_label": "initnavigationhighlight()" + }, + { + "label": "initIncidentTabs()", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L142", + "_origin": "ast", + "id": "resume_script_initincidenttabs", + "community": 100, + "norm_label": "initincidenttabs()" + }, + { + "label": "formatRunbookText()", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L175", + "_origin": "ast", + "id": "resume_script_formatrunbooktext", + "community": 100, + "norm_label": "formatrunbooktext()" + }, + { + "label": "escapeHtml()", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L179", + "_origin": "ast", + "id": "resume_script_escapehtml", + "community": 100, + "norm_label": "escapehtml()" + }, + { + "label": "showToast()", + "file_type": "code", + "source_file": "resume/script.js", + "source_location": "L188", + "_origin": "ast", + "id": "resume_script_showtoast", + "community": 100, + "norm_label": "showtoast()" + }, + { + "label": "\u041f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442 AGENTS.md", + "file_type": "document", + "source_file": "AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "agents_project_regulation", + "community": 101, + "norm_label": "\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0438 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442 agents.md" + }, + { + "label": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u041c\u0430\u0433\u0438\u0441\u0442\u0440", + "file_type": "concept", + "source_file": "AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "agents_magistr_system", + "community": 101, + "norm_label": "\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0430\u0433\u0438\u0441\u0442\u0440" + }, + { + "label": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u0438 Flyway-\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439", + "file_type": "concept", + "source_file": "AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "agents_flyway_migration_rule", + "community": 101, + "norm_label": "\u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u0438 flyway-\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438" + }, + { + "label": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", + "file_type": "concept", + "source_file": "AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "agents_russian_language_rule", + "community": 101, + "norm_label": "\u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430" + }, + { + "label": "\u0418\u043d\u0434\u0435\u043a\u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", + "file_type": "document", + "source_file": "AGENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "agents_project_docs_index", + "community": 80, + "norm_label": "\u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438" + }, + { + "label": "\u0410\u0443\u0434\u0438\u0442 \u0440\u0438\u0441\u043a\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430", + "file_type": "document", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_project_risk_audit", + "community": 84, + "norm_label": "\u0430\u0443\u0434\u0438\u0442 \u0440\u0438\u0441\u043a\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430" + }, + { + "label": "\u041d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 production-defaults JWT", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_jwt_insecure_production_defaults", + "community": 84, + "norm_label": "\u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 production-defaults jwt" + }, + { + "label": "\u0413\u043e\u043d\u043a\u0430 \u0440\u043e\u0442\u0430\u0446\u0438\u0438 refresh-\u0442\u043e\u043a\u0435\u043d\u043e\u0432", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_refresh_token_rotation_race_condition", + "community": 117, + "norm_label": "\u0433\u043e\u043d\u043a\u0430 \u0440\u043e\u0442\u0430\u0446\u0438\u0438 refresh-\u0442\u043e\u043a\u0435\u043d\u043e\u0432" + }, + { + "label": "\u0423\u0442\u0435\u0447\u043a\u0430 ThreadLocal AuthContext", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_authcontext_threadlocal_leak", + "community": 117, + "norm_label": "\u0443\u0442\u0435\u0447\u043a\u0430 threadlocal authcontext" + }, + { + "label": "\u041f\u0440\u043e\u0431\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 override \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_schedule_override_conflict_gap", + "community": 84, + "norm_label": "\u043f\u0440\u043e\u0431\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 override \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u041f\u0440\u043e\u0431\u0435\u043b \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 override \u0434\u043b\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_teacher_schedule_override_visibility_gap", + "community": 109, + "norm_label": "\u043f\u0440\u043e\u0431\u0435\u043b \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 override \u0434\u043b\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0438" + }, + { + "label": "\u0420\u0438\u0441\u043a \u0437\u0430\u043c\u0435\u043d\u044b DataSource \u0442\u0435\u043d\u0430\u043d\u0442\u0430", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_tenant_datasource_replacement_risk", + "community": 84, + "norm_label": "\u0440\u0438\u0441\u043a \u0437\u0430\u043c\u0435\u043d\u044b datasource \u0442\u0435\u043d\u0430\u043d\u0442\u0430" + }, + { + "label": "\u041f\u0440\u043e\u0431\u0435\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f watcher \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_tenant_config_watcher_update_gap", + "community": 84, + "norm_label": "\u043f\u0440\u043e\u0431\u0435\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f watcher \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432" + }, + { + "label": "\u0420\u0438\u0441\u043a Kubernetes TLS trust-all", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_kubernetes_tls_trust_all_risk", + "community": 84, + "norm_label": "\u0440\u0438\u0441\u043a kubernetes tls trust-all" + }, + { + "label": "\u0420\u0438\u0441\u043a \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c\u0438 \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u043a\u0430\u0444\u0435\u0434\u0440\u044b", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_department_import_subject_ownership_risk", + "community": 129, + "norm_label": "\u0440\u0438\u0441\u043a \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c\u0438 \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u043a\u0430\u0444\u0435\u0434\u0440\u044b" + }, + { + "label": "\u0420\u0438\u0441\u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u0430\u0444\u0435\u0434\u0440\u044b", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_workload_department_scope_risk", + "community": 131, + "norm_label": "\u0440\u0438\u0441\u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u0430\u0444\u0435\u0434\u0440\u044b" + }, + { + "label": "\u0420\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u043d\u0438\u0446 \u0441\u0435\u043c\u0435\u0441\u0442\u0440\u043e\u0432", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_semester_boundary_overlap_risk", + "community": 70, + "norm_label": "\u0440\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u043d\u0438\u0446 \u0441\u0435\u043c\u0435\u0441\u0442\u0440\u043e\u0432" + }, + { + "label": "\u0420\u0438\u0441\u043a access token \u0432 localStorage", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_localstorage_access_token_risk", + "community": 117, + "norm_label": "\u0440\u0438\u0441\u043a access token \u0432 localstorage" + }, + { + "label": "\u0420\u0438\u0441\u043a XSS \u0447\u0435\u0440\u0435\u0437 innerHTML \u043e\u0448\u0438\u0431\u043e\u043a", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_innerhtml_error_xss_risk", + "community": 109, + "norm_label": "\u0440\u0438\u0441\u043a xss \u0447\u0435\u0440\u0435\u0437 innerhtml \u043e\u0448\u0438\u0431\u043e\u043a" + }, + { + "label": "\u0420\u0438\u0441\u043a latest-\u0442\u0435\u0433\u0430 OpenTelemetry", + "file_type": "concept", + "source_file": "BUG_REPORT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "bug_report_opentelemetry_latest_supply_chain_risk", + "community": 69, + "norm_label": "\u0440\u0438\u0441\u043a latest-\u0442\u0435\u0433\u0430 opentelemetry" + }, + { + "label": "\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0430\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430", + "file_type": "document", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_resilient_multitenant_infrastructure", + "community": 69, + "norm_label": "\u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0438\u0447\u0438\u0432\u0430\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430" + }, + { + "label": "\u041f\u0430\u0442\u0442\u0435\u0440\u043d database-per-tenant", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_database_per_tenant_pattern", + "community": 69, + "norm_label": "\u043f\u0430\u0442\u0442\u0435\u0440\u043d database-per-tenant" + }, + { + "label": "\u041e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0424\u0417-152", + "file_type": "rationale", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_fz_152_data_isolation_rationale", + "community": 69, + "norm_label": "\u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0444\u0437-152" + }, + { + "label": "K3s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_k3s_cluster", + "community": 69, + "norm_label": "k3s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440" + }, + { + "label": "\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043d\u0430\u043d\u0442\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 ConfigMap", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_configmap_dynamic_tenant_management", + "community": 84, + "norm_label": "\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043d\u0430\u043d\u0442\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 configmap" + }, + { + "label": "\u0423\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c H2 \u0438 HikariCP", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_h2_hikaricp_resiliency", + "community": 133, + "norm_label": "\u0443\u0441\u0442\u043e\u0438\u0447\u0438\u0432\u043e\u0441\u0442\u044c h2 \u0438 hikaricp" + }, + { + "label": "Ansible-\u0445\u043e\u0441\u0442\u044b \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_ansible_database_hosts", + "community": 69, + "norm_label": "ansible-\u0445\u043e\u0441\u0442\u044b \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445" + }, + { + "label": "CI/CD \u0447\u0435\u0440\u0435\u0437 Gitea Actions", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_gitea_actions_cicd", + "community": 110, + "norm_label": "ci/cd \u0447\u0435\u0440\u0435\u0437 gitea actions" + }, + { + "label": "Caddy proxy", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_caddy_proxy", + "community": 69, + "norm_label": "caddy proxy" + }, + { + "label": "\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c SigNoz \u0438 OpenTelemetry", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_signoz_opentelemetry_observability", + "community": 69, + "norm_label": "\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c signoz \u0438 opentelemetry" + }, + { + "label": "\u0412\u041c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Proxmox", + "file_type": "concept", + "source_file": "DEVOPS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "devops_proxmox_database_vms", + "community": 69, + "norm_label": "\u0432\u043c \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 proxmox" + }, + { + "label": "Backend-\u0441\u0435\u0440\u0432\u0438\u0441 Docker Compose", + "file_type": "concept", + "source_file": "compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "compose_backend_service", + "community": 122, + "norm_label": "backend-\u0441\u0435\u0440\u0432\u0438\u0441 docker compose" + }, + { + "label": "Frontend-\u0441\u0435\u0440\u0432\u0438\u0441 Docker Compose", + "file_type": "concept", + "source_file": "compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "compose_frontend_service", + "community": 122, + "norm_label": "frontend-\u0441\u0435\u0440\u0432\u0438\u0441 docker compose" + }, + { + "label": "PostgreSQL-\u0441\u0435\u0440\u0432\u0438\u0441 Docker Compose", + "file_type": "concept", + "source_file": "compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "compose_db_service", + "community": 122, + "norm_label": "postgresql-\u0441\u0435\u0440\u0432\u0438\u0441 docker compose" + }, + { + "label": "\u0412\u043d\u0435\u0448\u043d\u044f\u044f proxy-\u0441\u0435\u0442\u044c Docker", + "file_type": "concept", + "source_file": "compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "compose_proxy_network", + "community": 122, + "norm_label": "\u0432\u043d\u0435\u0448\u043d\u044f\u044f proxy-\u0441\u0435\u0442\u044c docker" + }, + { + "label": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f POSTGRES_PASSWORD", + "file_type": "concept", + "source_file": "compose.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "compose_postgres_password_required", + "community": 122, + "norm_label": "\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f postgres_password" + }, + { + "label": "\u041d\u0430\u0432\u044b\u043a AutoUpdateDocs", + "file_type": "document", + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_agents_skills_autoupdatedocs_autoupdatedocs_skill", + "community": 80, + "norm_label": "\u043d\u0430\u0432\u044b\u043a autoupdatedocs" + }, + { + "label": "\u041a\u0430\u0440\u0442\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", + "file_type": "concept", + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_agents_skills_autoupdatedocs_file_to_docs_map", + "community": 80, + "norm_label": "\u043a\u0430\u0440\u0442\u0430 \u0444\u0430\u0438\u043b\u043e\u0432 \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438" + }, + { + "label": "SKILL.md AutoUpdateDocs", + "file_type": "document", + "source_file": ".agents/skills/auto-update-docs/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_agents_skills_auto_update_docs_skill_autoupdatedocs_skill", + "community": 80, + "norm_label": "skill.md autoupdatedocs" + }, + { + "label": "\u041a\u0430\u0440\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430", + "file_type": "concept", + "source_file": ".agents/skills/auto-update-docs/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_agents_skills_auto_update_docs_skill_frontend_settings_docs_map", + "community": 109, + "norm_label": "\u043a\u0430\u0440\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430" + }, + { + "label": "\u041d\u0430\u0432\u044b\u043a frontend-design", + "file_type": "document", + "source_file": ".agents/skills/frontend-design/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_agents_skills_frontend_design_skill_frontend_design_skill", + "community": 125, + "norm_label": "\u043d\u0430\u0432\u044b\u043a frontend-design" + }, + { + "label": "\u0414\u0438\u0437\u0430\u0439\u043d-\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430", + "file_type": "concept", + "source_file": ".agents/skills/frontend-design/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_agents_skills_frontend_design_skill_design_thinking", + "community": 125, + "norm_label": "\u0434\u0438\u0437\u0430\u0438\u043d-\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0438\u0441\u0430" + }, + { + "label": "\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u043e\u0442\u0438\u0432 AI-\u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0438", + "file_type": "concept", + "source_file": ".agents/skills/frontend-design/SKILL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_agents_skills_frontend_design_skill_no_ai_aesthetic_rule", + "community": 125, + "norm_label": "\u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u043e\u0442\u0438\u0432 ai-\u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0438" + }, + { + "label": "Workflow \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 Docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432", + "file_type": "document", + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_gitea_workflows_docker_build_build_and_push_docker_images", + "community": 110, + "norm_label": "workflow \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432" + }, + { + "label": "Pipeline backend-\u043e\u0431\u0440\u0430\u0437\u0430", + "file_type": "concept", + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_gitea_workflows_docker_build_backend_image_pipeline", + "community": 110, + "norm_label": "pipeline backend-\u043e\u0431\u0440\u0430\u0437\u0430" + }, + { + "label": "Pipeline frontend-\u043e\u0431\u0440\u0430\u0437\u0430", + "file_type": "concept", + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_gitea_workflows_docker_build_frontend_image_pipeline", + "community": 110, + "norm_label": "pipeline frontend-\u043e\u0431\u0440\u0430\u0437\u0430" + }, + { + "label": "Job \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Kubernetes", + "file_type": "concept", + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_gitea_workflows_docker_build_deploy_to_k8s", + "community": 110, + "norm_label": "job \u0434\u0435\u043f\u043b\u043e\u044f \u0432 kubernetes" + }, + { + "label": "Secret ZUEV_TOKEN", + "file_type": "concept", + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_gitea_workflows_docker_build_zuev_token_secret", + "community": 110, + "norm_label": "secret zuev_token" + }, + { + "label": "Secret KUBECONFIG_DATA", + "file_type": "concept", + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "_gitea_workflows_docker_build_kubeconfig_secret", + "community": 110, + "norm_label": "secret kubeconfig_data" + }, + { + "label": "\u041e\u0431\u0437\u043e\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u041c\u0430\u0433\u0438\u0441\u0442\u0440", + "file_type": "document", + "source_file": "docs/README.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_readme_magistr_overview", + "community": 80, + "norm_label": "\u043e\u0431\u0437\u043e\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u0430\u0433\u0438\u0441\u0442\u0440" + }, + { + "label": "\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b", + "file_type": "document", + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_architecture_system_architecture", + "community": 80, + "norm_label": "\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b" + }, + { + "label": "\u041c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430", + "file_type": "concept", + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_architecture_multitenant_architecture", + "community": 69, + "norm_label": "\u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430" + }, + { + "label": "\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438", + "file_type": "concept", + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_architecture_authentication", + "community": 117, + "norm_label": "\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438" + }, + { + "label": "\u0420\u043e\u043b\u0435\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c", + "file_type": "concept", + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_business_logic_role_model", + "community": 80, + "norm_label": "\u0440\u043e\u043b\u0435\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c" + }, + { + "label": "\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_business_logic_dynamic_schedule_model", + "community": 70, + "norm_label": "\u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_business_logic_schedule_validation", + "community": 70, + "norm_label": "\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0410\u0440\u0445\u0438\u0432\u0430\u0446\u0438\u044f \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430", + "file_type": "concept", + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_business_logic_lifecycle_archiving", + "community": 80, + "norm_label": "\u0430\u0440\u0445\u0438\u0432\u0430\u0446\u0438\u044f \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430" + }, + { + "label": "\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043a \u043a\u0430\u0444\u0435\u0434\u0440\u0430\u043c", + "file_type": "concept", + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_business_logic_teacher_department_assignments", + "community": 129, + "norm_label": "\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0438 \u043a \u043a\u0430\u0444\u0435\u0434\u0440\u0430\u043c" + }, + { + "label": "\u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f", + "file_type": "document", + "source_file": "docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_academic_calendar_calendar_model", + "community": 70, + "norm_label": "\u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f" + }, + { + "label": "\u041a\u043e\u0434\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0439 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f", + "file_type": "concept", + "source_file": "docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_academic_calendar_activity_codes", + "community": 70, + "norm_label": "\u043a\u043e\u0434\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0438 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f" + }, + { + "label": "\u0424\u0438\u043b\u044c\u0442\u0440 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044e", + "file_type": "concept", + "source_file": "docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_academic_calendar_schedule_generation_filter", + "community": 70, + "norm_label": "\u0444\u0438\u043b\u044c\u0442\u0440 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044e" + }, + { + "label": "REST API", + "file_type": "document", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_rest_api", + "community": 80, + "norm_label": "rest api" + }, + { + "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_authentication_endpoints", + "community": 117, + "norm_label": "\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438" + }, + { + "label": "\u041f\u0440\u0430\u0432\u0430 \u0440\u043e\u043b\u0435\u0439 API", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_role_permissions", + "community": 80, + "norm_label": "\u043f\u0440\u0430\u0432\u0430 \u0440\u043e\u043b\u0435\u0438 api" + }, + { + "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_dynamic_schedule_endpoints", + "community": 109, + "norm_label": "\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_schedule_rules_endpoints", + "community": 70, + "norm_label": "\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b override \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_schedule_overrides_endpoints", + "community": 84, + "norm_label": "\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b override \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0430 \u043a\u0430\u0444\u0435\u0434\u0440\u044b", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_department_workspace_endpoints", + "community": 129, + "norm_label": "\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0430 \u043a\u0430\u0444\u0435\u0434\u0440\u044b" + }, + { + "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0411\u0414 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_tenant_database_endpoints", + "community": 84, + "norm_label": "\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0431\u0434 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432" + }, + { + "label": "\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_workload_endpoints", + "community": 131, + "norm_label": "\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438" + }, + { + "label": "API \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0433\u0440\u0443\u043f\u043f\u0435", + "file_type": "concept", + "source_file": "docs/API.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_api_group_calendar_assignments", + "community": 70, + "norm_label": "api \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0433\u0440\u0443\u043f\u043f\u0435" + }, + { + "label": "\u0421\u0445\u0435\u043c\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445", + "file_type": "document", + "source_file": "docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_database_database_schema", + "community": 80, + "norm_label": "\u0441\u0445\u0435\u043c\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445" + }, + { + "label": "ER-\u0441\u0432\u044f\u0437\u0438", + "file_type": "concept", + "source_file": "docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_database_er_relationships", + "community": 80, + "norm_label": "er-\u0441\u0432\u044f\u0437\u0438" + }, + { + "label": "\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_database_dynamic_schedule_tables", + "community": 70, + "norm_label": "\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f", + "file_type": "concept", + "source_file": "docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_database_academic_calendar_tables", + "community": 70, + "norm_label": "\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f" + }, + { + "label": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430 refresh-\u0442\u043e\u043a\u0435\u043d\u043e\u0432", + "file_type": "concept", + "source_file": "docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_database_auth_refresh_tokens", + "community": 117, + "norm_label": "\u0442\u0430\u0431\u043b\u0438\u0446\u0430 refresh-\u0442\u043e\u043a\u0435\u043d\u043e\u0432" + }, + { + "label": "Flyway-\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438", + "file_type": "concept", + "source_file": "docs/DATABASE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_database_flyway_migrations", + "community": 101, + "norm_label": "flyway-\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438" + }, + { + "label": "\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430", + "file_type": "document", + "source_file": "docs/DEVELOPMENT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_development_developer_guide", + "community": 101, + "norm_label": "\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430" + }, + { + "label": "Code style", + "file_type": "concept", + "source_file": "docs/DEVELOPMENT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_development_code_style", + "community": 101, + "norm_label": "code style" + }, + { + "label": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430", + "file_type": "concept", + "source_file": "docs/DEVELOPMENT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_development_new_endpoint_flow", + "community": 101, + "norm_label": "\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430" + }, + { + "label": "\u041f\u0440\u0430\u0432\u0438\u043b\u0430 Flyway \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435", + "file_type": "concept", + "source_file": "docs/DEVELOPMENT.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_development_flyway_rules", + "community": 101, + "norm_label": "\u043f\u0440\u0430\u0432\u0438\u043b\u0430 flyway \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435" + }, + { + "label": "Frontend-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430", + "file_type": "document", + "source_file": "docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_frontend_frontend_architecture", + "community": 109, + "norm_label": "frontend-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430" + }, + { + "label": "\u0420\u043e\u0443\u0442\u0438\u043d\u0433 admin SPA", + "file_type": "concept", + "source_file": "docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_frontend_admin_spa_routing", + "community": 109, + "norm_label": "\u0440\u043e\u0443\u0442\u0438\u043d\u0433 admin spa" + }, + { + "label": "Refresh-flow API-\u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "file_type": "concept", + "source_file": "docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_frontend_api_client_refresh_flow", + "community": 117, + "norm_label": "refresh-flow api-\u043a\u043b\u0438\u0435\u043d\u0442\u0430" + }, + { + "label": "\u0420\u043e\u043b\u0435\u0432\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f", + "file_type": "concept", + "source_file": "docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_frontend_role_based_navigation", + "community": 80, + "norm_label": "\u0440\u043e\u043b\u0435\u0432\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f" + }, + { + "label": "Frontend-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_frontend_schedule_views", + "community": 109, + "norm_label": "frontend-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "SPA \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430", + "file_type": "concept", + "source_file": "docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_frontend_settings_spa", + "community": 109, + "norm_label": "spa \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430" + }, + { + "label": "CSS-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430", + "file_type": "concept", + "source_file": "docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_frontend_css_architecture", + "community": 125, + "norm_label": "css-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430" + }, + { + "label": "Frontend OpenTelemetry-\u043a\u043b\u0438\u0435\u043d\u0442", + "file_type": "concept", + "source_file": "docs/FRONTEND.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_frontend_opentelemetry_client", + "community": 69, + "norm_label": "frontend opentelemetry-\u043a\u043b\u0438\u0435\u043d\u0442" + }, + { + "label": "Docker Compose \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430", + "file_type": "concept", + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_infrastructure_docker_compose", + "community": 122, + "norm_label": "docker compose \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430" + }, + { + "label": "Production-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 Kubernetes", + "file_type": "concept", + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_infrastructure_kubernetes_production", + "community": 84, + "norm_label": "production-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 kubernetes" + }, + { + "label": "\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 JWT-\u0441\u0435\u043a\u0440\u0435\u0442\u0430", + "file_type": "concept", + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_infrastructure_jwt_secret_policy", + "community": 84, + "norm_label": "\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 jwt-\u0441\u0435\u043a\u0440\u0435\u0442\u0430" + }, + { + "label": "Tenants ConfigMap", + "file_type": "concept", + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_infrastructure_tenants_configmap", + "community": 84, + "norm_label": "tenants configmap" + }, + { + "label": "Caddy proxy \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b", + "file_type": "concept", + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_infrastructure_caddy_proxy", + "community": 84, + "norm_label": "caddy proxy \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b" + }, + { + "label": "CI/CD Gitea Actions \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435", + "file_type": "concept", + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_infrastructure_gitea_actions_cicd", + "community": 110, + "norm_label": "ci/cd gitea actions \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435" + }, + { + "label": "SigNoz \u0438 OpenTelemetry \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435", + "file_type": "concept", + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_infrastructure_signoz_opentelemetry", + "community": 69, + "norm_label": "signoz \u0438 opentelemetry \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435" + }, + { + "label": "\u0421\u0442\u0435\u043a \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f", + "file_type": "document", + "source_file": "docs/LOGGING.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_logging_logging_stack", + "community": 69, + "norm_label": "\u0441\u0442\u0435\u043a \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f" + }, + { + "label": "MDC-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0442\u0435\u043d\u0430\u043d\u0442\u0430", + "file_type": "concept", + "source_file": "docs/LOGGING.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_logging_tenant_mdc_context", + "community": 69, + "norm_label": "mdc-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0442\u0435\u043d\u0430\u043d\u0442\u0430" + }, + { + "label": "OTLP \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 SigNoz", + "file_type": "concept", + "source_file": "docs/LOGGING.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_logging_otlp_signoz_export", + "community": 69, + "norm_label": "otlp \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 signoz" + }, + { + "label": "\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "document", + "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "community": 70, + "norm_label": "\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "ScheduleGeneratorService", + "file_type": "concept", + "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_dynamic_schedule_implementation_schedule_generator_service", + "community": 70, + "norm_label": "schedulegeneratorservice" + }, + { + "label": "\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "document", + "source_file": "docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_proposal_dynamic_schedule_concept", + "community": 70, + "norm_label": "\u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u0441\u043b\u043e\u0439", + "file_type": "concept", + "source_file": "docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_proposal_calendar_layer", + "community": 70, + "norm_label": "\u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0438 \u0441\u043b\u043e\u0438" + }, + { + "label": "\u0421\u043b\u043e\u0439 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_proposal_schedule_rules_layer", + "community": 70, + "norm_label": "\u0441\u043b\u043e\u0438 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0417\u0430\u0434\u0430\u0447\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "document", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_dynamic_schedule_tasks", + "community": 60, + "norm_label": "\u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0414\u043d\u0435\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u043a\u0430 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f", + "file_type": "concept", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_daily_academic_calendar_grid", + "community": 60, + "norm_label": "\u0434\u043d\u0435\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u043a\u0430 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f" + }, + { + "label": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0433\u0440\u0443\u043f\u043f\u0435", + "file_type": "concept", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_group_calendar_assignment", + "community": 60, + "norm_label": "\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0433\u0440\u0443\u043f\u043f\u0435" + }, + { + "label": "AcademicDateService", + "file_type": "code", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_academicdateservice", + "community": 60, + "norm_label": "academicdateservice" + }, + { + "label": "ScheduleGeneratorService", + "file_type": "code", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_schedulegeneratorservice", + "community": 60, + "norm_label": "schedulegeneratorservice" + }, + { + "label": "\u041a\u043e\u0434\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0439 Excel-\u0433\u0440\u0430\u0444\u0438\u043a\u0430", + "file_type": "concept", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_activity_codes", + "community": 60, + "norm_label": "\u043a\u043e\u0434\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0435\u0438 excel-\u0433\u0440\u0430\u0444\u0438\u043a\u0430" + }, + { + "label": "\u041f\u043e\u0434\u0433\u0440\u0443\u043f\u043f\u044b \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0441\u043b\u043e\u0442\u043e\u0432", + "file_type": "concept", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_laboratory_subgroups", + "community": 60, + "norm_label": "\u043f\u043e\u0434\u0433\u0440\u0443\u043f\u043f\u044b \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0441\u043b\u043e\u0442\u043e\u0432" + }, + { + "label": "GET /api/schedule", + "file_type": "concept", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_schedule_api_endpoint", + "community": 60, + "norm_label": "get /api/schedule" + }, + { + "label": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "concept", + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_schedule_tasks_rule_conflict_validation", + "community": 60, + "norm_label": "\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f UI-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432", + "file_type": "document", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_ui_components_document", + "community": 85, + "norm_label": "\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f ui-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432" + }, + { + "label": "\u041e\u0431\u0435\u0440\u0442\u043a\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e select", + "file_type": "concept", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_custom_select_wrapper", + "community": 85, + "norm_label": "\u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e select" + }, + { + "label": "\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 MutationObserver \u0434\u043b\u044f select", + "file_type": "concept", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_global_mutationobserver", + "community": 85, + "norm_label": "\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0438 mutationobserver \u0434\u043b\u044f select" + }, + { + "label": "frontend/admin/js/dropdown.js", + "file_type": "code", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_frontend_admin_js_dropdown_js", + "community": 85, + "norm_label": "frontend/admin/js/dropdown.js" + }, + { + "label": "CustomSelect", + "file_type": "code", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_customselect", + "community": 85, + "norm_label": "customselect" + }, + { + "label": "\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 select", + "file_type": "concept", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_native_select", + "community": 85, + "norm_label": "\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0438 select" + }, + { + "label": "Multi-select \u0441 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430\u043c\u0438", + "file_type": "concept", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_multi_select", + "community": 85, + "norm_label": "multi-select \u0441 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430\u043c\u0438" + }, + { + "label": "initMultiSelect \u0438\u0437 utils.js", + "file_type": "code", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_utils_initmultiselect", + "community": 85, + "norm_label": "initmultiselect \u0438\u0437 utils.js" + }, + { + "label": "checkbox-item \u0438 checkmark", + "file_type": "concept", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_checkbox_item_checkmark", + "community": 85, + "norm_label": "checkbox-item \u0438 checkmark" + }, + { + "label": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 option", + "file_type": "rationale", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_browser_option_styling_limit", + "community": 85, + "norm_label": "\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 option" + }, + { + "label": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f option", + "file_type": "concept", + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "docs_ui_components_dynamic_options_sync", + "community": 85, + "norm_label": "\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f option" + }, + { + "label": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438", + "file_type": "code", + "source_file": "frontend/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_index_login_page", + "community": 126, + "norm_label": "\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438" + }, + { + "label": "\u0424\u043e\u0440\u043c\u0430 \u0432\u0445\u043e\u0434\u0430", + "file_type": "code", + "source_file": "frontend/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_index_login_form", + "community": 126, + "norm_label": "\u0444\u043e\u0440\u043c\u0430 \u0432\u0445\u043e\u0434\u0430" + }, + { + "label": "theme-toggle.js \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0445\u043e\u0434\u0430", + "file_type": "code", + "source_file": "frontend/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_index_theme_toggle_script", + "community": 126, + "norm_label": "theme-toggle.js \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0445\u043e\u0434\u0430" + }, + { + "label": "script.js \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0445\u043e\u0434\u0430", + "file_type": "code", + "source_file": "frontend/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_index_login_script", + "community": 126, + "norm_label": "script.js \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0445\u043e\u0434\u0430" + }, + { + "label": "\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u0438", + "file_type": "code", + "source_file": "frontend/admin/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_index_admin_spa_shell", + "community": 77, + "norm_label": "\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u0438" + }, + { + "label": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u0438", + "file_type": "code", + "source_file": "frontend/admin/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_index_sidebar_navigation", + "community": 78, + "norm_label": "\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u0438" + }, + { + "label": "\u041c\u0435\u043d\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0432\u044b\u0445\u043e\u0434\u0430", + "file_type": "code", + "source_file": "frontend/admin/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_index_settings_menu", + "community": 77, + "norm_label": "\u043c\u0435\u043d\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0432\u044b\u0445\u043e\u0434\u0430" + }, + { + "label": "\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u044f\u0432\u043e\u043a \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439", + "file_type": "code", + "source_file": "frontend/admin/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_index_teacher_request_badge", + "community": 77, + "norm_label": "\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u044f\u0432\u043e\u043a \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0438" + }, + { + "label": "\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 SPA \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", + "file_type": "code", + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_index_settings_spa_shell", + "community": 77, + "norm_label": "\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 spa \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a" + }, + { + "label": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", + "file_type": "code", + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_index_settings_navigation", + "community": 77, + "norm_label": "\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a" + }, + { + "label": "\u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u044c", + "file_type": "code", + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_index_admin_back_link", + "community": 77, + "norm_label": "\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u044c" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432", + "file_type": "code", + "source_file": "frontend/admin/settings/views/database.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_views_database_tenant_connection_management", + "community": 77, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432" + }, + { + "label": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u043e\u0432", + "file_type": "code", + "source_file": "frontend/admin/settings/views/database.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_views_database_tenants_table", + "community": 77, + "norm_label": "\u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u043e\u0432" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f", + "file_type": "code", + "source_file": "frontend/admin/settings/views/edu-forms.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_views_edu_forms_education_forms_management", + "community": 77, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f" + }, + { + "label": "\u0417\u0430\u0433\u043b\u0443\u0448\u043a\u0430 \u043e\u0431\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", + "file_type": "code", + "source_file": "frontend/admin/settings/views/general.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_views_general_general_settings_placeholder", + "community": 77, + "norm_label": "\u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430 \u043e\u0431\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a" + }, + { + "label": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0442\u043e\u0432", + "file_type": "code", + "source_file": "frontend/admin/settings/views/time-slots.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_views_time_slots_time_slots_settings", + "community": 77, + "norm_label": "\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0442\u043e\u0432" + }, + { + "label": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438", + "file_type": "concept", + "source_file": "frontend/admin/settings/views/time-slots.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_views_time_slots_time_slot_scope", + "community": 77, + "norm_label": "\u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u0435\u0438\u0441\u0442\u0432\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0438 \u0441\u0435\u0442\u043a\u0438" + }, + { + "label": "\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0440\u0443\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438", + "file_type": "code", + "source_file": "frontend/admin/settings/views/time-slots.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_settings_views_time_slots_manual_time_grid_modal", + "community": 77, + "norm_label": "\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0440\u0443\u0447\u043d\u043e\u0438 \u0441\u0435\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438" + }, + { + "label": "\u0414\u0430\u0448\u0431\u043e\u0440\u0434 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430", + "file_type": "code", + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_dashboard_dashboard_view", + "community": 123, + "norm_label": "\u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430" + }, + { + "label": "\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0430\u0440", + "file_type": "code", + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_dashboard_realtime_monitoring", + "community": 123, + "norm_label": "\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0430\u0440" + }, + { + "label": "\u0426\u0435\u043d\u0442\u0440 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 Red Zone", + "file_type": "code", + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_dashboard_conflict_center", + "community": 123, + "norm_label": "\u0446\u0435\u043d\u0442\u0440 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0438 red zone" + }, + { + "label": "\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430", + "file_type": "code", + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_dashboard_quick_navigation", + "community": 123, + "norm_label": "\u0431\u044b\u0441\u0442\u0440\u044b\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430" + }, + { + "label": "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a", + "file_type": "code", + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_academic_calendar_academic_calendar_view", + "community": 90, + "norm_label": "\u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0438 \u0443\u0447\u0435\u0431\u043d\u044b\u0438 \u0433\u0440\u0430\u0444\u0438\u043a" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0447\u0435\u0431\u043d\u044b\u043c\u0438 \u0433\u043e\u0434\u0430\u043c\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_academic_calendar_academic_year_management", + "community": 90, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0447\u0435\u0431\u043d\u044b\u043c\u0438 \u0433\u043e\u0434\u0430\u043c\u0438" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u043c\u0435\u0441\u0442\u0440\u0430\u043c\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_academic_calendar_semester_management", + "community": 60, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u043c\u0435\u0441\u0442\u0440\u0430\u043c\u0438" + }, + { + "label": "\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0433\u043e\u0434\u043e\u0432\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430", + "file_type": "code", + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_academic_calendar_calendar_grid_editor", + "community": 60, + "norm_label": "\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0433\u043e\u0434\u043e\u0432\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430" + }, + { + "label": "\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d \u0433\u0440\u0430\u0444\u0438\u043a\u0430", + "file_type": "code", + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_academic_calendar_calendar_subject_bindings", + "community": 90, + "norm_label": "\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d \u0433\u0440\u0430\u0444\u0438\u043a\u0430" + }, + { + "label": "\u0414\u0438\u0430\u043b\u043e\u0433 \u044f\u0447\u0435\u0439\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430", + "file_type": "code", + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_academic_calendar_calendar_day_dialog", + "community": 77, + "norm_label": "\u0434\u0438\u0430\u043b\u043e\u0433 \u044f\u0447\u0435\u0438\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430" + }, + { + "label": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/auditorium-workload.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_auditorium_workload_workload_view", + "community": 78, + "norm_label": "\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438" + }, + { + "label": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/auditorium-workload.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_auditorium_workload_workload_filters", + "community": 78, + "norm_label": "\u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u043d\u044b\u043c \u0444\u043e\u043d\u0434\u043e\u043c", + "file_type": "code", + "source_file": "frontend/admin/views/classrooms.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_classrooms_classroom_management", + "community": 78, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u043d\u044b\u043c \u0444\u043e\u043d\u0434\u043e\u043c" + }, + { + "label": "\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/classrooms.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_classrooms_equipment_dictionary", + "community": 78, + "norm_label": "\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f" + }, + { + "label": "\u041c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043b\u0435\u043a\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/classrooms.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_classrooms_equipment_multi_select", + "community": 85, + "norm_label": "\u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043b\u0435\u043a\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438" + }, + { + "label": "\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043a\u0430\u0444\u0435\u0434\u0440\u044b", + "file_type": "code", + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_department_workspace_department_workspace_view", + "community": 78, + "norm_label": "\u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043a\u0430\u0444\u0435\u0434\u0440\u044b" + }, + { + "label": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d \u043a\u0430\u0444\u0435\u0434\u0440\u044b", + "file_type": "code", + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_department_workspace_department_subject_import", + "community": 90, + "norm_label": "\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d \u043a\u0430\u0444\u0435\u0434\u0440\u044b" + }, + { + "label": "\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f \u043a \u043a\u0430\u0444\u0435\u0434\u0440\u0435", + "file_type": "code", + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_department_workspace_teacher_assignment", + "community": 78, + "norm_label": "\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f \u043a \u043a\u0430\u0444\u0435\u0434\u0440\u0435" + }, + { + "label": "\u0417\u0430\u044f\u0432\u043a\u0430 \u043a\u0430\u0444\u0435\u0434\u0440\u044b \u043d\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_department_workspace_teacher_request_form", + "community": 78, + "norm_label": "\u0437\u0430\u044f\u0432\u043a\u0430 \u043a\u0430\u0444\u0435\u0434\u0440\u044b \u043d\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f" + }, + { + "label": "\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a\u0430\u0444\u0435\u0434\u0440\u044b \u043f\u043e \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c", + "file_type": "code", + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_department_workspace_department_comments", + "community": 78, + "norm_label": "\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a\u0430\u0444\u0435\u0434\u0440\u044b \u043f\u043e \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_groups_group_management", + "community": 90, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f" + }, + { + "label": "\u0424\u0438\u043b\u044c\u0442\u0440 \u0433\u0440\u0443\u043f\u043f \u043f\u043e \u0444\u043e\u0440\u043c\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_groups_group_filters", + "community": 85, + "norm_label": "\u0444\u0438\u043b\u044c\u0442\u0440 \u0433\u0440\u0443\u043f\u043f \u043f\u043e \u0444\u043e\u0440\u043c\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u0433\u0440\u0443\u043f\u043f\u044b", + "file_type": "code", + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_groups_subgroup_management", + "community": 60, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u0433\u0440\u0443\u043f\u043f\u044b" + }, + { + "label": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0433\u0440\u0443\u043f\u043f\u0435", + "file_type": "code", + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_groups_group_calendar_assignment", + "community": 90, + "norm_label": "\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0433\u0440\u0443\u043f\u043f\u0435" + }, + { + "label": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0439", + "file_type": "code", + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_schedule_view_schedule_view_shell", + "community": 123, + "norm_label": "\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0438" + }, + { + "label": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0439", + "file_type": "code", + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_schedule_view_target_filters", + "community": 90, + "norm_label": "\u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0438" + }, + { + "label": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0439", + "file_type": "code", + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_schedule_view_schedule_results", + "community": 123, + "norm_label": "\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0438" + }, + { + "label": "\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_schedule_schedule_rule_constructor", + "community": 60, + "norm_label": "\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0427\u0430\u0441\u044b \u0438 \u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043d\u044f\u0442\u0438\u0439", + "file_type": "code", + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_schedule_schedule_hours_start_weeks", + "community": 60, + "norm_label": "\u0447\u0430\u0441\u044b \u0438 \u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043d\u044f\u0442\u0438\u0438" + }, + { + "label": "\u041c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043b\u0435\u043a\u0442 \u0433\u0440\u0443\u043f\u043f \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_schedule_schedule_group_multiselect", + "community": 60, + "norm_label": "\u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0435\u043b\u0435\u043a\u0442 \u0433\u0440\u0443\u043f\u043f \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0441\u043b\u043e\u0442\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", + "community": 60, + "norm_label": "\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0441\u043b\u043e\u0442\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f" + }, + { + "label": "\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f", + "file_type": "code", + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_schedule_schedule_visual_drawer", + "community": 60, + "norm_label": "\u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/subjects.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_subjects_subject_management", + "community": 90, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430\u043c\u0438" + }, + { + "label": "\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043a \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0435", + "file_type": "code", + "source_file": "frontend/admin/views/subjects.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_subjects_teacher_subject_binding", + "community": 78, + "norm_label": "\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0438 \u043a \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0435" + }, + { + "label": "\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0439", + "file_type": "code", + "source_file": "frontend/admin/views/teacher-requests.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "community": 78, + "norm_label": "\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u044f\u0432\u043e\u043a \u043d\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0435\u0438" + }, + { + "label": "\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u0443\u0437\u0430", + "file_type": "code", + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_university_structure_university_structure_view", + "community": 90, + "norm_label": "\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u0443\u0437\u0430" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0444\u0435\u0434\u0440\u0430\u043c\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_university_structure_department_management", + "community": 90, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0444\u0435\u0434\u0440\u0430\u043c\u0438" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_university_structure_specialty_management", + "community": 90, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_university_structure_profile_management", + "community": 90, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f" + }, + { + "label": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438", + "file_type": "code", + "source_file": "frontend/admin/views/users.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_users_user_management", + "community": 78, + "norm_label": "\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438" + }, + { + "label": "\u0412\u044b\u0431\u043e\u0440 \u0440\u043e\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "file_type": "code", + "source_file": "frontend/admin/views/users.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_admin_views_users_role_selector", + "community": 78, + "norm_label": "\u0432\u044b\u0431\u043e\u0440 \u0440\u043e\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" + }, + { + "label": "\u0420\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u0432 \u043a\u0430\u0431\u0438\u043d\u0435\u0442 \u043a\u0430\u0444\u0435\u0434\u0440\u044b", + "file_type": "code", + "source_file": "frontend/department/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_department_index_department_redirect", + "community": 78, + "norm_label": "\u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u0432 \u043a\u0430\u0431\u0438\u043d\u0435\u0442 \u043a\u0430\u0444\u0435\u0434\u0440\u044b" + }, + { + "label": "\u0420\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u0430", + "file_type": "code", + "source_file": "frontend/edu-office/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_edu_office_index_edu_office_redirect_page", + "community": 79, + "norm_label": "\u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u0430" + }, + { + "label": "\u041c\u0430\u0440\u0448\u0440\u0443\u0442 /admin/#schedule-view", + "file_type": "concept", + "source_file": "frontend/edu-office/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_edu_office_index_admin_schedule_view_route", + "community": 79, + "norm_label": "\u043c\u0430\u0440\u0448\u0440\u0443\u0442 /admin/#schedule-view" + }, + { + "label": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_student_schedule_page", + "community": 108, + "norm_label": "\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430" + }, + { + "label": "\u0412\u044b\u0431\u043e\u0440 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", + "file_type": "concept", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_group_selection", + "community": 108, + "norm_label": "\u0432\u044b\u0431\u043e\u0440 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430" + }, + { + "label": "\u041d\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", + "file_type": "concept", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_week_navigation", + "community": 108, + "norm_label": "\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430" + }, + { + "label": "\u0421\u0435\u0442\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", + "file_type": "concept", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_schedule_grid", + "community": 108, + "norm_label": "\u0441\u0435\u0442\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430" + }, + { + "label": "loadGroups", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_loadgroups", + "community": 99, + "norm_label": "loadgroups" + }, + { + "label": "loadSchedule", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_loadschedule", + "community": 124, + "norm_label": "loadschedule" + }, + { + "label": "renderWeek", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_renderweek", + "community": 124, + "norm_label": "renderweek" + }, + { + "label": "renderEmptyWeek", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_renderemptyweek", + "community": 124, + "norm_label": "renderemptyweek" + }, + { + "label": "renderDay", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_renderday", + "community": 124, + "norm_label": "renderday" + }, + { + "label": "renderLesson", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_renderlesson", + "community": 124, + "norm_label": "renderlesson" + }, + { + "label": "fetchJson", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_fetchjson", + "community": 99, + "norm_label": "fetchjson" + }, + { + "label": "refreshAccessToken", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_refreshaccesstoken", + "community": 99, + "norm_label": "refreshaccesstoken" + }, + { + "label": "logout", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_logout", + "community": 99, + "norm_label": "logout" + }, + { + "label": "storeAuthState", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_storeauthstate", + "community": 99, + "norm_label": "storeauthstate" + }, + { + "label": "clearAuthState", + "file_type": "code", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_clearauthstate", + "community": 99, + "norm_label": "clearauthstate" + }, + { + "label": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430", + "file_type": "concept", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_student_auth_state", + "community": 99, + "norm_label": "\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430" + }, + { + "label": "GET /api/groups", + "file_type": "concept", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_api_groups_endpoint", + "community": 99, + "norm_label": "get /api/groups" + }, + { + "label": "GET /api/schedule \u043f\u043e groupId", + "file_type": "concept", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_api_schedule_group_endpoint", + "community": 79, + "norm_label": "get /api/schedule \u043f\u043e groupid" + }, + { + "label": "POST /api/auth/refresh", + "file_type": "concept", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_api_auth_refresh_endpoint", + "community": 99, + "norm_label": "post /api/auth/refresh" + }, + { + "label": "POST /api/auth/logout", + "file_type": "concept", + "source_file": "frontend/student/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_student_index_api_auth_logout_endpoint", + "community": 99, + "norm_label": "post /api/auth/logout" + }, + { + "label": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_teacher_schedule_page", + "community": 108, + "norm_label": "\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f" + }, + { + "label": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u0437 userId", + "file_type": "concept", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_teacher_identity", + "community": 108, + "norm_label": "\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u0437 userid" + }, + { + "label": "\u041d\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", + "file_type": "concept", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_week_navigation", + "community": 108, + "norm_label": "\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f" + }, + { + "label": "\u0421\u0435\u0442\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", + "file_type": "concept", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_schedule_grid", + "community": 108, + "norm_label": "\u0441\u0435\u0442\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f" + }, + { + "label": "\u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", + "file_type": "concept", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_responsive_schedule_layout", + "community": 108, + "norm_label": "\u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f" + }, + { + "label": "loadSchedule", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_loadschedule", + "community": 114, + "norm_label": "loadschedule" + }, + { + "label": "renderWeek", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_renderweek", + "community": 114, + "norm_label": "renderweek" + }, + { + "label": "renderMobileWeek", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_rendermobileweek", + "community": 114, + "norm_label": "rendermobileweek" + }, + { + "label": "renderEmptyWeek", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_renderemptyweek", + "community": 114, + "norm_label": "renderemptyweek" + }, + { + "label": "renderHead", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_renderhead", + "community": 114, + "norm_label": "renderhead" + }, + { + "label": "renderCell", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_rendercell", + "community": 114, + "norm_label": "rendercell" + }, + { + "label": "renderLesson", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_renderlesson", + "community": 114, + "norm_label": "renderlesson" + }, + { + "label": "collectSlots", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_collectslots", + "community": 114, + "norm_label": "collectslots" + }, + { + "label": "fetchJson", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_fetchjson", + "community": 113, + "norm_label": "fetchjson" + }, + { + "label": "refreshAccessToken", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_refreshaccesstoken", + "community": 113, + "norm_label": "refreshaccesstoken" + }, + { + "label": "logout", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_logout", + "community": 113, + "norm_label": "logout" + }, + { + "label": "storeAuthState", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_storeauthstate", + "community": 113, + "norm_label": "storeauthstate" + }, + { + "label": "clearAuthState", + "file_type": "code", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_clearauthstate", + "community": 113, + "norm_label": "clearauthstate" + }, + { + "label": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f", + "file_type": "concept", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_teacher_auth_state", + "community": 113, + "norm_label": "\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f" + }, + { + "label": "GET /api/schedule \u043f\u043e teacherId", + "file_type": "concept", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_api_schedule_teacher_endpoint", + "community": 79, + "norm_label": "get /api/schedule \u043f\u043e teacherid" + }, + { + "label": "POST /api/auth/refresh", + "file_type": "concept", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_api_auth_refresh_endpoint", + "community": 113, + "norm_label": "post /api/auth/refresh" + }, + { + "label": "POST /api/auth/logout", + "file_type": "concept", + "source_file": "frontend/teacher/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "frontend_teacher_index_api_auth_logout_endpoint", + "community": 113, + "norm_label": "post /api/auth/logout" + }, + { + "label": "\u0420\u0435\u0437\u044e\u043c\u0435 DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430", + "file_type": "document", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_devops_resume_page", + "community": 127, + "norm_label": "\u0440\u0435\u0437\u044e\u043c\u0435 devops-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430" + }, + { + "label": "\u0417\u0443\u0435\u0432 \u0415\u0433\u043e\u0440 \u0410\u043b\u0435\u043a\u0441\u0435\u0435\u0432\u0438\u0447", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_zuev_egor_alekseevich", + "community": 127, + "norm_label": "\u0437\u0443\u0435\u0432 \u0435\u0433\u043e\u0440 \u0430\u043b\u0435\u043a\u0441\u0435\u0435\u0432\u0438\u0447" + }, + { + "label": "Junior DevOps / Infrastructure Engineer", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_junior_devops_infrastructure_engineer", + "community": 127, + "norm_label": "junior devops / infrastructure engineer" + }, + { + "label": "\u0421\u0442\u0430\u0440\u0442\u0430\u043f \u0423\u043c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_smart_schedule_startup", + "community": 79, + "norm_label": "\u0441\u0442\u0430\u0440\u0442\u0430\u043f \u0443\u043c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435" + }, + { + "label": "Database-per-Tenant", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_database_per_tenant", + "community": 79, + "norm_label": "database-per-tenant" + }, + { + "label": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 Kubernetes K3s", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_kubernetes_k3s_delivery", + "community": 79, + "norm_label": "\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 kubernetes k3s" + }, + { + "label": "\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0435\u043d\u0430\u043d\u0442\u044b \u0447\u0435\u0440\u0435\u0437 ConfigMap", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_dynamic_tenants_configmap", + "community": 79, + "norm_label": "\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0435\u043d\u0430\u043d\u0442\u044b \u0447\u0435\u0440\u0435\u0437 configmap" + }, + { + "label": "\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u0430 backend", + "file_type": "rationale", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_backend_resilient_startup", + "community": 79, + "norm_label": "\u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0438\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u0430 backend" + }, + { + "label": "Ansible \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0438\u0436\u0438\u043d\u0438\u043d\u0433", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_ansible_security_provisioning", + "community": 79, + "norm_label": "ansible \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0438 \u043f\u0440\u043e\u0432\u0438\u0436\u0438\u043d\u0438\u043d\u0433" + }, + { + "label": "CI/CD \u0447\u0435\u0440\u0435\u0437 Gitea Actions", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_gitea_actions_cicd", + "community": 79, + "norm_label": "ci/cd \u0447\u0435\u0440\u0435\u0437 gitea actions" + }, + { + "label": "Observability \u0447\u0435\u0440\u0435\u0437 OpenTelemetry \u0438 SigNoz", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_opentelemetry_signoz_observability", + "community": 79, + "norm_label": "observability \u0447\u0435\u0440\u0435\u0437 opentelemetry \u0438 signoz" + }, + { + "label": "Homelab \u043a\u0430\u043a \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430", + "file_type": "concept", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_homelab_engineering_practice", + "community": 127, + "norm_label": "homelab \u043a\u0430\u043a \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430" + }, + { + "label": "Runbook-\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430\u0445", + "file_type": "rationale", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_incident_runbook_mindset", + "community": 79, + "norm_label": "runbook-\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430\u0445" + }, + { + "label": "\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b DevSecOps", + "file_type": "rationale", + "source_file": "resume/index.html", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "resume_index_devsecops_principles", + "community": 79, + "norm_label": "\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b devsecops" + } + ], + "links": [ + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_application", + "target": "backend_src_main_java_com_magistr_app_application_application", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_application", + "target": "enablescheduling", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_application", + "target": "springbootapplication", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_application_application", + "target": "backend_src_main_java_com_magistr_app_application_application_main", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L9", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_application_application", + "target": "enablescheduling", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L9", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_application_application", + "target": "springbootapplication", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_application_application_main", + "target": "backend_src_main_java_com_magistr_app_application_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/Application.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_application_application_main", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_appconfig", + "target": "backend_src_main_java_com_magistr_app_config_appconfig_appconfig", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_appconfig", + "target": "backend_src_main_java_com_magistr_app_config_appconfig_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_appconfig", + "target": "backend_src_main_java_com_magistr_app_config_appconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_appconfig", + "target": "backend_src_main_java_com_magistr_app_config_appconfig_java_configuration", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_appconfig_appconfig", + "target": "backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_appconfig_appconfig", + "target": "backend_src_main_java_com_magistr_app_config_appconfig_java_configuration", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", + "target": "backend_src_main_java_com_magistr_app_config_appconfig_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/AppConfig.java", + "source_location": "L10", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_appconfig_appconfig_passwordencoder", + "target": "backend_src_main_java_com_magistr_app_config_appconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_java_component", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer", + "target": "commandlinerunner", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_datainitializer", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_java_component", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer", + "target": "commandlinerunner", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_datainitializer", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L29", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", + "target": "backend_src_main_java_com_magistr_app_config_datainitializer_java_override", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer_run", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_authcontext", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_clear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_java_threadlocal", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L5", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L108", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_setcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L14", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L124", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L336", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L328", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L103", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L328", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L206", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_getcurrentuser" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java", + "source_location": "L18", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_java_long", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L123", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L181", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L233", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L91", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L134", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L167", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L253", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_currentuserid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_auth_authcontext_authcontext_clear" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L108", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "target": "backend_src_main_java_com_magistr_app_config_auth_authenticateduser_authenticateduser" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_component", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_objectmapper", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor", + "target": "handlerinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_authorizationinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_component", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_objectmapper", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "confidence_score": 1.0 + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "target": "handlerinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor", + "target": "handlerinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "target": "handlerinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L21", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_objectmapper", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L21", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_authorizationinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L26", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_override", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L65", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L65", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L88", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_httpservletresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L65", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L70", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L65", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_override", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_ispublicauthendpoint", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L65", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_exception", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L70", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_resolveroles", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L81", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_bearertoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "source_location": "L88", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor_writeerror", + "target": "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_component", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_duration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties", + "target": "configurationproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L9", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_component", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_duration", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getaccessttl", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getsecret", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_isrefreshcookiesecure", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_secretbytes", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setaccessttl", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiename", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiesecure", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshttl", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setsecret", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L9", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "target": "configurationproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L27", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L45", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L19", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getsecret", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshcookiename", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setsecret", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getaccessttl", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_duration", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_duration", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L31", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setaccessttl", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_duration", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshttl", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_java_duration", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setsecret" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getaccessttl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setaccessttl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L168", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshttl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshttl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_setrefreshttl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L173", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L163", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L188", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_getrefreshcookiename" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L175", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_isrefreshcookiesecure" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L165", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_isrefreshcookiesecure" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwtproperties_jwtproperties_secretbytes" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice", + "target": "jwtdecoder", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice", + "target": "jwtencoder", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L25", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L97", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_jwttokenservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "jwtdecoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "target": "jwtencoder", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L45", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L74", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L53", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getusername" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L106", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_createaccesstoken" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L74", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_authenticate" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L97", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L97", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", + "source_location": "L97", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice_aslong", + "target": "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_java_object", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenrotation_refreshtokenrotation", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice", + "target": "securerandom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L18", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L119", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L109", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L125", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_refreshtokenservice", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "target": "securerandom", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L33", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L45", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater", + "target": "securerandom", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", + "target": "securerandom" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_refreshtokenservice", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L34", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L34", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setipaddress" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuseragent" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_createsession" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L119", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L109", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L125", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L94", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L50", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L94", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L50", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L50", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_generaterawtoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_limit", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_isactive" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setipaddress" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrevokedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrotatedtotokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuseragent" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_rotate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L100", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L101", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrevokedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java", + "source_location": "L100", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_revoke" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_main_java_com_magistr_app_config_auth_refreshtokenservice_refreshtokenservice_hashtoken" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_requireroles", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_requireroles", + "target": "retention", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_requireroles", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_auth_requireroles", + "target": "target", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "source_location": "L10", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "target": "retention", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "source_location": "L10", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "target": "target", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L27", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L29", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L16", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L33", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L37", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L127", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L368", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L223", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L309", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L238", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L322", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L173", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L16", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L18", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L22", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L114", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L83", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L20", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L33", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L57", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L143", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L23", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L20", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L26", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L200", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L66", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L262", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L77", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L21", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_objectmapper", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_service", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater", + "target": "httpclient", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_configmapupdater", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L38", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_objectmapper", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L28", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_service", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L36", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L33", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L52", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L52", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L91", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L179", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", + "target": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_updatetenantsconfig" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L121", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "source_location": "L104", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater_createinsecureclient", + "target": "httpclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig", + "target": "jsonignoreproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setdomain", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_seturl", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L8", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "target": "jsonignoreproperties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L133", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L102", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L120", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L23", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L135", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L123", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L88", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L30", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getname", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L39", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getpassword", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L33", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L36", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getusername", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L31", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setdomain", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setname", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L40", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setpassword", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_seturl", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setusername", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "source_location": "L19", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_tenantconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L134", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getdomain" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_geturl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L138", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getusername" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L138", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setusername" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L106", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setusername" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L139", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_getpassword" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L139", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setpassword" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L107", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig_setpassword" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_component", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_datasource", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_objectmapper", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher", + "target": "scheduled", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L28", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_component", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_datasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L35", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_objectmapper", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L41", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_tenantconfigwatcher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L33", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_datasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L90", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_tenantconfigwatcher", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L51", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_watchforchanges", + "target": "scheduled", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L181", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_refreshhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_confighash" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L102", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L103", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L123", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_synctenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L159", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_clear" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L136", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_setcurrenttenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L147", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L157", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "source_location": "L157", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher_initdatabasefortenant" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_java_threadlocal", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_clear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_setcurrenttenant", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_setcurrenttenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L97", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_getcurrenttenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_setcurrenttenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantcontext_tenantcontext_clear" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_configuration", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_datasource", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "entitymanagerfactory", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "localcontainerentitymanagerfactorybean", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "platformtransactionmanager", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig", + "target": "primary", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L29", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_configuration", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L43", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L120", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L46", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L46", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_datasource", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L46", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_datasource", + "target": "primary", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L94", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_datasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L89", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_datasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L94", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L89", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L114", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L94", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", + "target": "primary", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L114", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", + "target": "primary", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L89", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_entitymanagerfactory", + "target": "localcontainerentitymanagerfactorybean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L114", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", + "target": "entitymanagerfactory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L114", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_transactionmanager", + "target": "platformtransactionmanager", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L120", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantdatasourceconfig_tenantdatasourceconfig_loadtenantsfromfile", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_httpservletresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_setroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_setroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_setroutingdatasource" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_httpservletresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L43", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_override", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_prehandle", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_httpservletresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L79", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_override", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_aftercompletion", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_exception", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java", + "source_location": "L85", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_tenantinterceptor_resolvetenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantinterceptor_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource", + "target": "abstractroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource", + "target": "hikaridatasource", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "abstractroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L24", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L23", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L135", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L123", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L131", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_isinitialized", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L103", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L12", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L123", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L123", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L127", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L71", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_removetenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L88", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L103", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L33", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L33", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_determinecurrentlookupkey", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_java_override", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testconnection", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L117", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection", + "target": "hikaridatasource", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L166", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_testexternalconnection" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L178", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_gettenantconfigs" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L135", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_hastenant" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "source_location": "L135", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource_createdatasource", + "target": "hikaridatasource", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java_configuration", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig", + "target": "interceptorregistry", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig", + "target": "webmvcconfigurer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L9", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java_configuration", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantwebmvcconfig", + "confidence_score": 1.0 + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig", + "target": "webmvcconfigurer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L21", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_tenantinterceptor", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java_bean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L28", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", + "target": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_java_override", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_config_tenant_tenantwebmvcconfig_tenantwebmvcconfig_addinterceptors", + "target": "interceptorregistry", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L239", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L233", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L227", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L139", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L175", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L132", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L252", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L271", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L260", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L154", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L116", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L61", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L214", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L201", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L188", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_academiccalendaradmincontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L38", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L38", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L38", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getyears", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L132", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L88", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L132", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L88", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L46", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L46", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L46", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createyear", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L139", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L95", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L175", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L78", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L154", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L116", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L61", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L139", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L95", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L61", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L61", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L61", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateyear", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L95", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L175", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L78", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L88", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L154", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L116", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L154", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L116", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L78", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteyear", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L175", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L88", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getsemesters", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L111", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L101", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L95", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L109", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L112", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createsemester", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L129", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L122", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L129", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L116", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L128", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updatesemester", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L132", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L134", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_getactivitytypes", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L149", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L151", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L141", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L151", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L139", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L148", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L150", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_createactivitytype", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L170", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L172", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L161", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L172", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L154", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L166", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L171", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_updateactivitytype", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L180", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_existsbyactivitytypeid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L184", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_deleteactivitytype", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L188", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L188", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateyear", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L214", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L201", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L201", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validatesemester", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L214", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_validateactivitytype", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L227", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L227", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L233", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L233", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L234", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applysemester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_setsemestertype" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L239", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L239", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L242", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setallowschedule" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L243", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcolorcode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L242", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_applyactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L252", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L252", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L253", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toacademicyeardto", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L260", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L260", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L265", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_tosemesterdto", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_getsemestertype" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L271", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L271", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L276", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getallowschedule" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java", + "source_location": "L277", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendaradmincontroller_academiccalendaradmincontroller_toactivitytypedto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcolorcode" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L178", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L216", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L100", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L149", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L254", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L242", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L125", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L159", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L301", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L340", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L324", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L27", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L29", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L33", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_academiccalendarcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L57", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L57", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L57", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L57", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendars", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L100", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L66", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L115", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L149", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L125", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L159", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L85", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L254", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L125", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L159", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L66", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L115", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L149", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L69", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L66", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L73", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L100", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L115", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L149", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L125", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L159", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L85", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L73", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L73", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_createcalendar", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L85", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L85", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L93", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_updatecalendar", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L125", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L159", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L100", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L107", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_deletecalendar", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L120", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getgrid", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L139", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L125", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L125", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L145", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L142", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savegrid", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L159", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L154", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L168", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L159", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L174", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L170", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L169", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_savesubjects", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L178", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L178", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L213", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setcoursecount" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L212", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setstudyform" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L202", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L180", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_applycalendar", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L231", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L216", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L216", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L227", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L216", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L238", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setactivitytype" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L234", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setcoursenumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L236", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setweeknumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L221", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_buildgridday", + "target": "illegalargumentexception" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L242", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L242", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L245", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_resolveactivitytype", + "target": "illegalargumentexception" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L254", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L254", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L259", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L291", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L293", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsemesternumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L287", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_deletebyacademiccalendar_id" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L256", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_replacecalendarsubjects", + "target": "illegalargumentexception" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L301", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L301", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L320", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L305", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendardto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getstudyform" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L324", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L336", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getallowschedule" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L324", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_togriddaydto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L340", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L340", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java", + "source_location": "L345", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_academiccalendarcontroller_academiccalendarcontroller_tocalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsemesternumber" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller", + "target": "responsecookie", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L172", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L195", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L136", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L112", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L122", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L162", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L182", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L149", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L155", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L36", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L26", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L26", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L36", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L45", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L112", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L195", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L136", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L112", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L162", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L182", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L45", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_authcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L80", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L57", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L57", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L57", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L57", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_login", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L195", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L112", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L88", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L182", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L112", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L122", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L88", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L149", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L155", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L112", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L88", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clientip", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L109", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L108", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L88", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refresh", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L118", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L112", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_logout", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L122", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_me" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L136", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L136", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_loginresponse", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L149", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorized", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L158", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L155", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_unauthorizedwithclearedcookie", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L162", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookie", + "target": "responsecookie", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L172", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_clearrefreshcookie", + "target": "responsecookie", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L182", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "target": "backend_src_main_java_com_magistr_app_controller_authcontroller_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/AuthController.java", + "source_location": "L188", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_authcontroller_authcontroller_refreshcookievalue", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_model_equipment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_classroomcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L151", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L119", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L145", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L132", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_classroomcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L32", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L32", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_getallclassrooms", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L43", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L69", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_createclassroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L119", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L132", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L73", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L132", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L116", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L73", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L73", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L73", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L107", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_updateclassroom", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L119", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L132", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L119", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L128", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_deleteclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L142", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L141", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_restoreclassroom", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L147", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L145", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L145", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "source_location": "L151", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_classroomcontroller_cleantext", + "target": "backend_src_main_java_com_magistr_app_controller_classroomcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_databasecontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L177", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L131", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L152", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L27", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L27", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L47", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L47", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L47", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L47", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L283", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L269", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L302", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L130", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L150", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L170", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L292", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L182", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_getstatus" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L88", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L68", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L131", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L152", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L88", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L68", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L131", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L152", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L88", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L68", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L131", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L152", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L88", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L68", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L131", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L152", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L68", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L68", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_gettenants", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L116", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L88", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L123", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_addtenant", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L152", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L142", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_persisttoconfigmap", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L131", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_removetenant", + "target": "backend_src_main_java_com_magistr_app_controller_databasecontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "source_location": "L167", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller_testconnection", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L157", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_departmentcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L171", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_departmentcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L32", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_getalldepartments", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L55", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L55", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_createdepartment", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L157", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L171", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L102", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L171", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L102", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L102", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L142", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L102", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L151", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L126", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L132", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L125", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_updatedepartment", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L157", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L171", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L157", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L166", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_deletedepartment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentController.java", + "source_location": "L178", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentcontroller_departmentcontroller_restoredepartment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L110", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L305", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L335", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L200", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L327", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L237", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L187", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L130", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L293", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L248", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L273", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L260", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L319", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L29", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L29", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L39", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L37", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L36", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L41", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L40", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L38", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L42", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L110", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L305", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L335", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L327", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L99", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L237", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L60", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L187", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L130", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_departmentworkspacecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L60", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L60", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L60", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getsubjects", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L187", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L130", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L66", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L99", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L237", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L187", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L130", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L66", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L66", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L66", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "confidence_score": 1.0 + }, + { + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L44", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_initdepartmentworkspace", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_importsubjects" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L110", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L200", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L99", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L237", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L110", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L200", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getcomments" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L110", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L110", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L120", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L293", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L293", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L319", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L132", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L130", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L146", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L134", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L157", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L158", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L184", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L180", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L153", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L182", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L175", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L179", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L171", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L110", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_addteachertodepartment" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L305", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_aslong", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L293", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L319", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L189", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L187", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L191", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L195", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getteacherrequests", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L205", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L234", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L213", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L234", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L200", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L227", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L233", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setrequestedby" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L223", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L222", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_createteacherrequest", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L243", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_effectivedepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L237", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L244", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L248", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", + "target": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L248", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L249", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_tocommentdto", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getauthor" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L260", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L260", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L273", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L273", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L289", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedteacherid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L284", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getrequestedby" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L287", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L286", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toteachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedby" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L293", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L301", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_toassignmentmap", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java", + "source_location": "L339", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_departmentworkspacecontroller_departmentworkspacecontroller_canaccessdepartment", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_model_educationform", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L16", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L16", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L25", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L25", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L25", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_educationformcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L33", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L33", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L33", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L33", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L33", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L41", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L41", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L41", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L41", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L59", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L59", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_countbystudyformid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/EducationFormController.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_educationformcontroller_educationformcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_equipmentcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L21", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_equipmentcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L25", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L25", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L25", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_getallequipments", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L30", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L30", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L30", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L30", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_createequipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L58", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L58", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L47", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_deleteequipment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", + "target": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/EquipmentController.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_equipmentcontroller_equipmentcontroller_restoreequipment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_map", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "exceptionhandler", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "nosuchelementexception", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler", + "target": "restcontrolleradvice", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L18", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler", + "target": "restcontrolleradvice", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "exceptionhandler", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleillegalargument", + "target": "illegalargumentexception", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L167", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L442", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L499", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L559", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L218", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L177", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L150", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", + "target": "illegalargumentexception" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", + "target": "illegalargumentexception" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_httpservletrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L58", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L58", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L58", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L68", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L58", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "exceptionhandler", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "exceptionhandler", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "target": "exceptionhandler", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L32", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlenotfound", + "target": "nosuchelementexception", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L41", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_exception", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handlebadrequest", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_java_exception", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_handleunexpected", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L167", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L121", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L217", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L276", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L262", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L124", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L103", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_error" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "source_location": "L68", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler_reason", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "httpstatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_educationform", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_speciality", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_subject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L368", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L223", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L309", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L380", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L280", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L238", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L322", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L403", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L417", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L173", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L250", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L275", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L42", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L37", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L37", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L49", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L50", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L48", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L45", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L44", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L46", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L47", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L51", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L52", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L53", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_groupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L77", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L77", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L77", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getallgroups", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L380", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L403", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L309", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L99", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L99", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L99", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L121", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getgroupsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L368", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L223", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L309", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L380", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L238", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L322", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L395", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L173", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L127", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L368", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L223", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L309", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L238", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L322", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L173", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L250", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L275", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L165", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L127", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L161", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L127", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L142", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L167", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L153", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L156", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_seteducationform" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L149", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_creategroup", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L238", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L215", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L184", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L173", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L212", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L173", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L193", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L217", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L207", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_seteducationform" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L200", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_updategroup", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L322", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L223", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L233", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletegroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L368", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L247", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L246", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_restoregroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L252", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L250", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L266", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L275", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_validationerror", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L280", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L280", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L291", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_geteducationform" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L305", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_getlabel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L303", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L281", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L282", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_maptoresponse", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L316", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L318", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L315", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_getcalendarassignments", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L365", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L359", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L322", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L348", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getstudyform" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L348", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_geteducationform" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L341", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L360", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L352", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L358", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_savecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L372", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L376", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_deletecalendarassignment", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L380", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L380", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L380", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L388", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_loadcalendarsubjectsbycalendar", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L395", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_controller_groupcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L403", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L403", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L403", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L417", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L417", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/GroupController.java", + "source_location": "L422", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_groupcontroller_groupcontroller_tocalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsemesternumber" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_model_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_lessontypecontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_lessontypecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L26", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L26", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", + "target": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_lessontypecontroller_lessontypecontroller_getalllessontypes", + "target": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L16", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L16", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_schedulecontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L25", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_schedulecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L29", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L29", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulecontroller_schedulecontroller_getschedule", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L145", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L61", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L129", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_scheduleoverridecontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L41", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L41", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L41", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_getall", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L48", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L48", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L48", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_create", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L61", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L71", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L53", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L53", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_update", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L61", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L71", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L61", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_delete", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L71", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setaction" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setbaseruleslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setlessondate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewclassroom" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewlessonformat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewteacher" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewtimeslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L125", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L231", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L176", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L188", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L249", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L152", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L130", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L109", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L110", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L138", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L151", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L164", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L183", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L159", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L184", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L196", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L241", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_save" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L98", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L98", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_validate", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L145", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_clean", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L129", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L129", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L134", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getaction" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L132", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getbaseruleslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getlessondate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L136", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewclassroom" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L138", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewlessonformat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewteacher" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "source_location": "L135", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewtimeslot" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L662", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller", + "target": "dayofweek", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L18", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L18", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L332", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L381", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L165", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L440", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L272", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L399", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L211", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfieldlabel", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L248", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L202", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L426", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L639", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L220", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L650", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L646", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L306", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L575", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isinvalidstartweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L567", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_ismissing", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L571", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isnegative", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L390", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L280", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L484", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L287", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L262", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L417", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L317", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L654", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L321", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L268", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L276", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L583", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L614", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L145", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L549", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L524", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L579", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_valueorzero", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L25", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L37", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L38", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L33", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L39", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L35", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L36", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L40", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L211", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfieldlabel", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L248", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L426", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L639", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L650", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L646", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L145", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L524", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L662", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L332", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L381", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L248", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L306", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L484", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L321", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_scheduleruleadmincontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L64", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L64", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L64", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L64", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L69", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L272", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L133", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L220", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L74", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L306", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L317", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L321", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L268", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L276", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L104", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L426", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L654", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L549", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L74", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L74", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_getbyid", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L202", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L81", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L133", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L104", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L81", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L81", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L91", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L100", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L81", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L97", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L104", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L104", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L119", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L122", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L120", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L112", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L129", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L104", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L118", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L120", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L126", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L133", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L141", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_delete", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L156", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L152", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L145", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validaterule", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L194", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L173", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L196", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L165", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L165", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L189", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L198", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L184", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratoryacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L187", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratorystartweek" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L183", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlectureacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L186", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlecturestartweek" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L185", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticeacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L188", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticestartweek" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L182", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_applyrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsemester" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L205", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L202", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictresponse", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L220", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_collection", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L221", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L225", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L220", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L220", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L225", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L220", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L223", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_findconflict", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L332", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_collection", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_collection", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L236", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_linkedhashset", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L235", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L240", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L241", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L239", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L231", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toconflict", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L332", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L332", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L381", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksoverlap", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L639", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L575", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isinvalidstartweek", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L567", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_ismissing", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L571", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isnegative", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L579", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_valueorzero", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L249", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_linkedhashset", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L253", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L256", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L250", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L248", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L250", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_conflictfields", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L264", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L265", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L262", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L263", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sametimeslot", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L453", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L268", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L261", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L204", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_teacherid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L458", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L272", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L273", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L263", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L103", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L202", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_classroomid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L447", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L276", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L277", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L159", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L255", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L61", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_timeslotid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L280", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L281", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_parityoverlaps", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L288", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L293", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L296", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L287", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sameaudience", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L311", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L306", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L308", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L232", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L134", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_groupids" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L318", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L317", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestowholegroup", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L321", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L323", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L325", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_subgroupidsforgroup", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L367", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L344", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L363", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L352", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L346", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L360", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L332", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L339", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_activeweeksbyslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L390", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_maxweeksforrule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L399", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L408", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L408", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_compareslotsforgeneration", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L417", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_slotappliestoweek", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L426", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L432", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L426", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L432", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L427", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_consumptionscopes", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L466", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L440", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L465", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L440", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L440", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L478", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setclassroom" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L480", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessonformat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L474", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setparity" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L472", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setschedulerule" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L476", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L475", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_settimeslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L450", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L450", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_buildslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L485", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_linkedhashset", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L484", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L484", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L484", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L502", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L484", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_resolvesubgroups", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L535", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isinvalidstartweek", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L525", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_ismissing", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L530", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_isnegative", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L540", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_valueorzero", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L524", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypehours", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L552", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L559", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_getdisplayname" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L549", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L556", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L549", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_validatetypecoverage", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L583", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L583", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L584", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L603", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratoryacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L606", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratorystartweek" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L602", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlectureacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L605", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlecturestartweek" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L604", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticeacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L607", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticestartweek" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L587", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L590", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L601", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_getsemestertype" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L590", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L620", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_dayname", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L626", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L624", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L616", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L614", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L614", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L631", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L635", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessonformat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L615", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L623", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L630", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_toslotdto", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L646", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L647", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L647", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formattimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L650", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_formatsubgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L654", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L655", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L654", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller_sortedsubgroups", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L662", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", + "target": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_java_linkedhashset", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "source_location": "L662", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleconflict", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_schedulesearchcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_schedulesearchcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L27", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L124", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L110", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "target": "backend_src_main_java_com_magistr_app_controller_schedulesearchcontroller_schedulesearchcontroller_search" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L27", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L22", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L22", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L216", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L252", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L167", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L196", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L206", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L181", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_specialitycontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L281", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L293", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L234", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L111", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L268", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L29", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L32", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L32", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_specialitycontroller", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L38", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L38", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallspecialties", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L196", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L196", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L206", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L60", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L60", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L60", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L80", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createspeciality", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L216", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L252", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L167", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L206", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L181", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L234", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L111", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L216", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L181", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L111", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L111", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L111", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L161", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L136", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L142", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L135", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updatespeciality", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L216", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L252", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L167", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L206", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L181", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_restorespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L234", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L268", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L234", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L167", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deletespeciality", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L252", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L196", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getallprofiles", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L211", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_getprofiles", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L231", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L230", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L222", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L216", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L227", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_createprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L249", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L248", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L242", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L234", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L239", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_updateprofile", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L262", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L255", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_deleteprofile", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L268", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L268", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L276", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L275", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_validateprofile", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L293", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_trimtonull", + "target": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L281", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SpecialityController.java", + "source_location": "L281", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_specialitycontroller_specialitycontroller_toprofiledto", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L179", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L138", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L162", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L151", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_subgroupcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L38", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L38", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L38", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L45", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L45", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L45", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_getbygroup", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L114", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L83", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L151", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L114", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L83", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L80", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L69", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentcapacity" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_create", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L83", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L111", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L83", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L108", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentcapacity" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L97", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L110", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_update", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L114", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L124", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L121", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L117", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L131", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L138", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L138", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validate", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L162", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L151", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L151", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "target": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L151", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L153", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L154", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validategroupcapacity", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L162", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L164", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L169", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_validatedeletekeepscompletesplit", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L179", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L179", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubgroupController.java", + "source_location": "L186", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subgroupcontroller_subgroupcontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentcapacity" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L20", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L20", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L129", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L143", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_subjectcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L27", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_subjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L33", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L33", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getallsubjects", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L57", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L57", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L57", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_getsubjectsbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L129", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L143", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L79", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L129", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L143", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L79", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L123", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L106", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_createsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L143", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_restoresubject", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/SubjectController.java", + "source_location": "L129", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_subjectcontroller_deletesubject", + "target": "backend_src_main_java_com_magistr_app_controller_subjectcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L23", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L23", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L174", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L124", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L160", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L184", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L29", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_teachercreationrequestcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L46", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L46", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L46", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L46", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_getrequests", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L56", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L56", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L56", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L56", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L119", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L120", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L56", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedteacherid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L112", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedby" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_approve", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L124", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L124", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L124", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L136", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L124", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L135", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L134", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_reject", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedby" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L140", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L156", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedteacherid" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L151", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getrequestedby" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L154", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L153", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_toresponse", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedby" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L160", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L160", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L160", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L174", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L176", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_firstnotblank", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java", + "source_location": "L184", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_teachercreationrequestcontroller_trimtonull", + "target": "backend_src_main_java_com_magistr_app_controller_teachercreationrequestcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L20", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L20", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L27", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_teachersubjectcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L37", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L37", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_getall", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L50", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L50", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L50", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L50", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L50", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_create", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L81", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L81", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L81", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L81", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L81", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_delete", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L102", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java", + "source_location": "L102", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_teachersubjectcontroller_teachersubjectcontroller_canmanage", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L26", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L26", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L33", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L215", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L152", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L257", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L186", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L143", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L248", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L233", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L111", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L227", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L262", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L120", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L297", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L270", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L285", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L167", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L199", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L37", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L35", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L36", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L199", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_timeslotadmincontroller", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L47", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L47", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getall", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L233", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L111", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L59", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L111", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L54", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L59", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L54", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L54", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_geteffective", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L248", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L233", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L111", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L152", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L66", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L186", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L143", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L98", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L120", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L167", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L82", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L59", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L61", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getscopes", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L66", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L66", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setapplymode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setsystemscope" + }, + { + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L60", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots_inittimeslotssettings", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_createscope" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L152", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L120", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L82", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L82", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L82", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_updatescope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L186", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L143", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L98", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L227", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L167", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L167", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_putmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L98", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L107", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletescope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L186", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_delete", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L143", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_deletedateassignment", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L111", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L116", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_getdateassignments", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L120", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L132", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L132", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L136", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_savedateassignment", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L163", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L158", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L164", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L154", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L152", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L162", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_create", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L182", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L178", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L183", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L174", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L167", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_update", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L199", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_validate", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L215", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L215", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L224", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setdurationminutes" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L220", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setendtime" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L216", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L219", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setstarttime" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L142", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_apply" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L227", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L229", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L228", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_hasduplicate", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L234", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L235", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "target": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L237", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L233", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L242", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L236", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectiveslots", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L248", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L249", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L251", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_effectivescope", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L257", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L258", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_defaultscope", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L263", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_nextmanualdisplayorder", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L270", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L270", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L281", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getdurationminutes" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L280", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L274", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L279", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L277", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_todto", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L285", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L285", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L290", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L292", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toscopedto", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope" + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L297", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java", + "source_location": "L297", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_timeslotadmincontroller_timeslotadmincontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_model_department", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L41", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L37", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L327", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L175", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L200", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L262", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L189", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L310", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L296", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L277", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L218", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L39", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L40", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L38", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_bcryptpasswordencoder", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_usercontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L53", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L53", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L53", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getallusers", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L66", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L310", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L200", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L66", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L262", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L77", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L66", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachers", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L77", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L77", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L80", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L327", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L175", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L200", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L262", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L189", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L310", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L218", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L99", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L175", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L200", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L262", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L189", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L218", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_responseentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L99", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L172", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L99", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L148", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L161", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L165", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L152", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L118", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_createuser", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L189", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L218", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_postmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L175", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_deleteuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_deletemapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L197", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_restoreuser", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L209", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L213", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getdepartmenthistory", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L218", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_transactional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L259", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L218", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L247", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L251", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L237", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_transferteacher", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L262", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L267", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L272", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_getteachersbydepartmentatdate", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L310", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "target": "backend_src_main_java_com_magistr_app_controller_usercontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L277", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L277", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_touserresponse", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L296", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L296", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L305", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_toassignmentdto", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L310", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L312", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L320", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_teachersfordepartment", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/UserController.java", + "source_location": "L331", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_usercontroller_usercontroller_canaccessdepartment", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller", + "target": "function", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L21", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_requestmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L21", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_restcontroller", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L165", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L119", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L150", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L174", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L29", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L33", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L33", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L33", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L33", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_workloadcontroller", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L43", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L43", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_teacherworkload", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L64", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L75", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L119", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L104", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L64", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L165", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L75", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L119", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L137", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L150", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L104", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L64", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L75", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L119", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L137", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L150", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L104", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L64", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L75", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L119", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L104", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_getmapping", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L64", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_classroomworkload", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L75", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentworkload", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L112", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L104", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_timeslotworkload", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L119", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L131", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_freeclassrooms" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L137", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L145", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L137", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L137", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L137", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summarize", + "target": "function", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L165", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L150", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L155", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "target": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_departmentname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L150", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L150", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_summary", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L174", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/controller/WorkloadController.java", + "source_location": "L174", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_controller_workloadcontroller_workloadcontroller_toclassroomresponse", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", + "source_location": "L4", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_academiccalendaractivitytypedto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendaractivitytypedto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendardto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendardto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", + "source_location": "L17", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_academiccalendardto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendardto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L12", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java", + "source_location": "L14", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_academiccalendargriddaydto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendargriddaydto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", + "source_location": "L6", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_academiccalendarsubjectdto_academiccalendarsubjectdto", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_academicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_academicyeardto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_academicyeardto_academicyeardto", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_list", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getbuilding", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getcapacity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getfloor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getisavailable", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setbuilding", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setcapacity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setequipmentids", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setfloor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setisavailable", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L29", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getbuilding", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getname", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L33", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setbuilding", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L17", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setname", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L21", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getcapacity", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L37", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getfloor", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L25", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setcapacity", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L41", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setfloor", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L45", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getisavailable", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L49", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setisavailable", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L53", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L57", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setequipmentids", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L53", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_getequipmentids", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java", + "source_location": "L57", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_classroomrequest_classroomrequest_setequipmentids", + "target": "backend_src_main_java_com_magistr_app_dto_classroomrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L106", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivereason", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getbuilding", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getcapacity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getequipments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getfloor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getisavailable", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L110", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivereason", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setbuilding", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setcapacity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L118", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setequipments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setfloor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setisavailable", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setstatus", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L12", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L17", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L17", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L42", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getid", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L46", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setid", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L106", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivereason", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L66", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getbuilding", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L50", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getname", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L90", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getstatus", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L110", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivereason", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L70", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setbuilding", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L54", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setname", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L94", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setstatus", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L58", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getcapacity", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L74", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getfloor", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L62", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setcapacity", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L78", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setfloor", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L82", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getisavailable", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L86", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setisavailable", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L98", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getarchivedat", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L102", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setarchivedat", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L114", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getequipments", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L118", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setequipments", + "target": "backend_src_main_java_com_magistr_app_dto_classroomresponse_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_classroomresponse", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L114", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_getequipments", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java", + "source_location": "L118", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_classroomresponse_classroomresponse_setequipments", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_createdepartmentrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L6", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentname", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L14", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentname", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L18", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_getdepartmentcode", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_createdepartmentrequest_setdepartmentcode", + "target": "backend_src_main_java_com_magistr_app_dto_createdepartmentrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteducationformid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getgroupsize", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyprofileid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getyearstartstudy", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_seteducationformid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setgroupsize", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyprofileid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setyearstartstudy", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L12", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L14", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getname", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L18", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setname", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L38", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L30", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteducationformid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L78", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_geteffectivespecialtyid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L22", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getgroupsize", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L54", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialitycode", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L62", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L70", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getspecialtyprofileid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_seteducationformid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setgroupsize", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialitycode", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L66", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L74", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setspecialtyprofileid", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L46", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_getyearstartstudy", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java", + "source_location": "L50", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_creategrouprequest_setyearstartstudy", + "target": "backend_src_main_java_com_magistr_app_dto_creategrouprequest_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_createspecialityrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialityname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialityname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L6", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L18", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialitycode", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_getspecialityname", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialitycode", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java", + "source_location": "L14", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_createspecialityrequest_setspecialityname", + "target": "backend_src_main_java_com_magistr_app_dto_createspecialityrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L19", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getid", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setid", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_createsubjectrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getcode", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_getname", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setcode", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java", + "source_location": "L31", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_createsubjectrequest_setname", + "target": "backend_src_main_java_com_magistr_app_dto_createsubjectrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setusername", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getcomment", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L19", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getfullname", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getjobtitle", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getusername", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setcomment", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setfullname", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L31", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setjobtitle", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setusername", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_createteachercreationrequest_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_createteachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_createuserrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getrole", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setrole", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setusername", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L39", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getfullname", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getjobtitle", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L23", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getpassword", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getrole", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getusername", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setfullname", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setjobtitle", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setpassword", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setrole", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L19", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setusername", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L55", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_createuserrequest_createuserrequest_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_createuserrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L6", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L9", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentcode", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getid", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentcode", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L19", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setid", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L9", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_departmentresponse", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L23", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_getdepartmentname", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_departmentresponse_departmentresponse_setdepartmentname", + "target": "backend_src_main_java_com_magistr_app_dto_departmentresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest", + "target": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest", + "target": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", + "target": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", + "source_location": "L6", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", + "target": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_departmenttransferrequest", + "target": "backend_src_main_java_com_magistr_app_dto_departmenttransferrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java", + "source_location": "L12", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_groupcalendarassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_groupcalendarassignmentdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_jsoninclude", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L129", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getactive", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getcourse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getgroupsize", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L69", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L93", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getsemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L101", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L109", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L117", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofileid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L121", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofilename", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L125", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystatename", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L97", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getyearstartstudy", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_jsoninclude", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L85", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L77", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformid", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L73", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getgroupsize", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L65", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getid", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L101", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialitycode", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L105", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyid", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L117", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofileid", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L81", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_geteducationformname", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L69", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getname", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L109", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtycode", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L113", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyname", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L121", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getspecialtyprofilename", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L125", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstatus", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L133", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystate", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L137", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getstudystatename", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L89", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getcourse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L93", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getsemester", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L97", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getyearstartstudy", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L129", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_getactive", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/GroupResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_groupresponse_groupresponse_groupresponse", + "target": "backend_src_main_java_com_magistr_app_dto_groupresponse_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse", + "target": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", + "source_location": "L4", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", + "target": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_lessontyperesponse", + "target": "backend_src_main_java_com_magistr_app_dto_lessontyperesponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L6", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_loginrequest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setusername", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L19", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getpassword", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_getusername", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setpassword", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginRequest.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginrequest_loginrequest_setusername", + "target": "backend_src_main_java_com_magistr_app_dto_loginrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getredirect", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getrole", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_gettoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getuserid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_issuccess", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setmessage", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setredirect", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setrole", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setsuccess", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_settoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setuserid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L38", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getmessage", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L62", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getredirect", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L54", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getrole", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L46", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_gettoken", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L20", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setmessage", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L66", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setredirect", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setrole", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L50", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_settoken", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L70", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L78", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_getuserid", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L20", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_loginresponse", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L74", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/LoginResponse.java", + "source_location": "L82", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_loginresponse_loginresponse_setuserid", + "target": "backend_src_main_java_com_magistr_app_dto_loginresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L39", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L35", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L12", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L34", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L36", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java", + "source_location": "L40", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L53", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L96", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L155", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L221", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L231", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L227", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_mutablelesson", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L246", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L67", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L183", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L198", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L36", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_dto_renderedlessondto_renderedlessondto", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getreviewcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setreviewcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setusername", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L20", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getfullname", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L28", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getjobtitle", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L44", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getpassword", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L52", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getreviewcomment", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L12", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getusername", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L24", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setfullname", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L32", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setjobtitle", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L48", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setpassword", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L56", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setreviewcomment", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L16", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setusername", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L36", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java", + "source_location": "L40", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_reviewteachercreationrequest_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_reviewteachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L17", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_scheduleoverridedto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleoverridedto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L20", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L21", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L22", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruledto_scheduleruledto", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_scheduleruleslotdto_scheduleruleslotdto", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_semesterdto", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_semesterdto", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_semesterdto", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "target": "backend_src_main_java_com_magistr_app_dto_semesterdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SemesterDto.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_semesterdto_semesterdto", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialityname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialityname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getid", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L19", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setid", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L9", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialitycode", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L23", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_getspecialityname", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialitycode", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_setspecialityname", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java", + "source_location": "L9", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_specialityresponse_specialityresponse_specialityresponse", + "target": "backend_src_main_java_com_magistr_app_dto_specialityresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_specialtyprofiledto", + "target": "backend_src_main_java_com_magistr_app_dto_specialtyprofiledto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subgroupdto", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", + "source_location": "L5", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_subgroupdto_subgroupdto", + "target": "backend_src_main_java_com_magistr_app_dto_subgroupdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto", + "target": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto", + "target": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", + "target": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", + "target": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_subjectcommentdto", + "target": "backend_src_main_java_com_magistr_app_dto_subjectcommentdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L19", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getid", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getcode", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L23", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_getname", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_subjectresponse_subjectresponse_subjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_subjectresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", + "source_location": "L17", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_teachercreationrequestresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachercreationrequestresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", + "source_location": "L12", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java", + "source_location": "L14", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_teacherdepartmentassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_teacherdepartmentassignmentdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getuserid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L25", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectid", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L17", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getuserid", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L29", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getsubjectname", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L21", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_getusername", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_teachersubjectresponse_teachersubjectresponse", + "target": "backend_src_main_java_com_magistr_app_dto_teachersubjectresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_timeslotdateassignmentdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdateassignmentdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", + "source_location": "L14", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", + "source_location": "L8", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotdto_timeslotdto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotdto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", + "source_location": "L10", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", + "source_location": "L4", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_timeslotscopedto", + "target": "backend_src_main_java_com_magistr_app_dto_timeslotscopedto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_jsoninclude", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_jsoninclude", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L14", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getrole", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L70", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L46", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getid", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L74", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L38", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L66", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getdepartmentname", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L58", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getfullname", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L62", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getjobtitle", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L54", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getrole", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L78", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getstatus", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L50", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_getusername", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L82", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_setstatus", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/UserResponse.java", + "source_location": "L38", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_dto_userresponse_userresponse_userresponse", + "target": "backend_src_main_java_com_magistr_app_dto_userresponse_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", + "source_location": "L6", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java", + "source_location": "L7", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_workloadsummarydto", + "target": "backend_src_main_java_com_magistr_app_dto_workloadsummarydto_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getacademicyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspecialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getstudyform", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_gettitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setacademicyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setcoursecount", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspecialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setstudyform", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_settitle", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_table", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getacademiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setacademiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L42", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getacademiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L46", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setacademiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L49", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademiccalendar", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L33", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getid", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setid", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_gettitle", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_settitle", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L83", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L87", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setcoursecount", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L51", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getacademicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setacademicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L59", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspeciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L63", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspeciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L67", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getspecialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L71", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setspecialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L75", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getstudyform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setstudyform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_getcoursecount" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar_setcoursecount" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getallowschedule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcolorcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdescription", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdisplayorder", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setallowschedule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcolorcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdescription", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdisplayorder", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_table", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L83", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L87", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L58", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getid", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setid", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L39", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcode", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L63", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getcolorcode", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L79", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdescription", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getname", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcode", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setcolorcode", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L83", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdescription", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setname", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L55", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getallowschedule", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setallowschedule", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L71", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_getdisplayorder", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java", + "source_location": "L75", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_academiccalendaractivitytype_setdisplayorder", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendaractivitytype_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getacademiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getcoursenumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdayofweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getweeknumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setacademiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setcoursenumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdayofweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setweeknumber", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_table", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getid", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setid", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L51", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getcoursenumber", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L75", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdayofweek", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L67", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getweeknumber", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setcoursenumber", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdayofweek", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L71", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setweeknumber", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L59", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_getdate", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java", + "source_location": "L63", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarday_academiccalendarday_setdate", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarday_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getacademiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsemesternumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setacademiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsemesternumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L27", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_table", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L23", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L34", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getid", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L38", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setid", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L50", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsemesternumber", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L54", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsemesternumber", + "target": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L58", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_getsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java", + "source_location": "L62", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academiccalendarsubject_academiccalendarsubject_setsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getenddate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getstartdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_gettitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setenddate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setstartdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_settitle", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_table", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L37", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_getacademicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L41", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_setacademicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L17", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L41", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L45", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademicyear", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L24", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getid", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setid", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L32", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_gettitle", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_settitle", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L48", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getenddate", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L40", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_getstartdate", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L52", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setenddate", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicYear.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_academicyear_academicyear_setstartdate", + "target": "backend_src_main_java_com_magistr_app_model_academicyear_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L91", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getexpiresat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L123", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getipaddress", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getissuedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L107", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrotatedtotokenhash", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettokenhash", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuser", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L115", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuseragent", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L131", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_isactive", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setipaddress", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L103", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrevokedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L111", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrotatedtotokenhash", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L119", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuseragent", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L39", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L48", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_table", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L51", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getid", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setid", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L123", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getipaddress", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L107", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrotatedtotokenhash", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L67", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L75", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettokenhash", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L115", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuseragent", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L127", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setipaddress", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L111", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrotatedtotokenhash", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L71", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L119", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuseragent", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L91", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getexpiresat", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L83", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getissuedat", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L99", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L131", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_isactive", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L95", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L87", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L103", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setrevokedat", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L59", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getuser", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java", + "source_location": "L63", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L97", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settenant" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_gettokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_settokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setissuedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getexpiresat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L100", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_setexpiresat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrevokedat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_main_java_com_magistr_app_model_authrefreshtoken_authrefreshtoken_getrotatedtotokenhash" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_set", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getbuilding", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getcapacity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getequipments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getfloor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getisavailable", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setbuilding", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setcapacity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setequipments", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setfloor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L80", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setisavailable", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L29", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_table", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L29", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L86", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewclassroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L90", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewclassroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L44", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L141", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L145", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setclassroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", + "target": "backend_src_main_java_com_magistr_app_model_classroom_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L36", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getid", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L40", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setid", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L60", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getbuilding", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L44", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getname", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L64", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setbuilding", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L48", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setname", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L52", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getcapacity", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L68", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getfloor", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L56", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setcapacity", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L72", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setfloor", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L76", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getisavailable", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L80", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setisavailable", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L84", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getequipments", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L88", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setequipments", + "target": "backend_src_main_java_com_magistr_app_model_classroom_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L84", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_getequipments", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "source_location": "L88", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_classroom_classroom_setequipments", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_department", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_department", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_department_department", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_department_getdepartmentcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_department_getdepartmentname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_department_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_department_setdepartmentcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_department_setdepartmentname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_department_setid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_java_table", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_department_department", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L65", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getdepartment", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L69", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setdepartment", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L54", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getdepartment", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setdepartment", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_model_department_department", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L21", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_department_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_department_department_getdepartmentcode", + "target": "backend_src_main_java_com_magistr_app_model_department_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_department_department_getid", + "target": "backend_src_main_java_com_magistr_app_model_department_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_department_department_setdepartmentcode", + "target": "backend_src_main_java_com_magistr_app_model_department_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L31", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_department_department_setid", + "target": "backend_src_main_java_com_magistr_app_model_department_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L21", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_department_department_department", + "target": "backend_src_main_java_com_magistr_app_model_department_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_department_department_getdepartmentname", + "target": "backend_src_main_java_com_magistr_app_model_department_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_department_department_setdepartmentname", + "target": "backend_src_main_java_com_magistr_app_model_department_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform_setname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_java_table", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L64", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_geteducationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L68", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_seteducationform", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_model_educationform_educationform", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L19", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform_getid", + "target": "backend_src_main_java_com_magistr_app_model_educationform_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform_setid", + "target": "backend_src_main_java_com_magistr_app_model_educationform_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform_getname", + "target": "backend_src_main_java_com_magistr_app_model_educationform_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/EducationForm.java", + "source_location": "L31", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_educationform_educationform_setname", + "target": "backend_src_main_java_com_magistr_app_model_educationform_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment_setname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_table", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_model_equipment_equipment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L19", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L24", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment_getid", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment_setid", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L19", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment_equipment", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L32", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment_getname", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Equipment.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_equipment_equipment_setname", + "target": "backend_src_main_java_com_magistr_app_model_equipment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getlessontype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setlessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L20", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L48", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L149", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L153", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", + "source_location": "L6", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L16", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getid", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L20", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setid", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L24", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_getlessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LessonType.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lessontype_lessontype_setlessontype", + "target": "backend_src_main_java_com_magistr_app_model_lessontype_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_jsonignore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity", + "target": "mappedsuperclass", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactivefrom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactiveto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivereason", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L101", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_restore", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactivefrom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactiveto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivereason", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setstatus", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L10", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "target": "mappedsuperclass", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L94", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_archive", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L63", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivereason", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getstatus", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivereason", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setstatus", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L39", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactivefrom", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getactiveto", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L81", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactivefrom", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactiveto", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L55", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_getarchivedat", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setarchivedat", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactivefrom" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactiveto" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_setactiveto" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L71", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_jsonignore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiverecord", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L81", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_jsonignore", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L76", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_java_jsonignore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isactiveon", + "target": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_lifecycleentity_lifecycleentity_isarchivedrecord", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Role.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_role", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L59", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_getrole", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L63", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_setrole", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L20", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", + "target": "backend_src_main_java_com_magistr_app_model_role_role", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_getdisplayname", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L20", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L160", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L168", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L311", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L315", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L325", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_schedulelessoncategory", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L16", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_getdisplayname", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L438", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_getdisplayname" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L239", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", + "target": "backend_src_main_java_com_magistr_app_model_schedulelessoncategory_fromlessontype" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L8", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L47", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L44", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L41", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L8", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getaction", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getbaseruleslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L110", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L126", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L118", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedby", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getlessondate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewclassroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewlessonformat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewteacher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewtimeslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setaction", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setbaseruleslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L130", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L122", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedby", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setlessondate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewclassroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L106", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewlessonformat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewteacher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewtimeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L28", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L88", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L118", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedby", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L50", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L122", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedby", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L62", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getlessondate", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L66", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setlessondate", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L70", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getaction", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L110", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcomment", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L102", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewlessonformat", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L74", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setaction", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L114", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcomment", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L106", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewlessonformat", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L126", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getcreatedat", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L130", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setcreatedat", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L54", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getbaseruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getbaseruleslot" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setbaseruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getlessondate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getaction" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L78", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewtimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewtimeslot" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L82", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewtimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L103", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewclassroom" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L94", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewteacher", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewteacher" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java", + "source_location": "L98", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_setnewteacher", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L107", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_scheduleoverride_scheduleoverride_getnewlessonformat" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleParity.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleparity", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L79", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getparity", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L83", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setparity", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L44", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_scheduleparity_scheduleparity", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_jsonignore", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_set", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L10", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L50", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L14", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L61", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L10", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L160", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L199", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_archive", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L216", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L120", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratoryacademichours", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L144", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratorystartweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L112", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlectureacademichours", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L136", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlecturestartweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L128", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticeacademichours", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L152", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticestartweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L80", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L224", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidfrom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L186", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L176", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L181", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isarchivedrecord", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L203", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_restore", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L220", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setgroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L124", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratoryacademichours", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L148", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratorystartweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L116", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlectureacademichours", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L140", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlecturestartweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L132", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticeacademichours", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L156", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticestartweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L228", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setslots", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L100", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidfrom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L108", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L168", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L212", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L208", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L61", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L53", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L63", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setschedulerule", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L60", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L79", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L36", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L315", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L297", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L147", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L64", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getid", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L68", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setid", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L88", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getstatus", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L92", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setstatus", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L96", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidfrom", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L104", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getvalidto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L186", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L100", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidfrom", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L108", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setvalidto", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L120", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratoryacademichours", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L144", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratorystartweek", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L112", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlectureacademichours", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L136", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlecturestartweek", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L128", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticeacademichours", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L152", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticestartweek", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L124", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratoryacademichours", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L148", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlaboratorystartweek", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L116", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlectureacademichours", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L140", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setlecturestartweek", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L132", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticeacademichours", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L156", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setpracticestartweek", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L212", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L208", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L216", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L224", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L220", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setgroups", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L228", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setslots", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L72", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L76", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L80", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getsemester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L84", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setsemester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L193", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlectureacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L194", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getlaboratoryacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L195", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getpracticeacademichours" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L162", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L243", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_academichoursfor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L170", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L240", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_startweekfor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L189", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L176", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_jsonignore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L178", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiverecord", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L186", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isactiveon", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_jsonignore", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L181", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isarchivedrecord", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_java_jsonignore", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L183", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_isarchivedrecord", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L209", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueorzero", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_valueordefault", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L216", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L304", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getgroups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L220", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setgroups", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L224", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L219", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_getslots" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "source_location": "L228", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule_setslots", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_set", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L9", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L52", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L9", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L141", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getdayofweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L157", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessonformat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L149", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessontype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getparity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getschedulerule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L95", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L121", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L110", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getteacher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L145", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setclassroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setdayofweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L161", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessonformat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L153", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessontype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setparity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setschedulerule", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L103", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setteacher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L91", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_settimeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L32", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L40", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L325", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L55", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L95", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L121", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setid", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L71", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getdayofweek", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L75", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setdayofweek", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L110", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L114", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_set", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L157", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessonformat", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L127", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L161", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setlessonformat", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L87", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L224", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L369", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_gettimeslot" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L91", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_settimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L99", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L103", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L110", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L328", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L114", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setsubgroups", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L121", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupids", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L127", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getsubgroupnames", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L133", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getteacher", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "source_location": "L137", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_setteacher", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L233", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L395", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getclassroom" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L399", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot_getlessonformat" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_getacademicyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L61", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_getenddate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_getsemestertype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_getstartdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_setacademicyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_setenddate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_setsemestertype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester_setstartdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L32", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L83", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L77", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L297", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_model_semester_semester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L29", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_getid", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L33", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_setid", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L61", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_getenddate", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L53", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_getstartdate", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L65", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_setenddate", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L57", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_setstartdate", + "target": "backend_src_main_java_com_magistr_app_model_semester_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L45", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_getsemestertype", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "source_location": "L49", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_semester_semester_setsemestertype", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SemesterType.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_semestertype", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", + "target": "backend_src_main_java_com_magistr_app_model_semestertype_semestertype", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialityname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialityname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getspeciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setspeciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L80", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspeciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L84", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspeciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_model_speciality_speciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getid", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L31", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setid", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L21", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialitycode", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality_getspecialityname", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialitycode", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality_setspecialityname", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Speciality.java", + "source_location": "L21", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_speciality_speciality_speciality", + "target": "backend_src_main_java_com_magistr_app_model_speciality_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getdescription", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getspeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setdescription", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setspeciality", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L88", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspecialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L92", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspecialtyprofile", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L23", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getid", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setid", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getdescription", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L39", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_getname", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setdescription", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_specialtyprofile_specialtyprofile_setname", + "target": "backend_src_main_java_com_magistr_app_model_specialtyprofile_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_geteducationform", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getgroupsize", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L80", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getspecialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getyearstartstudy", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_seteducationform", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setgroupsize", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L84", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspeciality", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L92", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setspecialtyprofile", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L100", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setyearstartstudy", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L33", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getstudentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setstudentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L13", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentgroup", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L83", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L77", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L353", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L315", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L297", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L325", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L160", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L30", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L72", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L41", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L72", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L56", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getgroupsize", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L40", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getid", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L76", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L60", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setgroupsize", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setid", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L48", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getname", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L52", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setname", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L96", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_getyearstartstudy", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", + "source_location": "L100", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup_setyearstartstudy", + "target": "backend_src_main_java_com_magistr_app_model_studentgroup_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getacademicyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getstudentgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setacademicyear", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setstudentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L27", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L43", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L25", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_getid", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_studentgroupcalendarassignment_setid", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupcalendarassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_getlabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_studentgroupstudystate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java", + "source_location": "L16", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_getlabel", + "target": "backend_src_main_java_com_magistr_app_model_studentgroupstudystate_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L20", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L17", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentcapacity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentcapacity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentgroup", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L32", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L353", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L414", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L23", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getid", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setid", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L39", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getname", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setname", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_getstudentcapacity", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subgroup.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subgroup_subgroup_setstudentcapacity", + "target": "backend_src_main_java_com_magistr_app_model_subgroup_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_getcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L52", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_setcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_setname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L33", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L54", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubject", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_model_subject_subject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L56", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L32", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_getid", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L60", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_setid", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L25", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L48", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_getcode", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L40", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_getname", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L52", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_setcode", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_setname", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/Subject.java", + "source_location": "L25", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subject_subject_subject", + "target": "backend_src_main_java_com_magistr_app_model_subject_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getauthor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcreatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getsubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setauthor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L61", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcreatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setsubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L29", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getid", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L49", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcomment", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L57", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getcreatedat", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L61", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setcreatedat", + "target": "backend_src_main_java_com_magistr_app_model_subjectcomment_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L41", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_getauthor", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/SubjectComment.java", + "source_location": "L45", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_subjectcomment_subjectcomment_setauthor", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L47", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L53", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L50", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L97", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L121", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L161", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedteacherid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getdepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L81", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L61", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L113", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getrequestedby", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L153", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L145", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L137", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedby", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L105", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L129", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getupdatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L101", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L125", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L165", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedteacherid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L69", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setdepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L93", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L117", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setrequestedby", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L157", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L149", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L141", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedby", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L109", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L133", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setupdatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_touch", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L161", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedteacherid", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L61", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getid", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L113", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getrequestedby", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L137", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedby", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L165", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedteacherid", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L117", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setrequestedby", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L141", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedby", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L97", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcomment", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L81", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getfullname", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L89", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getjobtitle", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L153", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewcomment", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L73", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getusername", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L101", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcomment", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L85", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setfullname", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L93", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setjobtitle", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L157", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewcomment", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L77", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setusername", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L121", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getcreatedat", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L145", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getreviewedat", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L129", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getupdatedat", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L125", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setcreatedat", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L149", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setreviewedat", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L133", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setupdatedat", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L56", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_touch", + "target": "preupdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L105", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_getstatus", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java", + "source_location": "L109", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequest_teachercreationrequest_setstatus", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherCreationRequestStatus.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_model_teachercreationrequeststatus_teachercreationrequeststatus", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L8", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L27", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L36", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L39", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L33", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L8", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L86", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L102", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedby", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getdepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getteacher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidfrom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L90", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcomment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedat", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L106", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedby", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setdepartment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setteacher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L66", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidfrom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L74", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L16", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L35", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L122", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L102", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedby", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L42", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getid", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L106", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedby", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L62", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidfrom", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L70", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getvalidto", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L66", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidfrom", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L74", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setvalidto", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L78", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L82", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setprimaryassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L86", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcomment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L90", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcomment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L94", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getcreatedat", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L98", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setcreatedat", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_java_localdatetime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L46", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getteacher", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java", + "source_location": "L50", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_setteacher", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L118", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "target": "backend_src_main_java_com_magistr_app_model_teacherdepartmentassignment_teacherdepartmentassignment_getprimaryassignment" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L14", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubjectid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuser", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuserid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setsubjectid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setuserid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_teachersubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "target": "idclass", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L42", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getsubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L34", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuserid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L46", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setsubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L38", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_setuserid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L29", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_teachersubject", + "target": "backend_src_main_java_com_magistr_app_model_teachersubject_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubject.java", + "source_location": "L50", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubject_teachersubject_getuser", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid", + "target": "serializable", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getsubjectid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getuserid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_hashcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setsubjectid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setuserid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_teachersubjectid", + "confidence_score": 1.0 + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "target": "serializable", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getsubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L19", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_getuserid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L31", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setsubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_setuserid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L14", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_teachersubjectid", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_object", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L35", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_override", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L200", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_equals" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java", + "source_location": "L42", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_hashcode", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_java_override", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", + "target": "backend_src_main_java_com_magistr_app_model_teachersubjectid_teachersubjectid_hashcode" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getdurationminutes", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_gettimeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setdurationminutes", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setendtime", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setordernumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setstarttime", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_settimeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L418", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getid", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setid", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L71", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getdurationminutes", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L39", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L75", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setdurationminutes", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setordernumber", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L63", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L55", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setendtime", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_setstarttime", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_java_localtime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L224", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L419", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L388", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getordernumber" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_gettimeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlot.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_settimeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L389", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L99", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getstarttime" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L390", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L100", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_model_timeslot_timeslot_getendtime" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L15", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L11", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L7", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_gettimeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_settimeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L22", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getid", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setid", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L30", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_getdate", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_setdate", + "target": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L38", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_gettimeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotdateassignment_timeslotdateassignment_settimeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L25", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L28", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L9", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdayofweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdisplayorder", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L31", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setapplymode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdayofweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdisplayorder", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setsystemscope", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L429", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L31", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getid", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setid", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L55", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getapplymode", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L39", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getcode", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L47", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getname", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setapplymode", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setcode", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L51", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setname", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L63", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdayofweek", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L79", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getdisplayorder", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdayofweek", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L83", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setdisplayorder", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L71", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_getsystemscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java", + "source_location": "L75", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_timeslotscope_timeslotscope_setsystemscope", + "target": "backend_src_main_java_com_magistr_app_model_timeslotscope_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_java_entity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L29", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L26", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L5", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_java_table", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_getdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_getfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_getid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L75", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_getjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_getpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_getrole", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_getusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_setdepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_setfullname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_setid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_setjobtitle", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L55", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_setpassword", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_setrole", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_setusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_model_user_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L20", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L18", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L442", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L93", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L122", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L131", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", + "target": "backend_src_main_java_com_magistr_app_model_user_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L83", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_getdepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_user_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_getid", + "target": "backend_src_main_java_com_magistr_app_model_user_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L87", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_setdepartmentid", + "target": "backend_src_main_java_com_magistr_app_model_user_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L39", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_setid", + "target": "backend_src_main_java_com_magistr_app_model_user_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L67", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_getfullname", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L75", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_getjobtitle", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L51", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_getpassword", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_getusername", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L71", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_setfullname", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_setjobtitle", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L55", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_setpassword", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/model/User.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_model_user_user_setusername", + "target": "backend_src_main_java_com_magistr_app_model_user_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "jparepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findallbyorderbydisplayorderasccodeasc", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_academiccalendaractivitytyperepository_findbycode", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendaractivitytyperepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository", + "target": "modifying", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_existsbyactivitytypeid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L18", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L40", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L38", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_existsbyactivitytypeid", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridwithactivity", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L40", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L69", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_findbycalendaridandcoursenumberanddate" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java", + "source_location": "L40", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendardayrepository_academiccalendardayrepository_deletebycalendarid", + "target": "modifying", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_countbystudyformid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_countbystudyformid", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L33", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findallwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L33", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java", + "source_location": "L33", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_academiccalendarrepository_findbyidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_collection", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_deletebyacademiccalendar_id", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L33", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_deletebyacademiccalendar_id", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L23", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridwithsubject", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L23", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L23", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_academiccalendarsubjectrepository_findbycalendaridinwithsubject", + "target": "backend_src_main_java_com_magistr_app_repository_academiccalendarsubjectrepository_java_collection", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_academicyearrepository_findbytitle", + "target": "backend_src_main_java_com_magistr_app_repository_academicyearrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L80", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_main_java_com_magistr_app_repository_authrefreshtokenrepository_authrefreshtokenrepository_findbytokenhash" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_classroomrepository_classroomrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_classroomrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentname", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbydepartmentcode", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_departmentrepository_departmentrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_departmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_educationformrepository_educationformrepository_findallbyorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_repository_educationformrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_equipmentrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_equipmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L30", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L22", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbyeducationformid", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/GroupRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_grouprepository_grouprepository_findbydepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_grouprepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java", + "source_location": "L6", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_lessontypesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_lessontypesrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L23", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbylessondatebetweenwithdetails" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java", + "source_location": "L28", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_scheduleoverriderepository_findbybaseruleslotidandlessondate", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleoverriderepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L29", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L79", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbygroupidandsemesterid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L60", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L36", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L60", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findallwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L79", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L36", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L116", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyteacheridandsemesterid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java", + "source_location": "L79", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_schedulerulerepository_findbyidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_schedulerulerepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_scheduleruleslotrepository_existsbysubgroupid", + "target": "backend_src_main_java_com_magistr_app_repository_scheduleruleslotrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L17", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findfirstbystartdatelessthanequalandenddategreaterthanequal" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidandsemestertype", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository_findbyacademicyearidorderbystartdateasc", + "target": "backend_src_main_java_com_magistr_app_repository_semesterrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialityname", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbyspecialitycode", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_specialtiesrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_specialtiesrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_specialtyprofilerepository_findbyspecialityidandname", + "target": "backend_src_main_java_com_magistr_app_repository_specialtyprofilerepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L19", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L17", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L19", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L27", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidwithdetails" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L27", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L43", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L27", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findbygroupidandacademicyearidwithdetails", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java", + "source_location": "L43", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L87", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", + "target": "backend_src_main_java_com_magistr_app_repository_studentgroupcalendarassignmentrepository_studentgroupcalendarassignmentrepository_findforschedule" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L68", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L41", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L32", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L50", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L58", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findallwithgroupsorderbygroupnameandname", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L68", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_countactivebygroupidexcludingid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L41", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L32", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbystudentgroupidorderbynameasc", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L50", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L58", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_sumactivestudentcapacitybygroupidexcludingid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L32", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_findbyidandstudentgroupid", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java", + "source_location": "L41", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_subgrouprepository_existsbystudentgroupidandnameignorecase", + "target": "backend_src_main_java_com_magistr_app_repository_subgrouprepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L8", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_subjectcommentrepository_findbysubjectidorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_repository_subjectcommentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbyname", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentid", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbydepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_subjectrepository_subjectrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_subjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbydepartment_idorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findallbyorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_findbystatusorderbycreatedatdesc", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_teachercreationrequestrepository_existsbyusernameandstatus", + "target": "backend_src_main_java_com_magistr_app_repository_teachercreationrequestrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L5", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L50", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findhistorybyteacherid", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L35", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L50", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L35", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_query", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L24", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_findopenprimarybyteacherid", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L35", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L69", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_finddepartmentteachersatdate" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java", + "source_location": "L50", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L98", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "target": "backend_src_main_java_com_magistr_app_repository_teacherdepartmentassignmentrepository_teacherdepartmentassignmentrepository_existsactiveassignment" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbyuserid", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_teachersubjectrepository_findbysubjectid", + "target": "backend_src_main_java_com_magistr_app_repository_teachersubjectrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_existsbytimeslotscopeid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L35", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L18", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_existsbytimeslotscopeid", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L430", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydate" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findallbyorderbydateasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_timeslotdateassignmentrepository_findbydatebetweenorderbydateasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotdateassignmentrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_existsbytimeslotscopeid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L33", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_existsbytimeslotscopeid", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbyorderbytimeslotscopedisplayorderascordernumberascstarttimeasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findallbytimeslotscopeidorderbyordernumberasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L423", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotrepository_timeslotrepository_findbytimeslotscopeidandordernumber" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L9", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L34", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L11", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findallbyorderbydisplayorderascnameasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L13", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbycode", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L15", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findfirstbyapplymodeorderbydisplayorderasc", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java", + "source_location": "L17", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L432", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", + "target": "backend_src_main_java_com_magistr_app_repository_timeslotscoperepository_timeslotscoperepository_findbyapplymodeanddayofweek" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L10", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L31", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L12", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyusername", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L20", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L18", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L14", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyrole", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L16", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentid", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L22", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L20", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleandstatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/repository/UserRepository.java", + "source_location": "L18", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbystatusnot", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", + "target": "backend_src_main_java_com_magistr_app_repository_userrepository_userrepository_findbyroleanddepartmentidandstatusnot" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_academicdateservice", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L58", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L83", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L32", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L32", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L32", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L108", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L199", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_findsemester" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L58", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L44", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L77", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L58", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L217", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getweeknumber" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L216", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L410", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getparity" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getcoursenumber", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/AcademicDateService.java", + "source_location": "L78", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_getactivitytype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L76", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L299", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_istheoryday" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_academicdateservice_academicdateservice_hascalendarassignment" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L356", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_activelessonscope", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L13", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L353", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice", + "target": "dayofweek", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_logger", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L21", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L27", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L130", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_clearcache", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L311", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L315", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L437", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L442", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L429", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L297", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L414", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L325", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L183", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L418", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L155", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L147", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L135", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L21", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L311", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L315", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L437", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L442", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L414", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L53", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L93", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L54", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforgroup" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L353", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L96", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L311", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L315", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L96", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L429", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L297", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L183", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L418", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L135", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L353", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L96", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L297", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L325", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L155", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L147", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L359", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L119", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L123", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L127", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrenderedlessons", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L122", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L97", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_validaterange", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L49", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_buildscheduleforteacher" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L175", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_sortrules", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L164", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_map", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L170", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_mindate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L178", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_primeconsumedhoursbeforerange", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_map", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L187", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L260", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_activelessonscope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L254", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L211", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_eligiblegroups", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L247", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L285", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_processrulefordate", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L321", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionprogresskey", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_consumptionbucket", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L325", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_lessonscopesforslot", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L356", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_activelessonscope", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_lessonscope", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L384", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L394", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L401", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_formatsubgroup", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L369", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_torenderedlesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L422", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_resolveeffectivetimeslot", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L429", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_effectivescope", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java", + "source_location": "L437", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname", + "target": "dayofweek", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L252", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L114", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_dayname" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L106", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "target": "backend_src_main_java_com_magistr_app_service_schedulegeneratorservice_schedulegeneratorservice_displayusername" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L220", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L15", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L183", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L198", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L144", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L160", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L210", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L148", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L24", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L26", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_schedulequeryservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L36", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L36", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L51", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_search", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L224", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L144", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L160", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L210", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L225", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L198", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L144", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L210", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L144", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L160", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L148", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_validaterange", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L67", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L183", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L160", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L210", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_list", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L82", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverride", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_applyoverrides", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_overridekey", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L163", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_resolvegroups", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L187", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L187", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_mutablelesson", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L186", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_deduplicate", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L206", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_lessonkey", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice_sortedsignature", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L225", + "weight": 1.0, + "context": "field", + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_java_linkedhashset", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L231", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_merge", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L227", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_mutablelesson", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", + "source_location": "L246", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson", + "target": "backend_src_main_java_com_magistr_app_service_schedulequeryservice_mutablelesson_todto", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L14", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_service", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L43", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L59", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L72", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_studentgrouplifecycleservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L23", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L26", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L37", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isavailableforselection" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L43", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L59", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L30", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_mayhavescheduleinrange" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L50", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_getstudystate", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L60", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_hasstarted", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L67", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L67", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L64", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_isgraduatedon", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L72", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_optional", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java", + "source_location": "L72", + "weight": 1.0, + "context": "generic_arg", + "source": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_studentgrouplifecycleservice_resolvecourselimit", + "target": "backend_src_main_java_com_magistr_app_service_studentgrouplifecycleservice_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L4", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_service", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L28", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L8", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_service", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L15", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L15", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualcourse" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_integer", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L28", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_localdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getactualsemester" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturecourse", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java", + "source_location": "L47", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_courseandsemestercalculator_getfuturesemester", + "target": "backend_src_main_java_com_magistr_app_utils_courseandsemestercalculator_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_duration", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L85", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L36", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L93", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L22", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L24", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L25", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_authenticatesvalidtokenforsametenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L53", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L36", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L44", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L38", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L39", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenfordifferenttenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L46", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectstokenwithdifferentsignature", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L57", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_rejectsexpiredtoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L62", + "weight": 1.0, + "context": "return_type", + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_expiredtoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L85", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java", + "source_location": "L85", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_jwttokenservicetest_properties", + "target": "backend_src_test_java_com_magistr_app_config_auth_jwttokenservicetest_java_duration", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L73", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L88", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L62", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L23", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L104", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L23", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_storesonlytokenhash", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L73", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L62", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L41", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L47", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rotatesrefreshtokenandrejectsreplay", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L68", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L65", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_rejectstokenfromdifferenttenant", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L79", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L77", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_logoutrevokesactivetoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_properties", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L94", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java", + "source_location": "L96", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_activetoken", + "target": "backend_src_test_java_com_magistr_app_config_auth_refreshtokenservicetest_refreshtokenservicetest_user", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest", + "target": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest", + "target": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L18", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest", + "target": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest", + "target": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L9", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashusessha256hex", + "target": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java", + "source_location": "L18", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_tenantconfigwatchertest_confighashchangeswhencontentchanges", + "target": "backend_src_test_java_com_magistr_app_config_tenant_tenantconfigwatchertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L14", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_java_aftereach", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L7", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L16", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_clearauthcontext", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L16", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_clearauthcontext", + "target": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_java_aftereach", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java", + "source_location": "L21", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_authcontrollertest_meallowsnulldepartmentid", + "target": "backend_src_test_java_com_magistr_app_controller_authcontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_aftereach", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L122", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_clearauthcontext", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L40", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L89", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L63", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L131", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L35", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_clearauthcontext", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_aftereach", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L40", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_commentsrejectsubjectwithoutdepartmentfordepartmentuserwithoutnpe", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L89", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L63", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L70", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L67", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_teachersuseassignmentsandfallbackwithoutduplicates", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L94", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_departmentcanaddexistingteacherassecondaryassignment", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L122", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_assignment", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L131", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java", + "source_location": "L131", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_departmentworkspacecontrollertest_user", + "target": "backend_src_test_java_com_magistr_app_controller_departmentworkspacecontrollertest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L53", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L22", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", + "target": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_teachersuseunifieduserresponsemapping", + "target": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", + "target": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java", + "source_location": "L53", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_usercontrollertest_user", + "target": "backend_src_test_java_com_magistr_app_controller_usercontrollertest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L42", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest", + "target": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L22", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", + "target": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L35", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_freeclassroomsskipsnullavailabilitywithoutnpe", + "target": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", + "target": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java_boolean", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java", + "source_location": "L42", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_workloadcontrollertest_classroom", + "target": "backend_src_test_java_com_magistr_app_controller_workloadcontrollertest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest", + "target": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest", + "target": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", + "target": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", + "target": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest", + "target": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L11", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityisnotactiveondatewithoutactiveto", + "target": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L29", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_activeentityusesdaterange", + "target": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_lifecycleentitytest_archivedentityremainsactiveforhistoricaldatesbeforeactiveto", + "target": "backend_src_test_java_com_magistr_app_model_lifecycleentitytest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L34", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L10", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L20", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L10", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L12", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_mapscanonicallessontypes", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L20", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L27", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsambiguouslessontype", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L29", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_rejectsunsupportedlessontype", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java", + "source_location": "L34", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_schedulelessoncategorytest_lessontype", + "target": "backend_src_test_java_com_magistr_app_model_schedulelessoncategorytest_java_string", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_scheduleruletest", + "target": "backend_src_test_java_com_magistr_app_model_scheduleruletest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_scheduleruletest", + "target": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest", + "target": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L27", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest", + "target": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L11", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_activeonusesstatusandvalidityrange", + "target": "backend_src_test_java_com_magistr_app_model_scheduleruletest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "source_location": "L27", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest_archiveandrestoretogglestatus", + "target": "backend_src_test_java_com_magistr_app_model_scheduleruletest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L6", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest", + "target": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest", + "target": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L71", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", + "target": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_group", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", + "target": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L45", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest", + "target": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L21", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_rejectstoobroadgroupsearch", + "target": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java", + "source_location": "L45", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_schedulequeryservicetest_teachersearchdoesnotloadallgroups", + "target": "backend_src_test_java_com_magistr_app_service_schedulequeryservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L8", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L17", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L56", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L48", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L30", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L41", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L21", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L22", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_futuregroupisselectablebutdoesnothaveschedulebeforestudystart", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L30", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L32", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L33", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_groupaftercalendarcourselimitisgraduatedandunavailableforselection", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L44", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_servicewithassignments", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_assignment", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java", + "source_location": "L48", + "weight": 1.0, + "context": "parameter_type", + "source": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_studentgrouplifecycleservicetest_group", + "target": "backend_src_test_java_com_magistr_app_service_studentgrouplifecycleservicetest_java_long", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L9", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest", + "target": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L3", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest", + "target": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L11", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest", + "target": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L19", + "weight": 1.0, + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest", + "target": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L11", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_courseandsemesterarezerobeforestudystart", + "target": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java", + "source_location": "L19", + "weight": 1.0, + "context": "attribute", + "source": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_courseandsemestercalculatortest_septemberstartsfirstcourseandfirstsemester", + "target": "backend_src_test_java_com_magistr_app_utils_courseandsemestercalculatortest_java_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L170", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L36", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_apifetch", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L3", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_auth_keys", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L100", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_cachable_prefixes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L98", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_cache", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L166", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_clearauthstate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L137", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_clearcache", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L24", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_getheaders", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L5", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_gettoken", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L109", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_invalidatecache", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L9", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_isauthenticatedasadmin", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L19", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_isauthenticatedasany", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L14", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_isauthenticatedasrole", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L141", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_logout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L75", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_refreshaccesstoken", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L155", + "weight": 1.0, + "source": "frontend_admin_js_api", + "target": "frontend_admin_js_api_storeauthstate", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L6", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_dashboard", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_groups", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_subjects", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_university_structure", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_database", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_js_api", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L26", + "weight": 1.0, + "source": "frontend_admin_js_api_getheaders", + "target": "frontend_admin_js_api_gettoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L11", + "weight": 1.0, + "source": "frontend_admin_js_api_isauthenticatedasadmin", + "target": "frontend_admin_js_api_gettoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L21", + "weight": 1.0, + "source": "frontend_admin_js_api_isauthenticatedasany", + "target": "frontend_admin_js_api_gettoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L16", + "weight": 1.0, + "source": "frontend_admin_js_api_isauthenticatedasrole", + "target": "frontend_admin_js_api_gettoken", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_js_api_gettoken", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L6", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_api_isauthenticatedasany", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L39", + "weight": 1.0, + "source": "frontend_admin_js_api_apifetch", + "target": "frontend_admin_js_api_getheaders", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L61", + "weight": 1.0, + "source": "frontend_admin_js_api_apifetch", + "target": "frontend_admin_js_api_clearauthstate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L57", + "weight": 1.0, + "source": "frontend_admin_js_api_apifetch", + "target": "frontend_admin_js_api_refreshaccesstoken", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L151", + "weight": 1.0, + "source": "frontend_admin_js_api_logout", + "target": "frontend_admin_js_api_clearcache", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/api.js", + "source_location": "L150", + "weight": 1.0, + "source": "frontend_admin_js_api_logout", + "target": "frontend_admin_js_api_clearauthstate", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L6", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_api_logout", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L6", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_dashboard", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_groups", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_subjects", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_university_structure", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_database", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_js_api_api", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L3", + "weight": 1.0, + "source": "frontend_admin_js_dropdown", + "target": "frontend_admin_js_dropdown_customselect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L257", + "weight": 1.0, + "source": "frontend_admin_js_dropdown", + "target": "frontend_admin_js_dropdown_initallcustomdropdowns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L264", + "weight": 1.0, + "source": "frontend_admin_js_dropdown", + "target": "frontend_admin_js_dropdown_refreshcustomdropdowns", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L281", + "weight": 1.0, + "source": "frontend_admin_js_dropdown", + "target": "frontend_admin_js_dropdown_startdropdownautoobserver", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L8", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_dropdown", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_js_dropdown", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L238", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect", + "target": "frontend_admin_js_dropdown_customselect_close", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L229", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect", + "target": "frontend_admin_js_dropdown_customselect_closeall", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect", + "target": "frontend_admin_js_dropdown_customselect_constructor", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L244", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect", + "target": "frontend_admin_js_dropdown_customselect_handleitemclick", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L195", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect", + "target": "frontend_admin_js_dropdown_customselect_handletriggerclick", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L47", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect", + "target": "frontend_admin_js_dropdown_customselect_init", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L98", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect", + "target": "frontend_admin_js_dropdown_customselect_rebuildmenu", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L162", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect", + "target": "frontend_admin_js_dropdown_customselect_synctriggertext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L26", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect_constructor", + "target": "frontend_admin_js_dropdown_customselect_init", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L77", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect_init", + "target": "frontend_admin_js_dropdown_customselect_rebuildmenu", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L159", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect_rebuildmenu", + "target": "frontend_admin_js_dropdown_customselect_synctriggertext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L251", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect_handleitemclick", + "target": "frontend_admin_js_dropdown_customselect_synctriggertext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L199", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect_handletriggerclick", + "target": "frontend_admin_js_dropdown_customselect_closeall", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/dropdown.js", + "source_location": "L252", + "weight": 1.0, + "source": "frontend_admin_js_dropdown_customselect_handleitemclick", + "target": "frontend_admin_js_dropdown_customselect_close", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L8", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_dropdown_initallcustomdropdowns", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_js_dropdown_initallcustomdropdowns", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L125", + "weight": 1.0, + "source": "frontend_admin_settings_js_main_switchtab", + "target": "frontend_admin_js_dropdown_initallcustomdropdowns", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L8", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_dropdown_startdropdownautoobserver", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_js_dropdown_startdropdownautoobserver", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L157", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_allowedtabs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L145", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_appcontent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L10", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_authorized_roles", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L152", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_btnlogout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L202", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_btnsettings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L270", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_configureroleinterface", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L11", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_currentrole", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L325", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_hashtab", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L153", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_main", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L150", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_menutoggle", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L147", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_navitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L146", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_pagetitle", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L289", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_refreshteacherrequestbadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L313", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_requestcountlabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L123", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_role_navigation", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L24", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_routes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L201", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_settingsdropdown", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L148", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_sidebar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L151", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_sidebarclosebtn", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L149", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_sidebaroverlay", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L234", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_switchtab", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L154", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_teacherrequestsnavbadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L155", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_teacherrequeststitlebadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L304", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_main_updateteacherrequestbadge", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L7", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L7", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_utils_applyrippleeffect", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L7", + "weight": 1.0, + "source": "frontend_admin_js_main", + "target": "frontend_admin_js_utils_closealldropdownsonoutsideclick", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L296", + "weight": 1.0, + "source": "frontend_admin_js_main_refreshteacherrequestbadge", + "target": "frontend_admin_js_main_requestcountlabel", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/main.js", + "source_location": "L295", + "weight": 1.0, + "source": "frontend_admin_js_main_refreshteacherrequestbadge", + "target": "frontend_admin_js_main_updateteacherrequestbadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/otel.js", + "source_location": "L11", + "weight": 1.0, + "source": "frontend_admin_js_otel", + "target": "frontend_admin_js_otel_provider", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/otel.js", + "source_location": "L19", + "weight": 1.0, + "source": "frontend_admin_js_otel", + "target": "frontend_admin_js_otel_traceexporter", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L28", + "weight": 1.0, + "source": "frontend_admin_js_utils", + "target": "frontend_admin_js_utils_applyrippleeffect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L97", + "weight": 1.0, + "source": "frontend_admin_js_utils", + "target": "frontend_admin_js_utils_closealldropdownsonoutsideclick", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L1", + "weight": 1.0, + "source": "frontend_admin_js_utils", + "target": "frontend_admin_js_utils_escape_map", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L9", + "weight": 1.0, + "source": "frontend_admin_js_utils", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L21", + "weight": 1.0, + "source": "frontend_admin_js_utils", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L53", + "weight": 1.0, + "source": "frontend_admin_js_utils", + "target": "frontend_admin_js_utils_initmultiselect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L14", + "weight": 1.0, + "source": "frontend_admin_js_utils", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/utils.js", + "source_location": "L83", + "weight": 1.0, + "source": "frontend_admin_js_utils", + "target": "frontend_admin_js_utils_updateselecttext", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_dashboard", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_groups", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_subjects", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_university_structure", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_database", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_js_utils", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L27", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms_renderequipmentcheckboxes", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_dashboard", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L490", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_fillselect", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L546", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_renderteachermetric", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_groups", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L768", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_fillselect", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_subjects", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L134", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests_initteacherrequests", + "target": "frontend_admin_js_utils_escapehtml" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_university_structure", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_database", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_js_utils_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L118", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar_initacademiccalendar", + "target": "frontend_admin_js_utils_showalert" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_dashboard", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L78", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_initdepartmentworkspace", + "target": "frontend_admin_js_utils_showalert" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_groups", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L141", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_initschedule", + "target": "frontend_admin_js_utils_showalert" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L114", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_initscheduleview", + "target": "frontend_admin_js_utils_showalert" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_subjects", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_university_structure", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_database", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_js_utils_showalert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_dashboard", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_groups", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_subjects", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_university_structure", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_database", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_js_utils_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_utils_initmultiselect", + "confidence_score": 1.0 + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_utils_initmultiselect", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L48", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms_initclassrooms", + "target": "frontend_admin_js_utils_initmultiselect" + }, + { + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L2", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_utils_updateselecttext", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L19", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms_renderequipmentcheckboxes", + "target": "frontend_admin_js_utils_updateselecttext", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_views_academic_calendar_day_options", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L19", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_views_academic_calendar_initacademiccalendar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/academic-calendar.js", + "source_location": "L14", + "weight": 1.0, + "source": "frontend_admin_js_views_academic_calendar", + "target": "frontend_admin_js_views_academic_calendar_semester_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L66", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_views_auditorium_workload_cell_parity_layout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L54", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_views_auditorium_workload_day_full_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L64", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_views_auditorium_workload_day_order", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L44", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_views_auditorium_workload_day_short_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L71", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_views_auditorium_workload_initauditoriumworkload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L14", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload", + "target": "frontend_admin_js_views_auditorium_workload_workload_targets", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/admin/js/views/auditorium-workload.js", + "source_location": "L101", + "weight": 1.0, + "source": "frontend_admin_js_views_auditorium_workload_initauditoriumworkload", + "target": "frontend_admin_js_views_schedule_view_setdefaultdate" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_views_classrooms_fetchequipments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L34", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_views_classrooms_initclassrooms", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/classrooms.js", + "source_location": "L13", + "weight": 1.0, + "source": "frontend_admin_js_views_classrooms", + "target": "frontend_admin_js_views_classrooms_renderequipmentcheckboxes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/dashboard.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_dashboard", + "target": "frontend_admin_js_views_dashboard_initdashboard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L487", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_fillselect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L506", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_formatdatetime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L6", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_initdepartmentworkspace", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L477", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_loaddepartments", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L572", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_normalizeteachername", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L543", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_renderteachermetric", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L519", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_requestcountlabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L535", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_requeststatusclass", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L527", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_requeststatuslabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L494", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_setdefaultdates", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L511", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_subjectcountlabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L502", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_toisodate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L565", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_workloadkeys", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L553", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace", + "target": "frontend_admin_js_views_department_workspace_workloadlabel", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L69", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_initdepartmentworkspace", + "target": "frontend_admin_js_views_department_workspace_loaddepartments", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L39", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_initdepartmentworkspace", + "target": "frontend_admin_js_views_department_workspace_setdefaultdates", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L479", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_loaddepartments", + "target": "frontend_admin_js_views_department_workspace_fillselect", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L131", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests_initteacherrequests", + "target": "frontend_admin_js_views_department_workspace_loaddepartments" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L498", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_setdefaultdates", + "target": "frontend_admin_js_views_department_workspace_toisodate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L548", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_renderteachermetric", + "target": "frontend_admin_js_views_department_workspace_workloadlabel", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/department-workspace.js", + "source_location": "L568", + "weight": 1.0, + "source": "frontend_admin_js_views_department_workspace_workloadkeys", + "target": "frontend_admin_js_views_department_workspace_normalizeteachername", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_groups", + "target": "frontend_admin_js_views_groups_fetcheducationforms", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/groups.js", + "source_location": "L15", + "weight": 1.0, + "source": "frontend_admin_js_views_groups", + "target": "frontend_admin_js_views_groups_initgroups", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1007", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_adddays", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L772", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_addoptional", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L911", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_buildcombinedweekblocks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L950", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_builddatesbyday", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L828", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_buildschedulesections", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L33", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_cell_parity_layout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L789", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_collectslots", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L969", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_combinedweekcaption", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1074", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_compareslots", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1018", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_datesbetween", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L986", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_dateslotkey", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L23", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_day_full_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L32", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_day_order", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L14", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_day_short_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1031", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_dayshort", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L765", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_fillselect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1035", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_formatdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1041", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_formatdateshort", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L812", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_grouplessonsbydateslot", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L40", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_initscheduleview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1026", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_isoday", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1058", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_lessoncountlabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L903", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_lessonslotdescriptor", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L981", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_lessonslotkey", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L874", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_listentities", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L729", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_loaddictionaries", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L973", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_mobiledaycaption", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1084", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_naturalcompare", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L780", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_normalizeid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L9", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_parity_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L961", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_parityfordate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1013", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_parseisodate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L977", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_periodcaption", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L785", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_roomlabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1066", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_sectioncountlabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L760", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_setdefaultdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L865", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_singleentity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L893", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_sortlessons", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L852", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_splitentitiesforlesson", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1050", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_toisodate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1046", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_trimtime", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L997", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_twoweekrange", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L776", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_valueof", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L942", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_weekparity", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L990", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view", + "target": "frontend_admin_js_views_schedule_view_weekstart", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L108", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_initscheduleview", + "target": "frontend_admin_js_views_schedule_view_loaddictionaries", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L42", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_initscheduleview", + "target": "frontend_admin_js_views_schedule_view_normalizeid", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L77", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_initscheduleview", + "target": "frontend_admin_js_views_schedule_view_setdefaultdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L744", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_loaddictionaries", + "target": "frontend_admin_js_views_schedule_view_fillselect", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L762", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_setdefaultdate", + "target": "frontend_admin_js_views_schedule_view_toisodate", + "confidence_score": 1.0 + }, + { + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L809", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_collectslots", + "target": "frontend_admin_js_views_schedule_view_compareslots", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L862", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_splitentitiesforlesson", + "target": "frontend_admin_js_views_schedule_view_listentities", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L854", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_splitentitiesforlesson", + "target": "frontend_admin_js_views_schedule_view_singleentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L878", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_listentities", + "target": "frontend_admin_js_views_schedule_view_singleentity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L905", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_lessonslotdescriptor", + "target": "frontend_admin_js_views_schedule_view_lessonslotkey", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L935", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_buildcombinedweekblocks", + "target": "frontend_admin_js_views_schedule_view_builddatesbyday", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L912", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_buildcombinedweekblocks", + "target": "frontend_admin_js_views_schedule_view_datesbetween", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L936", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_buildcombinedweekblocks", + "target": "frontend_admin_js_views_schedule_view_formatdate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L926", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_buildcombinedweekblocks", + "target": "frontend_admin_js_views_schedule_view_weekparity", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L944", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_weekparity", + "target": "frontend_admin_js_views_schedule_view_parityfordate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L991", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_weekstart", + "target": "frontend_admin_js_views_schedule_view_parseisodate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L994", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_weekstart", + "target": "frontend_admin_js_views_schedule_view_toisodate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L999", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_twoweekrange", + "target": "frontend_admin_js_views_schedule_view_adddays", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L999", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_twoweekrange", + "target": "frontend_admin_js_views_schedule_view_isoday", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L998", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_twoweekrange", + "target": "frontend_admin_js_views_schedule_view_parseisodate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1002", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_twoweekrange", + "target": "frontend_admin_js_views_schedule_view_toisodate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1020", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_datesbetween", + "target": "frontend_admin_js_views_schedule_view_parseisodate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1027", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_isoday", + "target": "frontend_admin_js_views_schedule_view_parseisodate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1021", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_datesbetween", + "target": "frontend_admin_js_views_schedule_view_toisodate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule-view.js", + "source_location": "L1080", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule_view_compareslots", + "target": "frontend_admin_js_views_schedule_view_naturalcompare", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L20", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_views_schedule_cell_parity_layout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_views_schedule_day_options", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L60", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_views_schedule_initschedule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L33", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_views_schedule_lesson_type_limits", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L14", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_views_schedule_parity_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/schedule.js", + "source_location": "L25", + "weight": 1.0, + "source": "frontend_admin_js_views_schedule", + "target": "frontend_admin_js_views_schedule_semester_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/subjects.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_subjects", + "target": "frontend_admin_js_views_subjects_initsubjects", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/teacher-requests.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_teacher_requests", + "target": "frontend_admin_js_views_teacher_requests_initteacherrequests", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/university-structure.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_university_structure", + "target": "frontend_admin_js_views_university_structure_inituniversitystructure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L21", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_views_users_initusers", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L12", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_views_users_role_badge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/js/views/users.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_js_views_users", + "target": "frontend_admin_js_views_users_role_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L51", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_allowedtabs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L57", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_appcontent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L64", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_main", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L62", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_menutoggle", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L59", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_navitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L58", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_pagetitle", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L7", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_role", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L47", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_role_tabs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L19", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_routes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L60", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_sidebar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L63", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_sidebarclosebtn", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L61", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_sidebaroverlay", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/main.js", + "source_location": "L111", + "weight": 1.0, + "source": "frontend_admin_settings_js_main", + "target": "frontend_admin_settings_js_main_switchtab", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/database.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_database", + "target": "frontend_admin_settings_js_views_database_initdatabase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_settings_js_views_edu_forms_alleducationforms", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L6", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_settings_js_views_edu_forms_fetcheducationforms", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/edu-forms.js", + "source_location": "L16", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_edu_forms", + "target": "frontend_admin_settings_js_views_edu_forms_initeduforms", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L4", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_settings_js_views_time_slots_apply_mode_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L10", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_settings_js_views_time_slots_day_short_labels", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L311", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_settings_js_views_time_slots_dayshort", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L20", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_settings_js_views_time_slots_inittimeslotssettings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L305", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_settings_js_views_time_slots_scopebadgelabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L298", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_settings_js_views_time_slots_scopeoptionlabel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L315", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots", + "target": "frontend_admin_settings_js_views_time_slots_trimtime", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L300", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots_scopeoptionlabel", + "target": "frontend_admin_settings_js_views_time_slots_dayshort", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/admin/settings/js/views/time-slots.js", + "source_location": "L307", + "weight": 1.0, + "source": "frontend_admin_settings_js_views_time_slots_scopebadgelabel", + "target": "frontend_admin_settings_js_views_time_slots_dayshort", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/script.js", + "source_location": "L70", + "weight": 1.0, + "source": "frontend_script", + "target": "frontend_script_clearfielderror", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/script.js", + "source_location": "L91", + "weight": 1.0, + "source": "frontend_script", + "target": "frontend_script_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/script.js", + "source_location": "L75", + "weight": 1.0, + "source": "frontend_script", + "target": "frontend_script_setfielderror", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/script.js", + "source_location": "L96", + "weight": 1.0, + "source": "frontend_script", + "target": "frontend_script_setloading", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/script.js", + "source_location": "L86", + "weight": 1.0, + "source": "frontend_script", + "target": "frontend_script_showalert", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/script.js", + "source_location": "L102", + "weight": 1.0, + "source": "frontend_script", + "target": "frontend_script_validate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/script.js", + "source_location": "L107", + "weight": 1.0, + "source": "frontend_script_validate", + "target": "frontend_script_setfielderror", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "frontend/script.js", + "source_location": "L104", + "weight": 1.0, + "source": "frontend_script_validate", + "target": "frontend_script_hidealert", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/theme-toggle.js", + "source_location": "L22", + "weight": 1.0, + "source": "frontend_theme_toggle", + "target": "frontend_theme_toggle_init", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L179", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L175", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_formatrunbooktext", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L3", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_incidentrunbooks", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L74", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_initcopybuttons", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L142", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_initincidenttabs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L115", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_initnavigationhighlight", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L65", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_initprintbutton", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L91", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_initreveal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L188", + "weight": 1.0, + "source": "resume_script", + "target": "resume_script_showtoast", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "resume/script.js", + "source_location": "L176", + "weight": 1.0, + "source": "resume_script_formatrunbooktext", + "target": "resume_script_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_project_regulation", + "target": "agents_flyway_migration_rule" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_project_regulation", + "target": "agents_magistr_system" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_project_regulation", + "target": "agents_russian_language_rule" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_flyway_migration_rule", + "target": "docs_database_flyway_migrations" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_project_docs_index", + "target": "docs_api_rest_api" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_project_docs_index", + "target": "docs_architecture_system_architecture" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_project_docs_index", + "target": "docs_business_logic_role_model" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_project_docs_index", + "target": "docs_database_database_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": null, + "weight": 1.0, + "source": "agents_project_docs_index", + "target": "docs_readme_magistr_overview" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_project_risk_audit", + "target": "bug_report_authcontext_threadlocal_leak" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_project_risk_audit", + "target": "bug_report_jwt_insecure_production_defaults" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_project_risk_audit", + "target": "bug_report_kubernetes_tls_trust_all_risk" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_project_risk_audit", + "target": "bug_report_refresh_token_rotation_race_condition" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_project_risk_audit", + "target": "bug_report_schedule_override_conflict_gap" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_project_risk_audit", + "target": "bug_report_teacher_schedule_override_visibility_gap" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_project_risk_audit", + "target": "bug_report_tenant_config_watcher_update_gap" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_project_risk_audit", + "target": "bug_report_tenant_datasource_replacement_risk" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_jwt_insecure_production_defaults", + "target": "docs_infrastructure_jwt_secret_policy" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_refresh_token_rotation_race_condition", + "target": "docs_database_auth_refresh_tokens" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_authcontext_threadlocal_leak", + "target": "docs_architecture_authentication" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_schedule_override_conflict_gap", + "target": "docs_api_schedule_overrides_endpoints" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_teacher_schedule_override_visibility_gap", + "target": "docs_api_dynamic_schedule_endpoints" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_tenant_datasource_replacement_risk", + "target": "docs_api_tenant_database_endpoints" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_tenant_config_watcher_update_gap", + "target": "docs_infrastructure_tenants_configmap" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_kubernetes_tls_trust_all_risk", + "target": "docs_infrastructure_kubernetes_production" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_department_import_subject_ownership_risk", + "target": "docs_api_department_workspace_endpoints" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_workload_department_scope_risk", + "target": "docs_api_workload_endpoints" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_semester_boundary_overlap_risk", + "target": "docs_academic_calendar_calendar_model" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_localstorage_access_token_risk", + "target": "docs_frontend_api_client_refresh_flow" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_innerhtml_error_xss_risk", + "target": "docs_frontend_frontend_architecture" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "BUG_REPORT.md", + "source_location": null, + "weight": 1.0, + "source": "bug_report_opentelemetry_latest_supply_chain_risk", + "target": "docs_logging_otlp_signoz_export" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_ansible_database_hosts" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_caddy_proxy" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_database_per_tenant_pattern" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_k3s_cluster" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_proxmox_database_vms" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_resilient_multitenant_infrastructure", + "target": "devops_signoz_opentelemetry_observability" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_database_per_tenant_pattern", + "target": "docs_architecture_multitenant_architecture" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_fz_152_data_isolation_rationale", + "target": "devops_database_per_tenant_pattern" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_configmap_dynamic_tenant_management", + "target": "docs_infrastructure_tenants_configmap" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_gitea_actions_cicd", + "target": "docs_infrastructure_gitea_actions_cicd" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "DEVOPS.md", + "source_location": null, + "weight": 1.0, + "source": "devops_signoz_opentelemetry_observability", + "target": "docs_logging_otlp_signoz_export" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "compose.yaml", + "source_location": null, + "weight": 1.0, + "source": "compose_backend_service", + "target": "compose_db_service" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "compose.yaml", + "source_location": null, + "weight": 1.0, + "source": "compose_backend_service", + "target": "compose_proxy_network" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "compose.yaml", + "source_location": null, + "weight": 1.0, + "source": "compose_frontend_service", + "target": "compose_backend_service" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_infrastructure_docker_compose", + "target": "compose_backend_service" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "compose.yaml", + "source_location": null, + "weight": 1.0, + "source": "compose_frontend_service", + "target": "compose_proxy_network" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_infrastructure_docker_compose", + "target": "compose_frontend_service" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "compose.yaml", + "source_location": null, + "weight": 1.0, + "source": "compose_db_service", + "target": "compose_proxy_network" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "compose.yaml", + "source_location": null, + "weight": 1.0, + "source": "compose_postgres_password_required", + "target": "compose_db_service" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_infrastructure_docker_compose", + "target": "compose_db_service" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": ".agents/skills/auto-update-docs/SKILL.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_auto_update_docs_skill_autoupdatedocs_skill", + "target": "_agents_skills_autoupdatedocs_autoupdatedocs_skill" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_autoupdatedocs_autoupdatedocs_skill", + "target": "_agents_skills_autoupdatedocs_file_to_docs_map" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_api_rest_api" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_architecture_system_architecture" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_business_logic_role_model" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_database_database_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_frontend_frontend_architecture" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_autoupdatedocs_file_to_docs_map", + "target": "docs_infrastructure_docker_compose" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/auto-update-docs/SKILL.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_auto_update_docs_skill_frontend_settings_docs_map", + "target": "docs_frontend_frontend_architecture" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/frontend-design/SKILL.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_frontend_design_skill_frontend_design_skill", + "target": "_agents_skills_frontend_design_skill_design_thinking" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/frontend-design/SKILL.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_frontend_design_skill_frontend_design_skill", + "target": "_agents_skills_frontend_design_skill_no_ai_aesthetic_rule" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.65, + "source_file": ".agents/skills/frontend-design/SKILL.md", + "source_location": null, + "weight": 1.0, + "source": "_agents_skills_frontend_design_skill_frontend_design_skill", + "target": "docs_frontend_css_architecture" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0, + "source": "_gitea_workflows_docker_build_build_and_push_docker_images", + "target": "_gitea_workflows_docker_build_backend_image_pipeline" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0, + "source": "_gitea_workflows_docker_build_build_and_push_docker_images", + "target": "_gitea_workflows_docker_build_deploy_to_k8s" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0, + "source": "_gitea_workflows_docker_build_build_and_push_docker_images", + "target": "_gitea_workflows_docker_build_frontend_image_pipeline" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_infrastructure_gitea_actions_cicd", + "target": "_gitea_workflows_docker_build_build_and_push_docker_images" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0, + "source": "_gitea_workflows_docker_build_backend_image_pipeline", + "target": "_gitea_workflows_docker_build_zuev_token_secret" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0, + "source": "_gitea_workflows_docker_build_frontend_image_pipeline", + "target": "_gitea_workflows_docker_build_zuev_token_secret" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0, + "source": "_gitea_workflows_docker_build_deploy_to_k8s", + "target": "_gitea_workflows_docker_build_kubeconfig_secret" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": ".gitea/workflows/docker-build.yaml", + "source_location": null, + "weight": 1.0, + "source": "_gitea_workflows_docker_build_deploy_to_k8s", + "target": "docs_infrastructure_kubernetes_production" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/README.md", + "source_location": null, + "weight": 1.0, + "source": "docs_readme_magistr_overview", + "target": "docs_academic_calendar_calendar_model" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/README.md", + "source_location": null, + "weight": 1.0, + "source": "docs_readme_magistr_overview", + "target": "docs_api_rest_api" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/README.md", + "source_location": null, + "weight": 1.0, + "source": "docs_readme_magistr_overview", + "target": "docs_architecture_system_architecture" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/README.md", + "source_location": null, + "weight": 1.0, + "source": "docs_readme_magistr_overview", + "target": "docs_business_logic_role_model" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/README.md", + "source_location": null, + "weight": 1.0, + "source": "docs_readme_magistr_overview", + "target": "docs_database_database_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/README.md", + "source_location": null, + "weight": 1.0, + "source": "docs_readme_magistr_overview", + "target": "docs_development_developer_guide" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/README.md", + "source_location": null, + "weight": 1.0, + "source": "docs_readme_magistr_overview", + "target": "docs_frontend_frontend_architecture" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/README.md", + "source_location": null, + "weight": 1.0, + "source": "docs_readme_magistr_overview", + "target": "docs_infrastructure_docker_compose" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_architecture_system_architecture", + "target": "docs_architecture_authentication" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_architecture_system_architecture", + "target": "docs_architecture_multitenant_architecture" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_architecture_multitenant_architecture", + "target": "docs_database_database_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_architecture_multitenant_architecture", + "target": "docs_infrastructure_tenants_configmap" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/LOGGING.md", + "source_location": null, + "weight": 1.0, + "source": "docs_logging_tenant_mdc_context", + "target": "docs_architecture_multitenant_architecture" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_architecture_authentication", + "target": "docs_api_authentication_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ARCHITECTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_architecture_authentication", + "target": "docs_database_auth_refresh_tokens" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0, + "source": "docs_business_logic_role_model", + "target": "docs_api_role_permissions" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0, + "source": "docs_business_logic_role_model", + "target": "docs_frontend_role_based_navigation" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_dynamic_schedule_endpoints", + "target": "docs_business_logic_dynamic_schedule_model" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0, + "source": "docs_business_logic_dynamic_schedule_model", + "target": "docs_academic_calendar_schedule_generation_filter" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0, + "source": "docs_business_logic_dynamic_schedule_model", + "target": "docs_database_dynamic_schedule_tables" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "weight": 1.0, + "source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "target": "docs_business_logic_dynamic_schedule_model" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0, + "source": "docs_business_logic_schedule_validation", + "target": "docs_api_schedule_rules_endpoints" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0, + "source": "docs_business_logic_lifecycle_archiving", + "target": "docs_database_database_schema" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/BUSINESS_LOGIC.md", + "source_location": null, + "weight": 1.0, + "source": "docs_business_logic_teacher_department_assignments", + "target": "docs_api_department_workspace_endpoints" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "weight": 1.0, + "source": "docs_academic_calendar_calendar_model", + "target": "docs_academic_calendar_activity_codes" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "weight": 1.0, + "source": "docs_academic_calendar_calendar_model", + "target": "docs_academic_calendar_schedule_generation_filter" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "weight": 1.0, + "source": "docs_academic_calendar_calendar_model", + "target": "docs_api_group_calendar_assignments" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/ACADEMIC_CALENDAR.md", + "source_location": null, + "weight": 1.0, + "source": "docs_academic_calendar_calendar_model", + "target": "docs_database_academic_calendar_tables" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_proposal_calendar_layer", + "target": "docs_academic_calendar_calendar_model" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_rest_api", + "target": "docs_api_authentication_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_rest_api", + "target": "docs_api_department_workspace_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_rest_api", + "target": "docs_api_dynamic_schedule_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_rest_api", + "target": "docs_api_schedule_overrides_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_rest_api", + "target": "docs_api_schedule_rules_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_rest_api", + "target": "docs_api_tenant_database_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DEVELOPMENT.md", + "source_location": null, + "weight": 1.0, + "source": "docs_development_new_endpoint_flow", + "target": "docs_api_rest_api" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_authentication_endpoints", + "target": "docs_database_auth_refresh_tokens" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/FRONTEND.md", + "source_location": null, + "weight": 1.0, + "source": "docs_frontend_api_client_refresh_flow", + "target": "docs_api_authentication_endpoints" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/FRONTEND.md", + "source_location": null, + "weight": 1.0, + "source": "docs_frontend_role_based_navigation", + "target": "docs_api_role_permissions" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/FRONTEND.md", + "source_location": null, + "weight": 1.0, + "source": "docs_frontend_schedule_views", + "target": "docs_api_dynamic_schedule_endpoints" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_schedule_rules_endpoints", + "target": "docs_database_dynamic_schedule_tables" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_schedule_overrides_endpoints", + "target": "docs_database_dynamic_schedule_tables" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/API.md", + "source_location": null, + "weight": 1.0, + "source": "docs_api_tenant_database_endpoints", + "target": "docs_infrastructure_tenants_configmap" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DATABASE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_database_database_schema", + "target": "docs_database_academic_calendar_tables" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DATABASE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_database_database_schema", + "target": "docs_database_auth_refresh_tokens" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DATABASE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_database_database_schema", + "target": "docs_database_dynamic_schedule_tables" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DATABASE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_database_database_schema", + "target": "docs_database_er_relationships" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_proposal_schedule_rules_layer", + "target": "docs_database_dynamic_schedule_tables" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/DATABASE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_database_flyway_migrations", + "target": "docs_development_flyway_rules" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DEVELOPMENT.md", + "source_location": null, + "weight": 1.0, + "source": "docs_development_new_endpoint_flow", + "target": "docs_database_flyway_migrations" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DEVELOPMENT.md", + "source_location": null, + "weight": 1.0, + "source": "docs_development_developer_guide", + "target": "docs_development_code_style" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DEVELOPMENT.md", + "source_location": null, + "weight": 1.0, + "source": "docs_development_developer_guide", + "target": "docs_development_new_endpoint_flow" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/FRONTEND.md", + "source_location": null, + "weight": 1.0, + "source": "docs_frontend_frontend_architecture", + "target": "docs_frontend_admin_spa_routing" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/FRONTEND.md", + "source_location": null, + "weight": 1.0, + "source": "docs_frontend_frontend_architecture", + "target": "docs_frontend_api_client_refresh_flow" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/FRONTEND.md", + "source_location": null, + "weight": 1.0, + "source": "docs_frontend_frontend_architecture", + "target": "docs_frontend_schedule_views" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/FRONTEND.md", + "source_location": null, + "weight": 1.0, + "source": "docs_frontend_frontend_architecture", + "target": "docs_frontend_settings_spa" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/FRONTEND.md", + "source_location": null, + "weight": 1.0, + "source": "docs_frontend_opentelemetry_client", + "target": "docs_infrastructure_signoz_opentelemetry" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_infrastructure_kubernetes_production", + "target": "docs_infrastructure_caddy_proxy" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_infrastructure_kubernetes_production", + "target": "docs_infrastructure_jwt_secret_policy" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_infrastructure_kubernetes_production", + "target": "docs_infrastructure_tenants_configmap" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/INFRASTRUCTURE.md", + "source_location": null, + "weight": 1.0, + "source": "docs_infrastructure_signoz_opentelemetry", + "target": "docs_logging_otlp_signoz_export" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/LOGGING.md", + "source_location": null, + "weight": 1.0, + "source": "docs_logging_logging_stack", + "target": "docs_logging_otlp_signoz_export" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/LOGGING.md", + "source_location": null, + "weight": 1.0, + "source": "docs_logging_logging_stack", + "target": "docs_logging_tenant_mdc_context" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "weight": 1.0, + "source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "target": "docs_dynamic_schedule_implementation_schedule_generator_service" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md", + "source_location": null, + "weight": 1.0, + "source": "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "target": "docs_schedule_proposal_dynamic_schedule_concept" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_proposal_dynamic_schedule_concept", + "target": "docs_schedule_proposal_calendar_layer" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_PROPOSAL.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_proposal_dynamic_schedule_concept", + "target": "docs_schedule_proposal_schedule_rules_layer" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_activity_codes" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_daily_academic_calendar_grid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_group_calendar_assignment" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_laboratory_subgroups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_rule_conflict_validation" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "docs_schedule_tasks_schedule_api_endpoint" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_dynamic_schedule_tasks", + "target": "frontend_admin_views_groups_group_management" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "docs_schedule_tasks_dynamic_schedule_tasks" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_hours_start_weeks", + "target": "docs_schedule_tasks_dynamic_schedule_tasks" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_schedulegeneratorservice", + "target": "docs_schedule_tasks_daily_academic_calendar_grid" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_academic_calendar_calendar_grid_editor", + "target": "docs_schedule_tasks_daily_academic_calendar_grid" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/SCHEDULE_TASKS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_schedule_tasks_academicdateservice", + "target": "docs_schedule_tasks_group_calendar_assignment" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_calendar_assignment", + "target": "docs_schedule_tasks_group_calendar_assignment" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_academic_calendar_calendar_grid_editor", + "target": "docs_schedule_tasks_activity_codes" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_subgroup_management", + "target": "docs_schedule_tasks_laboratory_subgroups" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_slot_conflict_resolution", + "target": "docs_schedule_tasks_rule_conflict_validation" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_ui_components_document", + "target": "docs_ui_components_custom_select_wrapper" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_ui_components_document", + "target": "docs_ui_components_multi_select" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_browser_option_styling_limit", + "target": "docs_ui_components_custom_select_wrapper" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_custom_select_wrapper", + "target": "docs_ui_components_customselect" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_custom_select_wrapper", + "target": "docs_ui_components_frontend_admin_js_dropdown_js" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_custom_select_wrapper", + "target": "docs_ui_components_global_mutationobserver" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_custom_select_wrapper", + "target": "docs_ui_components_native_select" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_customselect", + "target": "docs_ui_components_dynamic_options_sync" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_browser_option_styling_limit", + "target": "docs_ui_components_multi_select" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_multi_select", + "target": "docs_ui_components_checkbox_item_checkmark" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/UI_COMPONENTS.md", + "source_location": null, + "weight": 1.0, + "source": "docs_ui_components_multi_select", + "target": "docs_ui_components_utils_initmultiselect" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/auditorium-workload.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_auditorium_workload_workload_filters", + "target": "docs_ui_components_multi_select" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/classrooms.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_classrooms_equipment_multi_select", + "target": "docs_ui_components_multi_select" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_group_multiselect", + "target": "docs_ui_components_multi_select" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_filters", + "target": "docs_ui_components_multi_select" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_index_login_page", + "target": "frontend_index_login_form" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_index_login_page", + "target": "frontend_index_login_script" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_index_login_page", + "target": "frontend_index_theme_toggle_script" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_admin_spa_shell", + "target": "frontend_admin_index_settings_menu" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_admin_spa_shell", + "target": "frontend_admin_index_sidebar_navigation" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_admin_spa_shell", + "target": "frontend_admin_index_teacher_request_badge" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_index_admin_back_link", + "target": "frontend_admin_index_admin_spa_shell" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_auditorium_workload_workload_view" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_classrooms_classroom_management" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_dashboard_dashboard_view" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_department_workspace_department_workspace_view" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_groups_group_management" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_schedule_schedule_rule_constructor" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_schedule_view_schedule_view_shell" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_subjects_subject_management" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_university_structure_university_structure_view" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_sidebar_navigation", + "target": "frontend_admin_views_users_user_management" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_index_settings_menu", + "target": "frontend_admin_settings_index_settings_spa_shell" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_index_settings_spa_shell", + "target": "frontend_admin_settings_index_admin_back_link" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_index_settings_spa_shell", + "target": "frontend_admin_settings_index_settings_navigation" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_index_settings_navigation", + "target": "frontend_admin_settings_views_database_tenant_connection_management" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_index_settings_navigation", + "target": "frontend_admin_settings_views_edu_forms_education_forms_management" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_index_settings_navigation", + "target": "frontend_admin_settings_views_general_general_settings_placeholder" + }, + { + "relation": "references", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/settings/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_index_settings_navigation", + "target": "frontend_admin_settings_views_time_slots_time_slots_settings" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/settings/views/database.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_views_database_tenant_connection_management", + "target": "frontend_admin_settings_views_database_tenants_table" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_settings_views_edu_forms_education_forms_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/settings/views/time-slots.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_views_time_slots_time_slots_settings", + "target": "frontend_admin_settings_views_time_slots_manual_time_grid_modal" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/settings/views/time-slots.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_views_time_slots_time_slots_settings", + "target": "frontend_admin_settings_views_time_slots_time_slot_scope" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/settings/views/time-slots.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_settings_views_time_slots_time_slot_scope", + "target": "frontend_admin_views_academic_calendar_calendar_day_dialog" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_dashboard_dashboard_view", + "target": "frontend_admin_views_dashboard_conflict_center" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_dashboard_dashboard_view", + "target": "frontend_admin_views_dashboard_quick_navigation" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_dashboard_dashboard_view", + "target": "frontend_admin_views_dashboard_realtime_monitoring" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_dashboard_conflict_center", + "target": "frontend_admin_views_schedule_schedule_slot_conflict_resolution" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_dashboard_quick_navigation", + "target": "frontend_admin_views_schedule_schedule_rule_constructor" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/dashboard.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_dashboard_quick_navigation", + "target": "frontend_admin_views_schedule_view_schedule_view_shell" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_academic_year_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_calendar_day_dialog" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_calendar_grid_editor" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_calendar_subject_bindings" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_academic_calendar_academic_calendar_view", + "target": "frontend_admin_views_academic_calendar_semester_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_calendar_assignment", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_university_structure_profile_management", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_university_structure_specialty_management", + "target": "frontend_admin_views_academic_calendar_academic_calendar_view" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_academic_calendar_semester_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/academic-calendar.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_academic_calendar_calendar_subject_bindings", + "target": "frontend_admin_views_subjects_subject_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/auditorium-workload.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_auditorium_workload_workload_view", + "target": "frontend_admin_views_auditorium_workload_workload_filters" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/auditorium-workload.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_auditorium_workload_workload_view", + "target": "frontend_admin_views_classrooms_classroom_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/classrooms.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_classrooms_equipment_dictionary", + "target": "frontend_admin_views_auditorium_workload_workload_filters" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/classrooms.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_classrooms_classroom_management", + "target": "frontend_admin_views_classrooms_equipment_dictionary" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/classrooms.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_classrooms_classroom_management", + "target": "frontend_admin_views_classrooms_equipment_multi_select" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_view_target_filters", + "target": "frontend_admin_views_classrooms_classroom_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_department_workspace_department_workspace_view", + "target": "frontend_admin_views_department_workspace_department_comments" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_department_workspace_department_workspace_view", + "target": "frontend_admin_views_department_workspace_department_subject_import" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_department_workspace_department_workspace_view", + "target": "frontend_admin_views_department_workspace_teacher_assignment" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_department_workspace_department_workspace_view", + "target": "frontend_admin_views_department_workspace_teacher_request_form" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "frontend/admin/views/users.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_users_role_selector", + "target": "frontend_admin_views_department_workspace_department_workspace_view" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/department/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_department_index_department_redirect", + "target": "frontend_admin_views_department_workspace_department_workspace_view" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_department_workspace_department_subject_import", + "target": "frontend_admin_views_subjects_subject_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/department-workspace.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_department_workspace_teacher_request_form", + "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_groups_group_calendar_assignment" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_groups_group_filters" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_groups_subgroup_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_university_structure_department_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_university_structure_profile_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/groups.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_groups_group_management", + "target": "frontend_admin_views_university_structure_specialty_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_groups_group_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_view_target_filters", + "target": "frontend_admin_views_groups_group_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_view_schedule_view_shell", + "target": "frontend_admin_views_schedule_view_schedule_results" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_view_schedule_view_shell", + "target": "frontend_admin_views_schedule_view_target_filters" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_view_target_filters", + "target": "frontend_admin_views_subjects_subject_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/schedule-view.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_view_target_filters", + "target": "frontend_admin_views_university_structure_department_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_schedule_schedule_group_multiselect" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_schedule_schedule_hours_start_weeks" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_schedule_schedule_slot_conflict_resolution" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_schedule_schedule_visual_drawer" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/schedule.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_schedule_schedule_rule_constructor", + "target": "frontend_admin_views_subjects_subject_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/subjects.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_subjects_subject_management", + "target": "frontend_admin_views_subjects_teacher_subject_binding" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/views/subjects.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_subjects_subject_management", + "target": "frontend_admin_views_university_structure_department_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/admin/views/subjects.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_subjects_teacher_subject_binding", + "target": "frontend_admin_views_users_user_management" + }, + { + "relation": "shares_data_with", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "frontend/admin/views/users.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_users_user_management", + "target": "frontend_admin_views_teacher_requests_teacher_requests_admin_view" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_university_structure_university_structure_view", + "target": "frontend_admin_views_university_structure_department_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_university_structure_university_structure_view", + "target": "frontend_admin_views_university_structure_profile_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_university_structure_university_structure_view", + "target": "frontend_admin_views_university_structure_specialty_management" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/university-structure.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_university_structure_specialty_management", + "target": "frontend_admin_views_university_structure_profile_management" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/admin/views/users.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_admin_views_users_user_management", + "target": "frontend_admin_views_users_role_selector" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_edu_office_index_edu_office_redirect_page", + "target": "frontend_edu_office_index_admin_schedule_view_route" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "frontend_edu_office_index_edu_office_redirect_page" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_group_selection" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_loadgroups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_loadschedule" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_schedule_grid" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_student_index_week_navigation" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_student_schedule_page", + "target": "frontend_teacher_index_teacher_schedule_page" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "frontend_student_index_student_schedule_page" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_week_navigation", + "target": "frontend_teacher_index_week_navigation" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_schedule_grid", + "target": "frontend_teacher_index_schedule_grid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_loadgroups", + "target": "frontend_student_index_api_groups_endpoint" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_loadgroups", + "target": "frontend_student_index_fetchjson" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_loadschedule", + "target": "frontend_student_index_api_schedule_group_endpoint" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_loadschedule", + "target": "frontend_student_index_fetchjson" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_loadschedule", + "target": "frontend_student_index_renderweek" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_loadschedule", + "target": "frontend_teacher_index_loadschedule" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_renderweek", + "target": "frontend_student_index_renderday" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_renderemptyweek", + "target": "frontend_student_index_renderday" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_renderday", + "target": "frontend_student_index_renderlesson" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_fetchjson", + "target": "frontend_student_index_clearauthstate" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_fetchjson", + "target": "frontend_student_index_refreshaccesstoken" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_fetchjson", + "target": "frontend_student_index_student_auth_state" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_fetchjson", + "target": "frontend_teacher_index_fetchjson" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_refreshaccesstoken", + "target": "frontend_student_index_api_auth_refresh_endpoint" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_refreshaccesstoken", + "target": "frontend_student_index_storeauthstate" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_refreshaccesstoken", + "target": "frontend_teacher_index_refreshaccesstoken" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_logout", + "target": "frontend_student_index_api_auth_logout_endpoint" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_logout", + "target": "frontend_student_index_clearauthstate" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_logout", + "target": "frontend_teacher_index_logout" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_storeauthstate", + "target": "frontend_student_index_student_auth_state" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_clearauthstate", + "target": "frontend_student_index_student_auth_state" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/student/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_student_index_student_auth_state", + "target": "frontend_teacher_index_teacher_auth_state" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.65, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_database_per_tenant", + "target": "frontend_student_index_api_schedule_group_endpoint" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_loadschedule" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_responsive_schedule_layout" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_schedule_grid" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_teacher_identity" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_teacher_schedule_page", + "target": "frontend_teacher_index_week_navigation" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "frontend_teacher_index_teacher_schedule_page" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_teacher_identity", + "target": "frontend_teacher_index_teacher_auth_state" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_loadschedule", + "target": "frontend_teacher_index_api_schedule_teacher_endpoint" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_loadschedule", + "target": "frontend_teacher_index_fetchjson" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_loadschedule", + "target": "frontend_teacher_index_renderemptyweek" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_loadschedule", + "target": "frontend_teacher_index_renderweek" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_renderweek", + "target": "frontend_teacher_index_collectslots" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_renderweek", + "target": "frontend_teacher_index_rendercell" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_renderweek", + "target": "frontend_teacher_index_renderhead" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_renderweek", + "target": "frontend_teacher_index_rendermobileweek" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_rendermobileweek", + "target": "frontend_teacher_index_renderhead" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_rendermobileweek", + "target": "frontend_teacher_index_renderlesson" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_renderemptyweek", + "target": "frontend_teacher_index_renderhead" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_rendercell", + "target": "frontend_teacher_index_renderlesson" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_fetchjson", + "target": "frontend_teacher_index_clearauthstate" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_fetchjson", + "target": "frontend_teacher_index_refreshaccesstoken" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_fetchjson", + "target": "frontend_teacher_index_teacher_auth_state" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_refreshaccesstoken", + "target": "frontend_teacher_index_api_auth_refresh_endpoint" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_refreshaccesstoken", + "target": "frontend_teacher_index_storeauthstate" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_logout", + "target": "frontend_teacher_index_api_auth_logout_endpoint" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_logout", + "target": "frontend_teacher_index_clearauthstate" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_storeauthstate", + "target": "frontend_teacher_index_teacher_auth_state" + }, + { + "relation": "shares_data_with", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/teacher/index.html", + "source_location": null, + "weight": 1.0, + "source": "frontend_teacher_index_clearauthstate", + "target": "frontend_teacher_index_teacher_auth_state" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.65, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_database_per_tenant", + "target": "frontend_teacher_index_api_schedule_teacher_endpoint" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_devops_resume_page", + "target": "resume_index_junior_devops_infrastructure_engineer" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_devops_resume_page", + "target": "resume_index_zuev_egor_alekseevich" + }, + { + "relation": "conceptually_related_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_zuev_egor_alekseevich", + "target": "resume_index_smart_schedule_startup" + }, + { + "relation": "conceptually_related_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_homelab_engineering_practice", + "target": "resume_index_junior_devops_infrastructure_engineer" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_ansible_security_provisioning" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_backend_resilient_startup" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_database_per_tenant" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_dynamic_tenants_configmap" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_gitea_actions_cicd" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_kubernetes_k3s_delivery" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_smart_schedule_startup", + "target": "resume_index_opentelemetry_signoz_observability" + }, + { + "relation": "conceptually_related_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_database_per_tenant", + "target": "resume_index_opentelemetry_signoz_observability" + }, + { + "relation": "conceptually_related_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_ansible_security_provisioning", + "target": "resume_index_devsecops_principles" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.75, + "source_file": "resume/index.html", + "source_location": null, + "weight": 1.0, + "source": "resume_index_opentelemetry_signoz_observability", + "target": "resume_index_incident_runbook_mindset" + } + ], + "hyperedges": [ + { + "id": "dynamic_schedule_documentation", + "label": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "nodes": [ + "docs_business_logic_dynamic_schedule_model", + "docs_api_dynamic_schedule_endpoints", + "docs_database_dynamic_schedule_tables", + "docs_academic_calendar_calendar_model", + "docs_frontend_schedule_views", + "docs_dynamic_schedule_implementation_dynamic_schedule_implementation", + "docs_schedule_proposal_dynamic_schedule_concept" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/BUSINESS_LOGIC.md" + }, + { + "id": "multitenant_infrastructure_pattern", + "label": "\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b", + "nodes": [ + "docs_architecture_multitenant_architecture", + "devops_database_per_tenant_pattern", + "docs_infrastructure_tenants_configmap", + "compose_db_service", + "docs_logging_tenant_mdc_context" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/ARCHITECTURE.md" + }, + { + "id": "documentation_governance_policy", + "label": "\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", + "nodes": [ + "agents_project_regulation", + "_agents_skills_autoupdatedocs_autoupdatedocs_skill", + "docs_development_flyway_rules", + "docs_database_flyway_migrations" + ], + "relation": "implement", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".agents/skills/AutoUpdateDocs.md" + }, + { + "id": "admin_spa_route_system", + "label": "\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u043e\u0439 SPA", + "nodes": [ + "frontend_admin_index_admin_spa_shell", + "frontend_admin_index_sidebar_navigation", + "frontend_admin_views_dashboard_dashboard_view", + "frontend_admin_views_teacher_requests_teacher_requests_admin_view", + "frontend_admin_views_department_workspace_department_workspace_view", + "frontend_admin_views_schedule_schedule_rule_constructor", + "frontend_admin_views_academic_calendar_academic_calendar_view", + "frontend_admin_views_auditorium_workload_workload_view", + "frontend_admin_views_schedule_view_schedule_view_shell", + "frontend_admin_views_classrooms_classroom_management", + "frontend_admin_views_groups_group_management", + "frontend_admin_views_university_structure_university_structure_view", + "frontend_admin_views_subjects_subject_management", + "frontend_admin_views_users_user_management" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/index.html" + }, + { + "id": "settings_spa_route_system", + "label": "\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b SPA \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", + "nodes": [ + "frontend_admin_settings_index_settings_spa_shell", + "frontend_admin_settings_index_settings_navigation", + "frontend_admin_settings_views_general_general_settings_placeholder", + "frontend_admin_settings_views_time_slots_time_slots_settings", + "frontend_admin_settings_views_edu_forms_education_forms_management", + "frontend_admin_settings_views_database_tenant_connection_management" + ], + "relation": "form", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/admin/settings/index.html" + }, + { + "id": "schedule_generation_workspace", + "label": "\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "nodes": [ + "docs_schedule_tasks_dynamic_schedule_tasks", + "docs_schedule_tasks_daily_academic_calendar_grid", + "docs_schedule_tasks_group_calendar_assignment", + "frontend_admin_views_academic_calendar_academic_calendar_view", + "frontend_admin_views_groups_group_management", + "frontend_admin_views_schedule_schedule_rule_constructor", + "frontend_admin_views_schedule_view_schedule_view_shell", + "frontend_admin_settings_views_time_slots_time_slots_settings" + ], + "relation": "participate_in", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/SCHEDULE_TASKS.md" + }, + { + "id": "shared_week_schedule_rendering", + "label": "\u041e\u0431\u0449\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f", + "nodes": [ + "frontend_student_index_loadschedule", + "frontend_student_index_renderweek", + "frontend_teacher_index_loadschedule", + "frontend_teacher_index_renderweek", + "frontend_edu_office_index_admin_schedule_view_route" + ], + "relation": "participate_in", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/student/index.html" + }, + { + "id": "shared_browser_auth_flow", + "label": "\u041e\u0431\u0449\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438", + "nodes": [ + "frontend_student_index_fetchjson", + "frontend_student_index_refreshaccesstoken", + "frontend_student_index_logout", + "frontend_teacher_index_fetchjson", + "frontend_teacher_index_refreshaccesstoken", + "frontend_teacher_index_logout" + ], + "relation": "implement", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/student/index.html" + }, + { + "id": "resume_devops_delivery_chain", + "label": "\u0426\u0435\u043f\u043e\u0447\u043a\u0430 DevOps-\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0440\u0435\u0437\u044e\u043c\u0435", + "nodes": [ + "resume_index_kubernetes_k3s_delivery", + "resume_index_dynamic_tenants_configmap", + "resume_index_gitea_actions_cicd", + "resume_index_opentelemetry_signoz_observability", + "resume_index_database_per_tenant" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "resume/index.html" + } + ], + "built_at_commit": "9e6e0038c66f79946e52d39512cdf77091ebf0ca" +} \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json new file mode 100644 index 0000000..f9a3f05 --- /dev/null +++ b/graphify-out/manifest.json @@ -0,0 +1,1212 @@ +{ + "backend/pom.xml": { + "mtime": 1779889713.7267025, + "ast_hash": "2946762487d0a549444fcc260bd0ccd8", + "semantic_hash": "2946762487d0a549444fcc260bd0ccd8" + }, + "backend/src/main/java/com/magistr/app/Application.java": { + "mtime": 1773362642.0636432, + "ast_hash": "43360774fe06232fd2a582d3169567cb", + "semantic_hash": "43360774fe06232fd2a582d3169567cb" + }, + "backend/src/main/java/com/magistr/app/config/AppConfig.java": { + "mtime": 1773185539.1634464, + "ast_hash": "c6ac0e84eba0970337a1a51c62c3ec24", + "semantic_hash": "c6ac0e84eba0970337a1a51c62c3ec24" + }, + "backend/src/main/java/com/magistr/app/config/DataInitializer.java": { + "mtime": 1773354326.367503, + "ast_hash": "7964c5ffc2de58fffa33c50e9871c8db", + "semantic_hash": "7964c5ffc2de58fffa33c50e9871c8db" + }, + "backend/src/main/java/com/magistr/app/config/auth/AuthContext.java": { + "mtime": 1779192709.476187, + "ast_hash": "f7747ce0a2969839d2fab5864052f533", + "semantic_hash": "f7747ce0a2969839d2fab5864052f533" + }, + "backend/src/main/java/com/magistr/app/config/auth/AuthenticatedUser.java": { + "mtime": 1779192709.4481874, + "ast_hash": "1f5bec3ec3e4d8f1d16d17538f129d46", + "semantic_hash": "1f5bec3ec3e4d8f1d16d17538f129d46" + }, + "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java": { + "mtime": 1779889713.7267025, + "ast_hash": "2eba27bf5a1fe5d0121f138b2e683da9", + "semantic_hash": "2eba27bf5a1fe5d0121f138b2e683da9" + }, + "backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java": { + "mtime": 1779889713.7267025, + "ast_hash": "167f25fc16c96d92217f1871e75555a2", + "semantic_hash": "167f25fc16c96d92217f1871e75555a2" + }, + "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java": { + "mtime": 1779889713.7267025, + "ast_hash": "14a1ed9dc2cdf3b64a3c3cad0e8c9dd9", + "semantic_hash": "14a1ed9dc2cdf3b64a3c3cad0e8c9dd9" + }, + "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenRotation.java": { + "mtime": 1779889713.7267025, + "ast_hash": "70379cbe9b04f6c8977d030fef61f523", + "semantic_hash": "70379cbe9b04f6c8977d030fef61f523" + }, + "backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java": { + "mtime": 1779889713.7267025, + "ast_hash": "6468bee8cff2cc6aae254e5cf7a47f4d", + "semantic_hash": "6468bee8cff2cc6aae254e5cf7a47f4d" + }, + "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java": { + "mtime": 1779192709.5321865, + "ast_hash": "c4fb16468fec57cfbd351e046ee6ee68", + "semantic_hash": "c4fb16468fec57cfbd351e046ee6ee68" + }, + "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java": { + "mtime": 1779900787.9826443, + "ast_hash": "453d14bb1091256d051d0f887cfae72a", + "semantic_hash": "453d14bb1091256d051d0f887cfae72a" + }, + "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java": { + "mtime": 1773353023.4644332, + "ast_hash": "c5b294cb5b957e293331ffbb0b16f19a", + "semantic_hash": "c5b294cb5b957e293331ffbb0b16f19a" + }, + "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java": { + "mtime": 1779900237.4812663, + "ast_hash": "5c847ca88b1b17f2192a8f9a82a89940", + "semantic_hash": "5c847ca88b1b17f2192a8f9a82a89940" + }, + "backend/src/main/java/com/magistr/app/config/tenant/TenantContext.java": { + "mtime": 1773353023.4644332, + "ast_hash": "a3a12cde556da70dc69f0a60d68de4f5", + "semantic_hash": "a3a12cde556da70dc69f0a60d68de4f5" + }, + "backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java": { + "mtime": 1779900346.2987657, + "ast_hash": "75d0fede90c15752eb1b1365c49d661f", + "semantic_hash": "75d0fede90c15752eb1b1365c49d661f" + }, + "backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java": { + "mtime": 1773884009.3745615, + "ast_hash": "6a47a6ae66dde66f11c8326b4819dd33", + "semantic_hash": "6a47a6ae66dde66f11c8326b4819dd33" + }, + "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java": { + "mtime": 1773358467.6841214, + "ast_hash": "639142de0a101f026f35f72e366466b0", + "semantic_hash": "639142de0a101f026f35f72e366466b0" + }, + "backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java": { + "mtime": 1779900237.5572708, + "ast_hash": "38ce3dc9c274fffa5259df24513f8fdf", + "semantic_hash": "38ce3dc9c274fffa5259df24513f8fdf" + }, + "backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java": { + "mtime": 1779193237.9542265, + "ast_hash": "a9c9838c9b0aaddc68810d16483016fd", + "semantic_hash": "a9c9838c9b0aaddc68810d16483016fd" + }, + "backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java": { + "mtime": 1781379245.2787657, + "ast_hash": "437e0c23686b16e4b01721dacf3fc5a2", + "semantic_hash": "437e0c23686b16e4b01721dacf3fc5a2" + }, + "backend/src/main/java/com/magistr/app/controller/AuthController.java": { + "mtime": 1779900237.1892493, + "ast_hash": "8953837ce121905948a87fe8a705420b", + "semantic_hash": "8953837ce121905948a87fe8a705420b" + }, + "backend/src/main/java/com/magistr/app/controller/ClassroomController.java": { + "mtime": 1779212035.1958072, + "ast_hash": "e416211afe531593382d9110e418b9ab", + "semantic_hash": "e416211afe531593382d9110e418b9ab" + }, + "backend/src/main/java/com/magistr/app/controller/DatabaseController.java": { + "mtime": 1779193237.638861, + "ast_hash": "c4a9ea91a1019648af35ecc40e4bdb35", + "semantic_hash": "c4a9ea91a1019648af35ecc40e4bdb35" + }, + "backend/src/main/java/com/magistr/app/controller/DepartmentController.java": { + "mtime": 1779212022.5006423, + "ast_hash": "6c4e86c62eb5fba54abb37d171208c46", + "semantic_hash": "6c4e86c62eb5fba54abb37d171208c46" + }, + "backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java": { + "mtime": 1780416753.5783765, + "ast_hash": "122d190c46c82c5d58705967262234e8", + "semantic_hash": "122d190c46c82c5d58705967262234e8" + }, + "backend/src/main/java/com/magistr/app/controller/EducationFormController.java": { + "mtime": 1779215267.194245, + "ast_hash": "534a92b84dc508bc51a8befaf0387bea", + "semantic_hash": "534a92b84dc508bc51a8befaf0387bea" + }, + "backend/src/main/java/com/magistr/app/controller/EquipmentController.java": { + "mtime": 1779192873.1965325, + "ast_hash": "0d7ead19d23da8305922b3b63c510688", + "semantic_hash": "0d7ead19d23da8305922b3b63c510688" + }, + "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java": { + "mtime": 1779900653.4972477, + "ast_hash": "1b98b94169150dc7740c38bbe5825582", + "semantic_hash": "1b98b94169150dc7740c38bbe5825582" + }, + "backend/src/main/java/com/magistr/app/controller/GroupController.java": { + "mtime": 1780345824.6288636, + "ast_hash": "6b9f495a24340e34465e7dc836642ec9", + "semantic_hash": "6b9f495a24340e34465e7dc836642ec9" + }, + "backend/src/main/java/com/magistr/app/controller/LessonTypeController.java": { + "mtime": 1779215271.7273176, + "ast_hash": "22d13c8db741268212dd3a6f978066c6", + "semantic_hash": "22d13c8db741268212dd3a6f978066c6" + }, + "backend/src/main/java/com/magistr/app/controller/ScheduleController.java": { + "mtime": 1779902109.6193602, + "ast_hash": "3859c653d0c95cf0b97092f676ef7556", + "semantic_hash": "3859c653d0c95cf0b97092f676ef7556" + }, + "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java": { + "mtime": 1779193126.8397837, + "ast_hash": "6d073c122ec654022c5ad7c9a2923165", + "semantic_hash": "6d073c122ec654022c5ad7c9a2923165" + }, + "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java": { + "mtime": 1781379245.2787657, + "ast_hash": "dfaaa282e373778e8694beeda8620d32", + "semantic_hash": "dfaaa282e373778e8694beeda8620d32" + }, + "backend/src/main/java/com/magistr/app/controller/ScheduleSearchController.java": { + "mtime": 1779902109.665362, + "ast_hash": "8ea595c69490769cc5b042ba8be93eff", + "semantic_hash": "8ea595c69490769cc5b042ba8be93eff" + }, + "backend/src/main/java/com/magistr/app/controller/SpecialityController.java": { + "mtime": 1780234018.662215, + "ast_hash": "83f9fcfb16f045562e587d98cd0b2778", + "semantic_hash": "83f9fcfb16f045562e587d98cd0b2778" + }, + "backend/src/main/java/com/magistr/app/controller/SubgroupController.java": { + "mtime": 1780416753.5783765, + "ast_hash": "7c3818b1e80a5562127ea4324e6fe416", + "semantic_hash": "7c3818b1e80a5562127ea4324e6fe416" + }, + "backend/src/main/java/com/magistr/app/controller/SubjectController.java": { + "mtime": 1779215249.5832856, + "ast_hash": "547e89639cc07da9b891e85b970a68b0", + "semantic_hash": "547e89639cc07da9b891e85b970a68b0" + }, + "backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java": { + "mtime": 1780416753.5783765, + "ast_hash": "87b0173bf6fcb07f7034367dd84dafe2", + "semantic_hash": "87b0173bf6fcb07f7034367dd84dafe2" + }, + "backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java": { + "mtime": 1779215261.3583028, + "ast_hash": "d606781484ee1f026f797b97eb3bb552", + "semantic_hash": "d606781484ee1f026f797b97eb3bb552" + }, + "backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java": { + "mtime": 1779193237.781877, + "ast_hash": "ae702e2220221b44aac95d1569fabaf6", + "semantic_hash": "ae702e2220221b44aac95d1569fabaf6" + }, + "backend/src/main/java/com/magistr/app/controller/UserController.java": { + "mtime": 1780416753.5783765, + "ast_hash": "8b48f7de3446c44cd4e561a531fbe9aa", + "semantic_hash": "8b48f7de3446c44cd4e561a531fbe9aa" + }, + "backend/src/main/java/com/magistr/app/controller/WorkloadController.java": { + "mtime": 1779902109.5243566, + "ast_hash": "2a8a4b2b453186d1568703b9b9748fe5", + "semantic_hash": "2a8a4b2b453186d1568703b9b9748fe5" + }, + "backend/src/main/java/com/magistr/app/dto/AcademicCalendarActivityTypeDto.java": { + "mtime": 1777579616.755385, + "ast_hash": "682af8460859d097ade4331277b6d862", + "semantic_hash": "682af8460859d097ade4331277b6d862" + }, + "backend/src/main/java/com/magistr/app/dto/AcademicCalendarDto.java": { + "mtime": 1777579616.7813847, + "ast_hash": "009980d176295f2c2a342b6d62f36832", + "semantic_hash": "009980d176295f2c2a342b6d62f36832" + }, + "backend/src/main/java/com/magistr/app/dto/AcademicCalendarGridDayDto.java": { + "mtime": 1777579616.8063846, + "ast_hash": "106a1b059708af1c859b963d715268ef", + "semantic_hash": "106a1b059708af1c859b963d715268ef" + }, + "backend/src/main/java/com/magistr/app/dto/AcademicCalendarSubjectDto.java": { + "mtime": 1780345824.6288636, + "ast_hash": "152277c02c9b8ba4a13586c613690fc9", + "semantic_hash": "152277c02c9b8ba4a13586c613690fc9" + }, + "backend/src/main/java/com/magistr/app/dto/AcademicYearDto.java": { + "mtime": 1777460927.4330733, + "ast_hash": "ff7fbb50116a97fde4e185c10eb8fb9a", + "semantic_hash": "ff7fbb50116a97fde4e185c10eb8fb9a" + }, + "backend/src/main/java/com/magistr/app/dto/ClassroomRequest.java": { + "mtime": 1777654589.8517497, + "ast_hash": "34f4f65ca4f3efc914c902a7be3be630", + "semantic_hash": "34f4f65ca4f3efc914c902a7be3be630" + }, + "backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java": { + "mtime": 1779192812.6601458, + "ast_hash": "ba55323464d193fe4132c14983ab0a23", + "semantic_hash": "ba55323464d193fe4132c14983ab0a23" + }, + "backend/src/main/java/com/magistr/app/dto/CreateDepartmentRequest.java": { + "mtime": 1775069027.3502638, + "ast_hash": "1ea8c0ba0ed70e79e81e5bf9d6e45232", + "semantic_hash": "1ea8c0ba0ed70e79e81e5bf9d6e45232" + }, + "backend/src/main/java/com/magistr/app/dto/CreateGroupRequest.java": { + "mtime": 1777579638.8762064, + "ast_hash": "968af5b5d383faec9e466bde54dc75ce", + "semantic_hash": "968af5b5d383faec9e466bde54dc75ce" + }, + "backend/src/main/java/com/magistr/app/dto/CreateSpecialityRequest.java": { + "mtime": 1775069027.3502638, + "ast_hash": "f347890471c4b79387ab68f4772c7c7d", + "semantic_hash": "f347890471c4b79387ab68f4772c7c7d" + }, + "backend/src/main/java/com/magistr/app/dto/CreateSubjectRequest.java": { + "mtime": 1775069027.3502638, + "ast_hash": "cef00b653efbfe276c70a4a35ff82e72", + "semantic_hash": "cef00b653efbfe276c70a4a35ff82e72" + }, + "backend/src/main/java/com/magistr/app/dto/CreateTeacherCreationRequest.java": { + "mtime": 1780416753.5783765, + "ast_hash": "031c992a2d711460f0115448890bf72e", + "semantic_hash": "031c992a2d711460f0115448890bf72e" + }, + "backend/src/main/java/com/magistr/app/dto/CreateUserRequest.java": { + "mtime": 1775069027.3502638, + "ast_hash": "a619a0cbf0b68c67e8453b362d4a1639", + "semantic_hash": "a619a0cbf0b68c67e8453b362d4a1639" + }, + "backend/src/main/java/com/magistr/app/dto/DepartmentResponse.java": { + "mtime": 1775069027.3502638, + "ast_hash": "d80fe86b3896e50c134d551676126ef6", + "semantic_hash": "d80fe86b3896e50c134d551676126ef6" + }, + "backend/src/main/java/com/magistr/app/dto/DepartmentTransferRequest.java": { + "mtime": 1779192798.589288, + "ast_hash": "f4e3ecf37120ba3822e8de5e8d0f5692", + "semantic_hash": "f4e3ecf37120ba3822e8de5e8d0f5692" + }, + "backend/src/main/java/com/magistr/app/dto/GroupCalendarAssignmentDto.java": { + "mtime": 1780345824.6449046, + "ast_hash": "d7852c83347b01cdebf2fdbf7fc636b7", + "semantic_hash": "d7852c83347b01cdebf2fdbf7fc636b7" + }, + "backend/src/main/java/com/magistr/app/dto/GroupResponse.java": { + "mtime": 1779904225.3981185, + "ast_hash": "a642e540b34483d88035ea8f74abc629", + "semantic_hash": "a642e540b34483d88035ea8f74abc629" + }, + "backend/src/main/java/com/magistr/app/dto/LessonTypeResponse.java": { + "mtime": 1777493672.0170872, + "ast_hash": "3972b3c54ec00d56eecafe9ab1f30f2b", + "semantic_hash": "3972b3c54ec00d56eecafe9ab1f30f2b" + }, + "backend/src/main/java/com/magistr/app/dto/LoginRequest.java": { + "mtime": 1773185539.1634464, + "ast_hash": "696d78a280e0817932bef105e1d84943", + "semantic_hash": "696d78a280e0817932bef105e1d84943" + }, + "backend/src/main/java/com/magistr/app/dto/LoginResponse.java": { + "mtime": 1777461201.4705665, + "ast_hash": "573fca4459614cec19080d2e6547f963", + "semantic_hash": "573fca4459614cec19080d2e6547f963" + }, + "backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java": { + "mtime": 1780232687.9722412, + "ast_hash": "b3cab9e85882aead67a78411ca0fceca", + "semantic_hash": "b3cab9e85882aead67a78411ca0fceca" + }, + "backend/src/main/java/com/magistr/app/dto/ReviewTeacherCreationRequest.java": { + "mtime": 1780416753.5783765, + "ast_hash": "689d6c30703ee677eb50130097e6fb71", + "semantic_hash": "689d6c30703ee677eb50130097e6fb71" + }, + "backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java": { + "mtime": 1779192798.681287, + "ast_hash": "e4803baded2a6f5d40fe78510e3d93bb", + "semantic_hash": "e4803baded2a6f5d40fe78510e3d93bb" + }, + "backend/src/main/java/com/magistr/app/dto/ScheduleRuleDto.java": { + "mtime": 1778090735.7005506, + "ast_hash": "e7713ff75636f5bcaae8f2dace0a9ce2", + "semantic_hash": "e7713ff75636f5bcaae8f2dace0a9ce2" + }, + "backend/src/main/java/com/magistr/app/dto/ScheduleRuleSlotDto.java": { + "mtime": 1778234933.3341813, + "ast_hash": "7c1a9d2b4ed704a317b35b697cf37675", + "semantic_hash": "7c1a9d2b4ed704a317b35b697cf37675" + }, + "backend/src/main/java/com/magistr/app/dto/SemesterDto.java": { + "mtime": 1777460927.4080732, + "ast_hash": "0715cee055cd40d6b5c9cea552d4da3a", + "semantic_hash": "0715cee055cd40d6b5c9cea552d4da3a" + }, + "backend/src/main/java/com/magistr/app/dto/SpecialityResponse.java": { + "mtime": 1775069027.3502638, + "ast_hash": "b232ee0e7602cea5092e8d235e686ebe", + "semantic_hash": "b232ee0e7602cea5092e8d235e686ebe" + }, + "backend/src/main/java/com/magistr/app/dto/SpecialtyProfileDto.java": { + "mtime": 1777579616.7043855, + "ast_hash": "6a065af41b29a02a1d6164e0c149311a", + "semantic_hash": "6a065af41b29a02a1d6164e0c149311a" + }, + "backend/src/main/java/com/magistr/app/dto/SubgroupDto.java": { + "mtime": 1778093881.2551124, + "ast_hash": "e92a5762e05b320377d2416c17b9f934", + "semantic_hash": "e92a5762e05b320377d2416c17b9f934" + }, + "backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java": { + "mtime": 1779192798.6502874, + "ast_hash": "066548d5dd6763666e8bf66eeda945e5", + "semantic_hash": "066548d5dd6763666e8bf66eeda945e5" + }, + "backend/src/main/java/com/magistr/app/dto/SubjectResponse.java": { + "mtime": 1775069027.3502638, + "ast_hash": "97d695ecbdce270c11925bff0e876b65", + "semantic_hash": "97d695ecbdce270c11925bff0e876b65" + }, + "backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java": { + "mtime": 1780416753.578562, + "ast_hash": "b60c69348cad8fdec4b7f794700ccbe3", + "semantic_hash": "b60c69348cad8fdec4b7f794700ccbe3" + }, + "backend/src/main/java/com/magistr/app/dto/TeacherDepartmentAssignmentDto.java": { + "mtime": 1779192798.6202877, + "ast_hash": "d85166c382db63ab0994f94bdbd054a9", + "semantic_hash": "d85166c382db63ab0994f94bdbd054a9" + }, + "backend/src/main/java/com/magistr/app/dto/TeacherSubjectResponse.java": { + "mtime": 1773185539.1634464, + "ast_hash": "d3376d177df5a0f39a1b5d6c44589cfc", + "semantic_hash": "d3376d177df5a0f39a1b5d6c44589cfc" + }, + "backend/src/main/java/com/magistr/app/dto/TimeSlotDateAssignmentDto.java": { + "mtime": 1777656879.246685, + "ast_hash": "08e0866aac44c824510cc61e56a90807", + "semantic_hash": "08e0866aac44c824510cc61e56a90807" + }, + "backend/src/main/java/com/magistr/app/dto/TimeSlotDto.java": { + "mtime": 1777656870.7309313, + "ast_hash": "d915201f7990e7f1b520b592612d95f6", + "semantic_hash": "d915201f7990e7f1b520b592612d95f6" + }, + "backend/src/main/java/com/magistr/app/dto/TimeSlotScopeDto.java": { + "mtime": 1777656875.198799, + "ast_hash": "bead2b5b61a2317c2166d4e85bb5d9af", + "semantic_hash": "bead2b5b61a2317c2166d4e85bb5d9af" + }, + "backend/src/main/java/com/magistr/app/dto/UserResponse.java": { + "mtime": 1779902129.4637706, + "ast_hash": "af0728a2ca4efb4ab2b881ca630bbff3", + "semantic_hash": "af0728a2ca4efb4ab2b881ca630bbff3" + }, + "backend/src/main/java/com/magistr/app/dto/WorkloadSummaryDto.java": { + "mtime": 1779192798.7102866, + "ast_hash": "85bc8e090427e05c5e427ba298d4e4e7", + "semantic_hash": "85bc8e090427e05c5e427ba298d4e4e7" + }, + "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java": { + "mtime": 1777631805.0193436, + "ast_hash": "9b9558a261f1707094054e07903b68e0", + "semantic_hash": "9b9558a261f1707094054e07903b68e0" + }, + "backend/src/main/java/com/magistr/app/model/AcademicCalendarActivityType.java": { + "mtime": 1777579536.451313, + "ast_hash": "91578c19e7e3e64189ca3917300a6bff", + "semantic_hash": "91578c19e7e3e64189ca3917300a6bff" + }, + "backend/src/main/java/com/magistr/app/model/AcademicCalendarDay.java": { + "mtime": 1777579536.5023136, + "ast_hash": "d6e7ad120b88eccb4cac099f1231b77e", + "semantic_hash": "d6e7ad120b88eccb4cac099f1231b77e" + }, + "backend/src/main/java/com/magistr/app/model/AcademicCalendarSubject.java": { + "mtime": 1780345824.6449046, + "ast_hash": "078b100cc0a4afd395173307a577075d", + "semantic_hash": "078b100cc0a4afd395173307a577075d" + }, + "backend/src/main/java/com/magistr/app/model/AcademicYear.java": { + "mtime": 1777460866.736196, + "ast_hash": "d930a12ed6e247a747dd6792ef7b79fb", + "semantic_hash": "d930a12ed6e247a747dd6792ef7b79fb" + }, + "backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java": { + "mtime": 1779889713.7267025, + "ast_hash": "437457755460d6e6608bbdd879bdae8a", + "semantic_hash": "437457755460d6e6608bbdd879bdae8a" + }, + "backend/src/main/java/com/magistr/app/model/Classroom.java": { + "mtime": 1779192626.9630158, + "ast_hash": "e1da3e93f8234098865c1e7b10415f3e", + "semantic_hash": "e1da3e93f8234098865c1e7b10415f3e" + }, + "backend/src/main/java/com/magistr/app/model/Department.java": { + "mtime": 1779192626.4610147, + "ast_hash": "a193936f6c5d2c78631b3402c1b2b65f", + "semantic_hash": "a193936f6c5d2c78631b3402c1b2b65f" + }, + "backend/src/main/java/com/magistr/app/model/EducationForm.java": { + "mtime": 1779192626.6900187, + "ast_hash": "8bf4ad9fcd1e6983fe98414dd156d046", + "semantic_hash": "8bf4ad9fcd1e6983fe98414dd156d046" + }, + "backend/src/main/java/com/magistr/app/model/Equipment.java": { + "mtime": 1779192626.9086144, + "ast_hash": "17d7c347d82d868958d320844bdae5a9", + "semantic_hash": "17d7c347d82d868958d320844bdae5a9" + }, + "backend/src/main/java/com/magistr/app/model/LessonType.java": { + "mtime": 1775069027.3502638, + "ast_hash": "f2adf5056ede034d38be3243c49ef912", + "semantic_hash": "f2adf5056ede034d38be3243c49ef912" + }, + "backend/src/main/java/com/magistr/app/model/LifecycleEntity.java": { + "mtime": 1779904217.1519997, + "ast_hash": "910e3b29e72b5b006520da1a95c3f485", + "semantic_hash": "910e3b29e72b5b006520da1a95c3f485" + }, + "backend/src/main/java/com/magistr/app/model/Role.java": { + "mtime": 1779211978.7900417, + "ast_hash": "8b475fb5dd5d7ffe4f85b69f2051d413", + "semantic_hash": "8b475fb5dd5d7ffe4f85b69f2051d413" + }, + "backend/src/main/java/com/magistr/app/model/ScheduleLessonCategory.java": { + "mtime": 1779900237.3532588, + "ast_hash": "360063905665478ca10cbf0aa7682710", + "semantic_hash": "360063905665478ca10cbf0aa7682710" + }, + "backend/src/main/java/com/magistr/app/model/ScheduleOverride.java": { + "mtime": 1779192770.4435723, + "ast_hash": "a8514e1988eab6e3e3db58ffcdbf50f6", + "semantic_hash": "a8514e1988eab6e3e3db58ffcdbf50f6" + }, + "backend/src/main/java/com/magistr/app/model/ScheduleParity.java": { + "mtime": 1777460866.6852043, + "ast_hash": "c744b71790a534cb3d6b8d1a871686a2", + "semantic_hash": "c744b71790a534cb3d6b8d1a871686a2" + }, + "backend/src/main/java/com/magistr/app/model/ScheduleRule.java": { + "mtime": 1779900653.5512488, + "ast_hash": "bcda66400bbb585adff71a4ccd6dfa5b", + "semantic_hash": "bcda66400bbb585adff71a4ccd6dfa5b" + }, + "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java": { + "mtime": 1778234927.8525062, + "ast_hash": "b2f5209675c8513f8e3e309c6ed90818", + "semantic_hash": "b2f5209675c8513f8e3e309c6ed90818" + }, + "backend/src/main/java/com/magistr/app/model/Semester.java": { + "mtime": 1777460866.7612054, + "ast_hash": "d71d7d6b6c37e37c294c2733a4b988a5", + "semantic_hash": "d71d7d6b6c37e37c294c2733a4b988a5" + }, + "backend/src/main/java/com/magistr/app/model/SemesterType.java": { + "mtime": 1775069027.3502638, + "ast_hash": "452b3410bc9ac9eff5ba55256da87eac", + "semantic_hash": "452b3410bc9ac9eff5ba55256da87eac" + }, + "backend/src/main/java/com/magistr/app/model/Speciality.java": { + "mtime": 1779192626.5180204, + "ast_hash": "92034a17a1dc09ae5f21180f63f4f812", + "semantic_hash": "92034a17a1dc09ae5f21180f63f4f812" + }, + "backend/src/main/java/com/magistr/app/model/SpecialtyProfile.java": { + "mtime": 1779192626.5730197, + "ast_hash": "47199f787ab9e37beb470c480793f237", + "semantic_hash": "47199f787ab9e37beb470c480793f237" + }, + "backend/src/main/java/com/magistr/app/model/StudentGroup.java": { + "mtime": 1779192626.750018, + "ast_hash": "a7d1ab5310ecf746f629407a88bc53cd", + "semantic_hash": "a7d1ab5310ecf746f629407a88bc53cd" + }, + "backend/src/main/java/com/magistr/app/model/StudentGroupCalendarAssignment.java": { + "mtime": 1777579536.531314, + "ast_hash": "cee2d3a09032d508d7d1d3c5f89c3b2a", + "semantic_hash": "cee2d3a09032d508d7d1d3c5f89c3b2a" + }, + "backend/src/main/java/com/magistr/app/model/StudentGroupStudyState.java": { + "mtime": 1779904217.1759999, + "ast_hash": "4afd11e5f220e36fb5d8f52c2f1fef0d", + "semantic_hash": "4afd11e5f220e36fb5d8f52c2f1fef0d" + }, + "backend/src/main/java/com/magistr/app/model/Subgroup.java": { + "mtime": 1779192626.8020175, + "ast_hash": "75ff210971fd48590e8b38a17eb50dcc", + "semantic_hash": "75ff210971fd48590e8b38a17eb50dcc" + }, + "backend/src/main/java/com/magistr/app/model/Subject.java": { + "mtime": 1779192626.855017, + "ast_hash": "eec9af61a2c517ea2a48d833ff809ecb", + "semantic_hash": "eec9af61a2c517ea2a48d833ff809ecb" + }, + "backend/src/main/java/com/magistr/app/model/SubjectComment.java": { + "mtime": 1779192770.4135725, + "ast_hash": "d85ab42277835a85da913cced0d994f3", + "semantic_hash": "d85ab42277835a85da913cced0d994f3" + }, + "backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java": { + "mtime": 1780416753.578562, + "ast_hash": "12e82bf2565d8f71aa98e2c74ad48a3c", + "semantic_hash": "12e82bf2565d8f71aa98e2c74ad48a3c" + }, + "backend/src/main/java/com/magistr/app/model/TeacherCreationRequestStatus.java": { + "mtime": 1780416753.578562, + "ast_hash": "f489d804ac5f63d57f52b204e7edd8cb", + "semantic_hash": "f489d804ac5f63d57f52b204e7edd8cb" + }, + "backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java": { + "mtime": 1779192770.384573, + "ast_hash": "cf3f4ee7fa5bfd6e26b9844d1bd301d1", + "semantic_hash": "cf3f4ee7fa5bfd6e26b9844d1bd301d1" + }, + "backend/src/main/java/com/magistr/app/model/TeacherSubject.java": { + "mtime": 1773185539.1634464, + "ast_hash": "c53cedbf5b8758ccc28bb5ff7d955944", + "semantic_hash": "c53cedbf5b8758ccc28bb5ff7d955944" + }, + "backend/src/main/java/com/magistr/app/model/TeacherSubjectId.java": { + "mtime": 1773185539.1634464, + "ast_hash": "5b6aab8d3b7da04e1843436a8e7438f7", + "semantic_hash": "5b6aab8d3b7da04e1843436a8e7438f7" + }, + "backend/src/main/java/com/magistr/app/model/TimeSlot.java": { + "mtime": 1777656866.8400521, + "ast_hash": "d72a08f8f41618bfaed4683b3d5c2a8a", + "semantic_hash": "d72a08f8f41618bfaed4683b3d5c2a8a" + }, + "backend/src/main/java/com/magistr/app/model/TimeSlotDateAssignment.java": { + "mtime": 1777656861.1522384, + "ast_hash": "8f1b4ee9af558bbce9324a5a98fa73ff", + "semantic_hash": "8f1b4ee9af558bbce9324a5a98fa73ff" + }, + "backend/src/main/java/com/magistr/app/model/TimeSlotScope.java": { + "mtime": 1777656851.5885782, + "ast_hash": "1bec040a7f0f04a966cdf46046a59c07", + "semantic_hash": "1bec040a7f0f04a966cdf46046a59c07" + }, + "backend/src/main/java/com/magistr/app/model/User.java": { + "mtime": 1779192626.6330192, + "ast_hash": "6772f3df7a19aa11527848e9035ba992", + "semantic_hash": "6772f3df7a19aa11527848e9035ba992" + }, + "backend/src/main/java/com/magistr/app/repository/AcademicCalendarActivityTypeRepository.java": { + "mtime": 1777579584.218751, + "ast_hash": "4595b33ac4551c476e6950e6ce0e2c08", + "semantic_hash": "4595b33ac4551c476e6950e6ce0e2c08" + }, + "backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java": { + "mtime": 1777579595.6116073, + "ast_hash": "0ec78bbd4dda5fe3eb22a5b1d1bd27f8", + "semantic_hash": "0ec78bbd4dda5fe3eb22a5b1d1bd27f8" + }, + "backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java": { + "mtime": 1777631935.453049, + "ast_hash": "f57aea96c2eda441ed33857a894cb2b0", + "semantic_hash": "f57aea96c2eda441ed33857a894cb2b0" + }, + "backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java": { + "mtime": 1780345824.6449046, + "ast_hash": "2fd0fe03e70e8bf1a3e63dc3a4ca5417", + "semantic_hash": "2fd0fe03e70e8bf1a3e63dc3a4ca5417" + }, + "backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java": { + "mtime": 1777460903.4391212, + "ast_hash": "b476563b11593bf3a262d632e7351f50", + "semantic_hash": "b476563b11593bf3a262d632e7351f50" + }, + "backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java": { + "mtime": 1779889713.7267025, + "ast_hash": "f29209f68317813723b53e700083a7d2", + "semantic_hash": "f29209f68317813723b53e700083a7d2" + }, + "backend/src/main/java/com/magistr/app/repository/ClassroomRepository.java": { + "mtime": 1779192732.0619595, + "ast_hash": "4e86b23d2d5be45a1a514cdb93f4cd17", + "semantic_hash": "4e86b23d2d5be45a1a514cdb93f4cd17" + }, + "backend/src/main/java/com/magistr/app/repository/DepartmentRepository.java": { + "mtime": 1779192732.1759584, + "ast_hash": "73c7e829f67f05c3359a60c220097142", + "semantic_hash": "73c7e829f67f05c3359a60c220097142" + }, + "backend/src/main/java/com/magistr/app/repository/EducationFormRepository.java": { + "mtime": 1777631808.410336, + "ast_hash": "d8cb39ceca0f18c70a9dcfff81e43323", + "semantic_hash": "d8cb39ceca0f18c70a9dcfff81e43323" + }, + "backend/src/main/java/com/magistr/app/repository/EquipmentRepository.java": { + "mtime": 1779192732.117959, + "ast_hash": "16576749e567b37a0be50dfb26e6bf72", + "semantic_hash": "16576749e567b37a0be50dfb26e6bf72" + }, + "backend/src/main/java/com/magistr/app/repository/GroupRepository.java": { + "mtime": 1779192732.4039562, + "ast_hash": "5950a18dd41c5bcb6d20700bad6839bd", + "semantic_hash": "5950a18dd41c5bcb6d20700bad6839bd" + }, + "backend/src/main/java/com/magistr/app/repository/LessonTypesRepository.java": { + "mtime": 1775069027.3502638, + "ast_hash": "f69b1c97d12c73081b6c6617b32cd2e2", + "semantic_hash": "f69b1c97d12c73081b6c6617b32cd2e2" + }, + "backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java": { + "mtime": 1779192787.4534006, + "ast_hash": "2d8c57e1744c2a34410f01be5dff157c", + "semantic_hash": "2d8c57e1744c2a34410f01be5dff157c" + }, + "backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java": { + "mtime": 1779193305.8913653, + "ast_hash": "ab04f76f7afef1e4972784d0a872034f", + "semantic_hash": "ab04f76f7afef1e4972784d0a872034f" + }, + "backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java": { + "mtime": 1778234945.053437, + "ast_hash": "a2973294c824a761aa2a7d1f37eea69f", + "semantic_hash": "a2973294c824a761aa2a7d1f37eea69f" + }, + "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java": { + "mtime": 1777460903.4661212, + "ast_hash": "63a8e96ad7ea59424f192284c1a8390d", + "semantic_hash": "63a8e96ad7ea59424f192284c1a8390d" + }, + "backend/src/main/java/com/magistr/app/repository/SpecialtiesRepository.java": { + "mtime": 1779192732.2328186, + "ast_hash": "b1e80e2641ecc011b4ea7dd09c64741f", + "semantic_hash": "b1e80e2641ecc011b4ea7dd09c64741f" + }, + "backend/src/main/java/com/magistr/app/repository/SpecialtyProfileRepository.java": { + "mtime": 1777579584.1617517, + "ast_hash": "29e6141cdbe28f654c3290fff932685d", + "semantic_hash": "29e6141cdbe28f654c3290fff932685d" + }, + "backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java": { + "mtime": 1777579601.4545403, + "ast_hash": "346705e2a80aa37d2ff80b3f9c8926ed", + "semantic_hash": "346705e2a80aa37d2ff80b3f9c8926ed" + }, + "backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java": { + "mtime": 1780416753.578562, + "ast_hash": "47f65997cf7a0c40a903a097494ff87f", + "semantic_hash": "47f65997cf7a0c40a903a097494ff87f" + }, + "backend/src/main/java/com/magistr/app/repository/SubjectCommentRepository.java": { + "mtime": 1779192787.4224007, + "ast_hash": "ad294f9dc1fb154819147a7f4715432a", + "semantic_hash": "ad294f9dc1fb154819147a7f4715432a" + }, + "backend/src/main/java/com/magistr/app/repository/SubjectRepository.java": { + "mtime": 1779192732.288957, + "ast_hash": "09a3e23a296b49c5b5f1dc35e3a30884", + "semantic_hash": "09a3e23a296b49c5b5f1dc35e3a30884" + }, + "backend/src/main/java/com/magistr/app/repository/TeacherCreationRequestRepository.java": { + "mtime": 1780416753.578562, + "ast_hash": "5388e16b00a73331c9cbe0cf7b10bffb", + "semantic_hash": "5388e16b00a73331c9cbe0cf7b10bffb" + }, + "backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java": { + "mtime": 1780416753.578562, + "ast_hash": "702a97319733b30b6c6e7c563b67a372", + "semantic_hash": "702a97319733b30b6c6e7c563b67a372" + }, + "backend/src/main/java/com/magistr/app/repository/TeacherSubjectRepository.java": { + "mtime": 1773185539.1634464, + "ast_hash": "92dd7d207827de7f548f4fb846c23246", + "semantic_hash": "92dd7d207827de7f548f4fb846c23246" + }, + "backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java": { + "mtime": 1777656899.149204, + "ast_hash": "7048773c8e0b056df6d64d703b74f7cd", + "semantic_hash": "7048773c8e0b056df6d64d703b74f7cd" + }, + "backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java": { + "mtime": 1777656885.4971683, + "ast_hash": "42b1b01c92134ada7f66a138687abbcc", + "semantic_hash": "42b1b01c92134ada7f66a138687abbcc" + }, + "backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java": { + "mtime": 1777656891.5213733, + "ast_hash": "426bb2b552fcce5279312248bc877727", + "semantic_hash": "426bb2b552fcce5279312248bc877727" + }, + "backend/src/main/java/com/magistr/app/repository/UserRepository.java": { + "mtime": 1779192732.3499565, + "ast_hash": "295f4b32b0ccc888d4058a66af4fad2c", + "semantic_hash": "295f4b32b0ccc888d4058a66af4fad2c" + }, + "backend/src/main/java/com/magistr/app/service/AcademicDateService.java": { + "mtime": 1777579735.689881, + "ast_hash": "e74d6aec87023ce40c971fae18ec3072", + "semantic_hash": "e74d6aec87023ce40c971fae18ec3072" + }, + "backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java": { + "mtime": 1780232702.474176, + "ast_hash": "d51c6112ece439eec0b43c9c285dfa5a", + "semantic_hash": "d51c6112ece439eec0b43c9c285dfa5a" + }, + "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java": { + "mtime": 1780232732.229042, + "ast_hash": "ffa81413976b9293074737ca179dc397", + "semantic_hash": "ffa81413976b9293074737ca179dc397" + }, + "backend/src/main/java/com/magistr/app/service/StudentGroupLifecycleService.java": { + "mtime": 1779904217.2010005, + "ast_hash": "b56886d345d15b944874a34e0d57f2d9", + "semantic_hash": "b56886d345d15b944874a34e0d57f2d9" + }, + "backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java": { + "mtime": 1779904217.099999, + "ast_hash": "0cd25c1c606d63c6926dab7a1348f1e7", + "semantic_hash": "0cd25c1c606d63c6926dab7a1348f1e7" + }, + "backend/src/main/resources/db/migration/V1__init.sql": { + "mtime": 1780416753.578562, + "ast_hash": "30b23acf29ecb595cda998ea593c6188", + "semantic_hash": "30b23acf29ecb595cda998ea593c6188" + }, + "backend/src/main/resources/db/migration/V2__subgroups_active_unique_name.sql": { + "mtime": 1780416753.578562, + "ast_hash": "f31a85d0cfca46289f5b5ed1f04633e3", + "semantic_hash": "f31a85d0cfca46289f5b5ed1f04633e3" + }, + "backend/src/test/java/com/magistr/app/config/auth/JwtTokenServiceTest.java": { + "mtime": 1779889713.727155, + "ast_hash": "9de161ff1f6899c01dfc422eca56e961", + "semantic_hash": "9de161ff1f6899c01dfc422eca56e961" + }, + "backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java": { + "mtime": 1779889713.727202, + "ast_hash": "41ff29db9c6cd55eb9e7489e0698954f", + "semantic_hash": "41ff29db9c6cd55eb9e7489e0698954f" + }, + "backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java": { + "mtime": 1779900300.3109503, + "ast_hash": "3110c44a7eff981cbc33a11f61aad555", + "semantic_hash": "3110c44a7eff981cbc33a11f61aad555" + }, + "backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java": { + "mtime": 1779900295.1106448, + "ast_hash": "eb17062c28089020e22d1ea39fff3a4c", + "semantic_hash": "eb17062c28089020e22d1ea39fff3a4c" + }, + "backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java": { + "mtime": 1780416753.578562, + "ast_hash": "d74965f2fbc93a28154de0d9446627f7", + "semantic_hash": "d74965f2fbc93a28154de0d9446627f7" + }, + "backend/src/test/java/com/magistr/app/controller/UserControllerTest.java": { + "mtime": 1780416753.578562, + "ast_hash": "433bb6f75a38a4331ff6a835fb4957f9", + "semantic_hash": "433bb6f75a38a4331ff6a835fb4957f9" + }, + "backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java": { + "mtime": 1779902196.6280775, + "ast_hash": "e2217188bbe903bb36ab6358ac038e50", + "semantic_hash": "e2217188bbe903bb36ab6358ac038e50" + }, + "backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java": { + "mtime": 1779904348.9480257, + "ast_hash": "cdc7f9a4f62d5c9b921739cae4cc0295", + "semantic_hash": "cdc7f9a4f62d5c9b921739cae4cc0295" + }, + "backend/src/test/java/com/magistr/app/model/ScheduleLessonCategoryTest.java": { + "mtime": 1779900295.2146509, + "ast_hash": "4010e265b4d00deef2dd7238203ce4b2", + "semantic_hash": "4010e265b4d00deef2dd7238203ce4b2" + }, + "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java": { + "mtime": 1779900653.60325, + "ast_hash": "daff2cb4bc125071e34dfa076452c3a6", + "semantic_hash": "daff2cb4bc125071e34dfa076452c3a6" + }, + "backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java": { + "mtime": 1779904348.785023, + "ast_hash": "109d91997ed40d16450404eb67410150", + "semantic_hash": "109d91997ed40d16450404eb67410150" + }, + "backend/src/test/java/com/magistr/app/service/StudentGroupLifecycleServiceTest.java": { + "mtime": 1779904348.8110235, + "ast_hash": "1d6a10555df088ae262a969a7f0027ce", + "semantic_hash": "1d6a10555df088ae262a969a7f0027ce" + }, + "backend/src/test/java/com/magistr/app/utils/CourseAndSemesterCalculatorTest.java": { + "mtime": 1779904348.8840246, + "ast_hash": "520cde8b46cf775216e2c5f0fa7def5a", + "semantic_hash": "520cde8b46cf775216e2c5f0fa7def5a" + }, + "backend/tenants.example.json": { + "mtime": 1779900753.4717412, + "ast_hash": "ada16f02f084bff954475498571e1589", + "semantic_hash": "ada16f02f084bff954475498571e1589" + }, + "frontend/admin/js/api.js": { + "mtime": 1781379245.2792873, + "ast_hash": "ee4a589a15c4151d7927270aa157b446", + "semantic_hash": "ee4a589a15c4151d7927270aa157b446" + }, + "frontend/admin/js/dropdown.js": { + "mtime": 1780232203.5404036, + "ast_hash": "00843a489624e2d66f3ddb69b7ceed27", + "semantic_hash": "00843a489624e2d66f3ddb69b7ceed27" + }, + "frontend/admin/js/main.js": { + "mtime": 1780416753.5795622, + "ast_hash": "280522d814d8d34b2dbc1602ff19356b", + "semantic_hash": "280522d814d8d34b2dbc1602ff19356b" + }, + "frontend/admin/js/otel.js": { + "mtime": 1775069027.3512647, + "ast_hash": "c21b57eb7204b46a9ea5991559587555", + "semantic_hash": "c21b57eb7204b46a9ea5991559587555" + }, + "frontend/admin/js/utils.js": { + "mtime": 1780336218.515846, + "ast_hash": "df1378b4db616714913a016749bca44a", + "semantic_hash": "df1378b4db616714913a016749bca44a" + }, + "frontend/admin/js/views/academic-calendar.js": { + "mtime": 1780345824.6629136, + "ast_hash": "021416a3765a2a0980110b013124cb40", + "semantic_hash": "021416a3765a2a0980110b013124cb40" + }, + "frontend/admin/js/views/auditorium-workload.js": { + "mtime": 1780230786.6597297, + "ast_hash": "3081468d2d02db4c3a1fb4c64fee6aea", + "semantic_hash": "3081468d2d02db4c3a1fb4c64fee6aea" + }, + "frontend/admin/js/views/classrooms.js": { + "mtime": 1780416753.5795622, + "ast_hash": "c426cfef520844249a429240fe1c2956", + "semantic_hash": "c426cfef520844249a429240fe1c2956" + }, + "frontend/admin/js/views/dashboard.js": { + "mtime": 1780229253.300601, + "ast_hash": "31c8ad0f96fcc56a65d6673f925cf4a9", + "semantic_hash": "31c8ad0f96fcc56a65d6673f925cf4a9" + }, + "frontend/admin/js/views/department-workspace.js": { + "mtime": 1780416753.5795622, + "ast_hash": "60253be1d8f54df7e2714f8019af0de0", + "semantic_hash": "60253be1d8f54df7e2714f8019af0de0" + }, + "frontend/admin/js/views/groups.js": { + "mtime": 1780416753.5795622, + "ast_hash": "9bcd0955a531e886ae4e7a0a37195025", + "semantic_hash": "9bcd0955a531e886ae4e7a0a37195025" + }, + "frontend/admin/js/views/schedule-view.js": { + "mtime": 1780257083.441749, + "ast_hash": "37a6285797dac62c5d44fcfe428b9171", + "semantic_hash": "37a6285797dac62c5d44fcfe428b9171" + }, + "frontend/admin/js/views/schedule.js": { + "mtime": 1781379245.279435, + "ast_hash": "e8f7e979b4db0654cb4a9b6873a74666", + "semantic_hash": "e8f7e979b4db0654cb4a9b6873a74666" + }, + "frontend/admin/js/views/subjects.js": { + "mtime": 1780336218.533202, + "ast_hash": "84814661b0ed4c1630d01bad668892fa", + "semantic_hash": "84814661b0ed4c1630d01bad668892fa" + }, + "frontend/admin/js/views/teacher-requests.js": { + "mtime": 1780416753.580562, + "ast_hash": "9d5f7495664aa4e91cfb0348ec870401", + "semantic_hash": "9d5f7495664aa4e91cfb0348ec870401" + }, + "frontend/admin/js/views/university-structure.js": { + "mtime": 1781379245.279435, + "ast_hash": "7d909a595e4440065be948b2870076f0", + "semantic_hash": "7d909a595e4440065be948b2870076f0" + }, + "frontend/admin/js/views/users.js": { + "mtime": 1780416753.580562, + "ast_hash": "2943888e29ad94fde6b12492c2d266f5", + "semantic_hash": "2943888e29ad94fde6b12492c2d266f5" + }, + "frontend/admin/settings/js/main.js": { + "mtime": 1780229084.8345273, + "ast_hash": "832dc0a29b8617e36b05972fbd3648ef", + "semantic_hash": "832dc0a29b8617e36b05972fbd3648ef" + }, + "frontend/admin/settings/js/views/database.js": { + "mtime": 1780336218.5618458, + "ast_hash": "84b8eb806f3a9068dbe85b7089fa5510", + "semantic_hash": "84b8eb806f3a9068dbe85b7089fa5510" + }, + "frontend/admin/settings/js/views/edu-forms.js": { + "mtime": 1780336218.5618458, + "ast_hash": "139621c50640bcc4c1ad1d2a5a41f2c1", + "semantic_hash": "139621c50640bcc4c1ad1d2a5a41f2c1" + }, + "frontend/admin/settings/js/views/time-slots.js": { + "mtime": 1780336218.5738456, + "ast_hash": "77b6c3ad8006ed93a38c2678d99019eb", + "semantic_hash": "77b6c3ad8006ed93a38c2678d99019eb" + }, + "frontend/script.js": { + "mtime": 1780336218.6388454, + "ast_hash": "f01cd23c4737f0bc711931a0b9adeaf3", + "semantic_hash": "f01cd23c4737f0bc711931a0b9adeaf3" + }, + "frontend/theme-toggle.js": { + "mtime": 1780336218.6412308, + "ast_hash": "a5e08267eedaeab13f9f8b9a1f304416", + "semantic_hash": "a5e08267eedaeab13f9f8b9a1f304416" + }, + "resume/script.js": { + "mtime": 1783023799.1922438, + "ast_hash": "c06330f7f8dbf54ff6b3ffa33c45274a", + "semantic_hash": "c06330f7f8dbf54ff6b3ffa33c45274a" + }, + ".agents/skills/AutoUpdateDocs.md": { + "mtime": 1779884543.058815, + "ast_hash": "77210db7b73f3bc48e81af7bfa384f1a", + "semantic_hash": "77210db7b73f3bc48e81af7bfa384f1a" + }, + ".agents/skills/auto-update-docs/SKILL.md": { + "mtime": 1775069027.3500013, + "ast_hash": "144483870e14361c8c14fe7c8f24ab09", + "semantic_hash": "144483870e14361c8c14fe7c8f24ab09" + }, + ".agents/skills/frontend-design/LICENSE.txt": { + "mtime": 1775069027.3500013, + "ast_hash": "2ee41112a44fe7014dce33e26468ba93", + "semantic_hash": "2ee41112a44fe7014dce33e26468ba93" + }, + ".agents/skills/frontend-design/SKILL.md": { + "mtime": 1775069027.3501377, + "ast_hash": "fafdfb818c003d4f95430fa606227df9", + "semantic_hash": "fafdfb818c003d4f95430fa606227df9" + }, + ".gitea/workflows/docker-build.yaml": { + "mtime": 1773704400.4963882, + "ast_hash": "86f305673d38e2a09bf0b9b8ca5e84a9", + "semantic_hash": "86f305673d38e2a09bf0b9b8ca5e84a9" + }, + "AGENTS.md": { + "mtime": 1779889713.7267025, + "ast_hash": "bdd4e0e3d1b18772b2f5bfa80eb25294", + "semantic_hash": "bdd4e0e3d1b18772b2f5bfa80eb25294" + }, + "BUG_REPORT.md": { + "mtime": 1783115455.969792, + "ast_hash": "52a712db3b02796252a18da4e32bcbc2", + "semantic_hash": "52a712db3b02796252a18da4e32bcbc2" + }, + "DEVOPS.md": { + "mtime": 1781732441.1099546, + "ast_hash": "d85c8c21a085949ce525515b9b07318b", + "semantic_hash": "d85c8c21a085949ce525515b9b07318b" + }, + "backend/src/main/java/com/magistr/app/README.md": { + "mtime": 1773186962.0465105, + "ast_hash": "ebb5e89e8a94e9dd22abf5d915d112b2", + "semantic_hash": "ebb5e89e8a94e9dd22abf5d915d112b2" + }, + "compose.yaml": { + "mtime": 1779900253.9853249, + "ast_hash": "75cd83480827e2c281ba8e4356c34e13", + "semantic_hash": "75cd83480827e2c281ba8e4356c34e13" + }, + "docs/ACADEMIC_CALENDAR.md": { + "mtime": 1780345824.6449046, + "ast_hash": "c53aa2c797603a92d773334e93ee2ac8", + "semantic_hash": "c53aa2c797603a92d773334e93ee2ac8" + }, + "docs/API.md": { + "mtime": 1781379245.2787657, + "ast_hash": "4d667433b7a55aa2e7ba33251a53a3d8", + "semantic_hash": "4d667433b7a55aa2e7ba33251a53a3d8" + }, + "docs/ARCHITECTURE.md": { + "mtime": 1779900753.5337546, + "ast_hash": "046dec76be984029556a8c039ef5f171", + "semantic_hash": "046dec76be984029556a8c039ef5f171" + }, + "docs/BUSINESS_LOGIC.md": { + "mtime": 1781379245.2787657, + "ast_hash": "c7ad817fbb0d59463315b3ff4b97f5c0", + "semantic_hash": "c7ad817fbb0d59463315b3ff4b97f5c0" + }, + "docs/DATABASE.md": { + "mtime": 1780416753.5795622, + "ast_hash": "ace3a754d2f7a27fd0932513a24777f8", + "semantic_hash": "ace3a754d2f7a27fd0932513a24777f8" + }, + "docs/DEVELOPMENT.md": { + "mtime": 1779900606.2820153, + "ast_hash": "e77bae3aac472f717c922a7a1f5153e3", + "semantic_hash": "e77bae3aac472f717c922a7a1f5153e3" + }, + "docs/DYNAMIC_SCHEDULE_IMPLEMENTATION.md": { + "mtime": 1778235232.441285, + "ast_hash": "6031c539f77c2c387c57906d6aa6b856", + "semantic_hash": "6031c539f77c2c387c57906d6aa6b856" + }, + "docs/FRONTEND.md": { + "mtime": 1781379245.2787657, + "ast_hash": "c83725c674999f7b04e3aaa46e44551f", + "semantic_hash": "c83725c674999f7b04e3aaa46e44551f" + }, + "docs/INFRASTRUCTURE.md": { + "mtime": 1779900753.5867662, + "ast_hash": "d49f970f189e3fd3c8db7c5ff23e8f49", + "semantic_hash": "d49f970f189e3fd3c8db7c5ff23e8f49" + }, + "docs/LOGGING.md": { + "mtime": 1777492546.6921115, + "ast_hash": "6006c10453c1b7e898285d7b8cb66648", + "semantic_hash": "6006c10453c1b7e898285d7b8cb66648" + }, + "docs/README.md": { + "mtime": 1779212590.3110566, + "ast_hash": "9d10f7c253e4db8b4e96f9af07a0a3fc", + "semantic_hash": "9d10f7c253e4db8b4e96f9af07a0a3fc" + }, + "docs/SCHEDULE_PROPOSAL.md": { + "mtime": 1778235219.8673353, + "ast_hash": "df83ce318d07dcd71ca484a09c04d9a5", + "semantic_hash": "df83ce318d07dcd71ca484a09c04d9a5" + }, + "docs/SCHEDULE_TASKS.md": { + "mtime": 1778235238.0912623, + "ast_hash": "ea2c6ea42fb3df3b915a9270db13b124", + "semantic_hash": "ea2c6ea42fb3df3b915a9270db13b124" + }, + "docs/UI_COMPONENTS.md": { + "mtime": 1775069027.3512647, + "ast_hash": "658c79d27ae764d58a761a53cfdad2c9", + "semantic_hash": "658c79d27ae764d58a761a53cfdad2c9" + }, + "frontend/admin/index.html": { + "mtime": 1780416753.5795622, + "ast_hash": "df49fc886e9e623ae1581e723463e104", + "semantic_hash": "df49fc886e9e623ae1581e723463e104" + }, + "frontend/admin/settings/index.html": { + "mtime": 1780336218.5618458, + "ast_hash": "07fb6525e8cf67f437339ae87fc236f2", + "semantic_hash": "07fb6525e8cf67f437339ae87fc236f2" + }, + "frontend/admin/settings/views/database.html": { + "mtime": 1780336218.5738456, + "ast_hash": "942735f1156637cf91a6111fbd4b7f17", + "semantic_hash": "942735f1156637cf91a6111fbd4b7f17" + }, + "frontend/admin/settings/views/edu-forms.html": { + "mtime": 1780336218.6208456, + "ast_hash": "7e994ef434c5e878165babc271cd03c4", + "semantic_hash": "7e994ef434c5e878165babc271cd03c4" + }, + "frontend/admin/settings/views/general.html": { + "mtime": 1775069027.352295, + "ast_hash": "ef90b4b2608b651514869bf83097c432", + "semantic_hash": "ef90b4b2608b651514869bf83097c432" + }, + "frontend/admin/settings/views/time-slots.html": { + "mtime": 1780336218.6208456, + "ast_hash": "1dff9dc402ea70175f9cac81a14d3291", + "semantic_hash": "1dff9dc402ea70175f9cac81a14d3291" + }, + "frontend/admin/views/academic-calendar.html": { + "mtime": 1780345824.6629136, + "ast_hash": "806d94c1c9c562e4a8171009f03df815", + "semantic_hash": "806d94c1c9c562e4a8171009f03df815" + }, + "frontend/admin/views/auditorium-workload.html": { + "mtime": 1780336218.6208456, + "ast_hash": "049f1237e5701fc92d59ce259bb7d355", + "semantic_hash": "049f1237e5701fc92d59ce259bb7d355" + }, + "frontend/admin/views/classrooms.html": { + "mtime": 1780336218.6208456, + "ast_hash": "2244c2a21001c95536c0fe6eb8f70a45", + "semantic_hash": "2244c2a21001c95536c0fe6eb8f70a45" + }, + "frontend/admin/views/dashboard.html": { + "mtime": 1780336218.6218455, + "ast_hash": "90ed933e6c97cd8a22ae594aaad640f8", + "semantic_hash": "90ed933e6c97cd8a22ae594aaad640f8" + }, + "frontend/admin/views/department-workspace.html": { + "mtime": 1780416753.580562, + "ast_hash": "ac36acf95fd4362567810f6af8955fe2", + "semantic_hash": "ac36acf95fd4362567810f6af8955fe2" + }, + "frontend/admin/views/groups.html": { + "mtime": 1781379245.279435, + "ast_hash": "808e1e7218c1b1186b9849209d4955e0", + "semantic_hash": "808e1e7218c1b1186b9849209d4955e0" + }, + "frontend/admin/views/schedule-view.html": { + "mtime": 1780336218.6218455, + "ast_hash": "8352e898078347db9b2effc7d3a9f1d7", + "semantic_hash": "8352e898078347db9b2effc7d3a9f1d7" + }, + "frontend/admin/views/schedule.html": { + "mtime": 1781379245.279435, + "ast_hash": "d8a14e08ff81c0ba61a78e5d3db7ac64", + "semantic_hash": "d8a14e08ff81c0ba61a78e5d3db7ac64" + }, + "frontend/admin/views/subjects.html": { + "mtime": 1780336218.6218455, + "ast_hash": "d134cd83072cb609e305b69dd7acaca2", + "semantic_hash": "d134cd83072cb609e305b69dd7acaca2" + }, + "frontend/admin/views/teacher-requests.html": { + "mtime": 1780416753.580562, + "ast_hash": "8f5fc4057f9a44055029458f67544582", + "semantic_hash": "8f5fc4057f9a44055029458f67544582" + }, + "frontend/admin/views/university-structure.html": { + "mtime": 1781379245.279435, + "ast_hash": "278f27483e79abcbf41148af8a389eef", + "semantic_hash": "278f27483e79abcbf41148af8a389eef" + }, + "frontend/admin/views/users.html": { + "mtime": 1780416753.580562, + "ast_hash": "974339cf6079f28c7a3f801440ec29a4", + "semantic_hash": "974339cf6079f28c7a3f801440ec29a4" + }, + "frontend/department/index.html": { + "mtime": 1779212347.0747664, + "ast_hash": "fcb881da4c4521130b8d6c4ed658924f", + "semantic_hash": "fcb881da4c4521130b8d6c4ed658924f" + }, + "frontend/edu-office/index.html": { + "mtime": 1779212356.700831, + "ast_hash": "aabdbfa6760a6d59513c42cd425c9a43", + "semantic_hash": "aabdbfa6760a6d59513c42cd425c9a43" + }, + "frontend/index.html": { + "mtime": 1780336218.6388454, + "ast_hash": "7fe272fbb70bfc9e1815b0667755d64f", + "semantic_hash": "7fe272fbb70bfc9e1815b0667755d64f" + }, + "frontend/student/index.html": { + "mtime": 1780336218.6388454, + "ast_hash": "d4cc95373ca6b699dda41b7a8200c196", + "semantic_hash": "d4cc95373ca6b699dda41b7a8200c196" + }, + "frontend/teacher/index.html": { + "mtime": 1780336218.6412308, + "ast_hash": "739a80bc6f389e72e15092a8024bbc58", + "semantic_hash": "739a80bc6f389e72e15092a8024bbc58" + }, + "resume/index.html": { + "mtime": 1783026336.0929163, + "ast_hash": "5744cd1b24c2ceb16bb46ad0ad343a9a", + "semantic_hash": "5744cd1b24c2ceb16bb46ad0ad343a9a" + } +} \ No newline at end of file diff --git a/graphify-out/memory/query_20260704_105757_почему_requireroles_связывает_множество_контроллер.md b/graphify-out/memory/query_20260704_105757_почему_requireroles_связывает_множество_контроллер.md new file mode 100644 index 0000000..de7c119 --- /dev/null +++ b/graphify-out/memory/query_20260704_105757_почему_requireroles_связывает_множество_контроллер.md @@ -0,0 +1,23 @@ +--- +type: "query" +date: "2026-07-04T10:57:57.276777+00:00" +question: "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["RequireRoles", "AuthorizationInterceptor"] +--- + +# Q: Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge? + +## Answer + +Expanded from original query via vocab: [require, roles, controller, service, auth, interceptor]. RequireRoles является runtime-аннотацией для ролей и применяется на классах и методах многих REST-контроллеров. AuthorizationInterceptor читает RequireRoles через resolveRoles() и сравнивает роли с AuthenticatedUser. Поэтому граф строит множество EXTRACTED-связей imports/references от контроллеров разных доменных сообществ к одному узлу RequireRoles. Это архитектурный RBAC cross-cutting concern, а не доменная зависимость RequireRoles от моделей или сервисов. + +## Outcome + +- Signal: useful + +## Source Nodes + +- RequireRoles +- AuthorizationInterceptor \ No newline at end of file diff --git a/graphify-out/memory/query_20260704_120728_корректны_ли_inferred_связи_вокруг_schedulerule.md b/graphify-out/memory/query_20260704_120728_корректны_ли_inferred_связи_вокруг_schedulerule.md new file mode 100644 index 0000000..6d889bf --- /dev/null +++ b/graphify-out/memory/query_20260704_120728_корректны_ли_inferred_связи_вокруг_schedulerule.md @@ -0,0 +1,23 @@ +--- +type: "query" +date: "2026-07-04T12:07:28.781712+00:00" +question: "Корректны ли inferred-связи вокруг ScheduleRule?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["ScheduleRule", "ScheduleRuleTest"] +--- + +# Q: Корректны ли inferred-связи вокруг ScheduleRule? + +## Answer + +Вокруг ScheduleRule в graph.json есть ровно две INFERRED-связи: ScheduleRuleTest.activeOnUsesStatusAndValidityRange() -> ScheduleRule на L13 и ScheduleRuleTest.archiveAndRestoreToggleStatus() -> ScheduleRule на L29. Обе семантически корректны: в обоих тестах создается new ScheduleRule(), затем проверяется поведение isActiveOn(), archive(), restore(). INFERRED здесь означает ограничение AST-разрешения вызова конструктора, а не сомнительность доменной связи. Локальный запуск теста не выполнен: нет backend/mvnw и системного mvn. + +## Outcome + +- Signal: useful + +## Source Nodes + +- ScheduleRule +- ScheduleRuleTest \ No newline at end of file diff --git a/graphify-out/reflections/LESSONS.md b/graphify-out/reflections/LESSONS.md new file mode 100644 index 0000000..51e1271 --- /dev/null +++ b/graphify-out/reflections/LESSONS.md @@ -0,0 +1,11 @@ +# Lessons + +_Auto-generated by `graphify reflect` from 0 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ + +## Summary + +- 0 useful · 0 dead ends · 0 corrected · 0 unmarked + +## Lessons + +_No marked outcomes yet._ diff --git a/resume/index.html b/resume/index.html new file mode 100644 index 0000000..bcf4d63 --- /dev/null +++ b/resume/index.html @@ -0,0 +1,407 @@ + + + + + + + Зуев Егор — Junior DevOps / Infrastructure Engineer + + + + + + + + + + + + + + +
+
+
+
+ Ищу предложения + Junior DevOps / Infrastructure Engineer + 100 000 ₽ на руки +
+

Зуев Егор Алексеевич

+

+ DevOps-инженер с базой в информационной безопасности: проектирую инфраструктуру для + мультитенантных веб-сервисов, автоматизирую развертывание и делаю наблюдаемость полезной + для поиска проблем, а не просто красивой витриной метрик. +

+
+ + + + Telegram + @ZuevEA + + + Локация + Курск / удаленно + +
+
+ + +
+ +
+
+
+ Инфраструктура +

Мультитенантность без общей базы

+

Выбран и реализован подход Database-per-Tenant: отдельная PostgreSQL БД для каждого вуза, + изоляция сетевого доступа и независимое обслуживание.

+
+
+ Автоматизация +

IaC и безопасный провижининг

+

Ansible-роли для подготовки хостов, SSH hardening, firewall, PostgreSQL, backup и мониторинга. + Секреты вынесены в Ansible Vault.

+
+
+ Observability +

Трассировка с контекстом тенанта

+

OpenTelemetry + SigNoz + MDC позволяют фильтровать логи и трейсы по `tenant.id`, чтобы быстрее + понимать, какой вуз затронут проблемой.

+
+
+
+ +
+
+ Проектный опыт +

Стартап «Умное расписание»

+

Система управления университетским расписанием с мультитенантной архитектурой: отдельные базы + данных для вузов, Kubernetes-контур, автоматизация инфраструктуры и сквозная наблюдаемость.

+
+ +
+ + +
+
+
01
+

Kubernetes и маршрутизация

+

Развернул прикладной контур в K3s: namespace `magistr`, frontend на Apache httpd, backend + Spring Boot, Traefik Ingress и внешний Caddy как TLS-терминатор и балансировщик между + нодами.

+
    +
  • Frontend в 2 репликах для rolling update.
  • +
  • Backend с OpenTelemetry Java Agent.
  • +
  • Caddy проксирует `/*`, `/api/*` и OTLP-трафик.
  • +
+
+ +
+
02
+

Динамические тенанты

+

Спроектировал добавление новых университетов без правки исходного кода: `tenants-config` + хранится в Kubernetes ConfigMap, backend обновляет его через Kubernetes API.

+
    +
  • `initContainer` копирует read-only ConfigMap в writable `emptyDir`.
  • +
  • RBAC ограничен операциями `get` и `patch` для конкретной ConfigMap.
  • +
  • `TenantConfigWatcher` сверяет конфигурацию каждые 30 секунд.
  • +
+
+ +
+
03
+

Отказоустойчивость старта

+

Устранил риск каскадного падения backend при недоступности одной из БД: приложение стартует + без CrashLoopBackOff и продолжает подключаться к проблемной БД в фоне.

+
    +
  • H2 in-memory fallback, если нет настроенных тенантов.
  • +
  • `setInitializationFailTimeout(-1)` для HikariCP.
  • +
  • Явный PostgreSQL dialect для Hibernate.
  • +
+
+ +
+
04
+

Ansible и безопасность

+

Собрал модульный плейбук для подготовки серверов БД: базовый hardening, Docker, firewall, + PostgreSQL, backup и OpenTelemetry Collector.

+
    +
  • SSH на порту 2222, отключение root/password login.
  • +
  • UFW/firewalld с доступом к PostgreSQL только с IP нод K3s.
  • +
  • Секреты PostgreSQL зашифрованы через Ansible Vault.
  • +
+
+ +
+
05
+

CI/CD и приватный registry

+

Настроил Gitea Actions: сборка backend/frontend Docker-образов, публикация в приватный + registry и деплой через `kubectl rollout` на self-hosted runner.

+
    +
  • Docker Buildx для сборки образов.
  • +
  • Kubernetes secret `gitea-registry` для pull-доступа.
  • +
  • Отдельный LXC-контейнер под runner.
  • +
+
+ +
+
06
+

Наблюдаемость

+

Внедрил OpenTelemetry и SigNoz с детализацией по тенантам: логи, трейсы, JVM/HTTP-метрики и + PostgreSQL-метрики с хостов БД.

+
    +
  • `tenant.id` попадает в MDC и атрибуты span.
  • +
  • SigNoz + ClickHouse вынесены в отдельный LXC-контейнер.
  • +
  • OTel Collector собирает PostgreSQL и host-метрики.
  • +
+
+
+
+
+ +
+
+ Практика вне стартапа +

Homelab и самостоятельная инженерная база

+

Отдельный контур для экспериментов с Linux, виртуализацией, сетями, мониторингом и автоматизацией. + Не смешиваю его с проектным опытом, но использую как полигон для навыков.

+
+ +
+
+

Виртуализация и хранение

+

Proxmox VE, LXC/KVM, Debian/Ubuntu Server, ZFS-пулы, snapshots и отдельные изолированные + окружения для сервисов.

+
+
+

Self-hosted разработка

+

Gitea и Forgejo для репозиториев, webhooks, тестов CI-сценариев и безопасной отработки + automation-паттернов.

+
+
+

Linux и эксплуатация

+

CachyOS/Arch на рабочей машине, systemd, journalctl, bash-скрипты, pacman, разбор проблем через + системные логи.

+
+
+

Мониторинг железа

+

Prometheus, Node Exporter и Grafana для CPU, дисков, температур, сетевой активности и базовых + алертов по состоянию сервера.

+
+
+
+ +
+
+
+ Стек по зонам ответственности +

Инструменты, которые уже применял руками

+
+ +
+
+

Runtime и оркестрация

+
+ Docker + Docker Compose + Kubernetes + K3s + Traefik + Caddy +
+
+
+

IaC и доставка

+
+ Ansible + Ansible Vault + Gitea Actions + Forgejo + Git + Bash +
+
+
+

Данные и resiliency

+
+ PostgreSQL + HikariCP + Flyway + H2 fallback + ZFS + Backup +
+
+
+

Observability и безопасность

+
+ OpenTelemetry + SigNoz + ClickHouse + Prometheus + Grafana + UFW/firewalld +
+
+
+
+
+ +
+
+ Runbook-мышление +

Как подхожу к инцидентам

+

Короткие сценарии показывают порядок действий: сначала локализация и границы ущерба, затем + восстановление, потом предотвращение повтора.

+
+ +
+
+ + + +
+
+
+
+ +
+
+ Образование +

Информационная безопасность как основа DevOps-подхода

+
+ +
+
+ 2024 — 2026 +

10.04.01 Информационная безопасность

+

Юго-Западный государственный университет

+

Магистратура, факультет цифровых технологий. Фокус на защите инфраструктуры, изоляции сред и + безопасной эксплуатации информационных систем.

+
+
+ 2020 — 2024 +

10.03.01 Информационная безопасность

+

Юго-Западный государственный университет

+

Бакалавриат, факультет фундаментальной и прикладной информатики. База по сетям, Linux, + безопасности приложений и администрированию.

+
+
+ Рабочий фокус +

DevSecOps

+

Принцип наименьших привилегий, изоляция сред, контроль секретов, сетевой периметр и + наблюдаемость как часть безопасности.

+
+
+
+
+ +
+ +
+ +
Скопировано
+ + + + diff --git a/resume/script.js b/resume/script.js new file mode 100644 index 0000000..b5619d4 --- /dev/null +++ b/resume/script.js @@ -0,0 +1,199 @@ +// Интерактивная логика инженерного резюме Егора Зуева. + +const incidentRunbooks = { + postgres: { + title: 'PostgreSQL: CPU 100% у одного тенанта', + steps: [ + { + label: 'Локализация', + text: 'Проверяю SigNoz по `tenant.id`, затем на хосте БД смотрю `pg_stat_activity`, активные транзакции, блокировки и системную нагрузку.' + }, + { + label: 'Восстановление', + text: 'Ограничиваю тяжелый запрос через `pg_cancel_backend`, проверяю пул HikariCP и возвращаю сервис в нормальный режим без затрагивания других тенантов.' + }, + { + label: 'Профилактика', + text: 'Добавляю индекс или правлю запрос, включаю slow query logs и настраиваю алерт по CPU, активным сессиям и длительным транзакциям.' + } + ] + }, + tls: { + title: 'Caddy: TLS или 502 на новом домене', + steps: [ + { + label: 'Локализация', + text: 'Проверяю DNS A/CNAME, логи Caddy через `journalctl`, доступность upstream-нод K3s и состояние Traefik Ingress.' + }, + { + label: 'Восстановление', + text: 'Перезагружаю конфигурацию Caddy, проверяю rate limit ACME, при необходимости переключаю issuer и временно вывожу tenant из автопровижининга.' + }, + { + label: 'Профилактика', + text: 'Добавляю предварительную проверку DNS перед созданием тенанта и мониторинг срока действия сертификатов через blackbox-проверки.' + } + ] + }, + runner: { + title: 'Gitea Actions: self-hosted runner завис', + steps: [ + { + label: 'Локализация', + text: 'Смотрю `systemctl status`, `docker ps`, `docker logs`, свободное место через `df -h` и очередь job в Gitea Actions.' + }, + { + label: 'Восстановление', + text: 'Очищаю зависшие контейнеры и кэш Docker, перезапускаю runner, затем вручную контролирую `kubectl rollout status` для backend/frontend.' + }, + { + label: 'Профилактика', + text: 'Выношу runner на отдельный ZFS dataset с квотой, добавляю регулярную очистку слоев и алерты по свободному месту.' + } + ] + } +}; + +document.addEventListener('DOMContentLoaded', () => { + initPrintButton(); + initCopyButtons(); + initReveal(); + initNavigationHighlight(); + initIncidentTabs(); +}); + +function initPrintButton() { + const printButton = document.getElementById('btnPrint'); + if (!printButton) return; + + printButton.addEventListener('click', () => { + window.print(); + }); +} + +function initCopyButtons() { + document.querySelectorAll('[data-copy]').forEach((element) => { + element.addEventListener('click', async () => { + const value = element.getAttribute('data-copy'); + if (!value) return; + + try { + await navigator.clipboard.writeText(value); + showToast('Скопировано: ' + value); + } catch (error) { + console.error('Ошибка копирования:', error); + showToast('Не удалось скопировать'); + } + }); + }); +} + +function initReveal() { + const revealElements = document.querySelectorAll('.reveal'); + if (!revealElements.length) return; + + if (!('IntersectionObserver' in window)) { + revealElements.forEach((element) => element.classList.add('active')); + return; + } + + const observer = new IntersectionObserver((entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + entry.target.classList.add('active'); + observer.unobserve(entry.target); + } + }); + }, { + threshold: 0.08, + rootMargin: '0px 0px -48px 0px' + }); + + revealElements.forEach((element) => observer.observe(element)); +} + +function initNavigationHighlight() { + const links = Array.from(document.querySelectorAll('.nav-link')); + const sections = links + .map((link) => document.querySelector(link.getAttribute('href'))) + .filter(Boolean); + + if (!links.length || !sections.length) return; + + const setActiveLink = () => { + const currentSection = sections.reduce((current, section) => { + const sectionTop = section.getBoundingClientRect().top; + if (sectionTop <= 120) { + return section; + } + return current; + }, sections[0]); + + links.forEach((link) => { + const isActive = link.getAttribute('href') === '#' + currentSection.id; + link.classList.toggle('active', isActive); + }); + }; + + setActiveLink(); + window.addEventListener('scroll', setActiveLink, { passive: true }); +} + +function initIncidentTabs() { + const tabs = document.querySelectorAll('.incident-tab'); + const panel = document.getElementById('incidentPanel'); + if (!tabs.length || !panel) return; + + const renderIncident = (incidentId) => { + const runbook = incidentRunbooks[incidentId]; + if (!runbook) return; + + panel.innerHTML = ` +

${escapeHtml(runbook.title)}

+
+ ${runbook.steps.map((step) => ` +
+ ${escapeHtml(step.label)} +

${formatRunbookText(step.text)}

+
+ `).join('')} +
+ `; + }; + + tabs.forEach((tab) => { + tab.addEventListener('click', () => { + tabs.forEach((item) => item.classList.remove('active')); + tab.classList.add('active'); + renderIncident(tab.dataset.incident); + }); + }); + + renderIncident(document.querySelector('.incident-tab.active')?.dataset.incident || 'postgres'); +} + +function formatRunbookText(text) { + return escapeHtml(text).replace(/`([^`]+)`/g, '$1'); +} + +function escapeHtml(value) { + return String(value) + .replaceAll('&', '&') + .replaceAll('<', '<') + .replaceAll('>', '>') + .replaceAll('"', '"') + .replaceAll("'", '''); +} + +function showToast(message) { + const toast = document.getElementById('toast'); + if (!toast) return; + + toast.textContent = message; + toast.classList.add('show'); + + window.clearTimeout(window.resumeToastTimer); + window.resumeToastTimer = window.setTimeout(() => { + toast.classList.remove('show'); + }, 2400); +} diff --git a/resume/style.css b/resume/style.css new file mode 100644 index 0000000..7888401 --- /dev/null +++ b/resume/style.css @@ -0,0 +1,1251 @@ +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap'); + +:root { + --paper: #f4f7f3; + --paper-strong: #ffffff; + --ink: #14211f; + --muted: #61706c; + --line: #d9e0dc; + --line-strong: #a9b7b2; + --teal: #12625e; + --teal-dark: #0c3f3d; + --amber: #b76a19; + --amber-soft: #f8e7ca; + --red: #8d2430; + --blue: #274d85; + --shadow: 0 16px 40px rgba(20, 33, 31, 0.10); + --mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + --sans: 'IBM Plex Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; +} + +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; +} + +body { + margin: 0; + font-family: var(--sans); + color: var(--ink); + background: + linear-gradient(90deg, rgba(18, 98, 94, 0.045) 1px, transparent 1px), + linear-gradient(180deg, rgba(18, 98, 94, 0.045) 1px, transparent 1px), + var(--paper); + background-size: 32px 32px; + letter-spacing: 0; +} + +a { + color: inherit; + text-decoration: none; +} + +button, +a { + -webkit-tap-highlight-color: transparent; +} + +button { + font: inherit; +} + +code { + font-family: var(--mono); + font-size: 0.92em; + color: var(--teal-dark); + background: rgba(18, 98, 94, 0.08); + border: 1px solid rgba(18, 98, 94, 0.12); + border-radius: 4px; + padding: 0.05rem 0.28rem; +} + +.topbar { + position: fixed; + inset: 0 0 auto 0; + z-index: 20; + height: 68px; + display: grid; + grid-template-columns: auto 1fr auto; + gap: 24px; + align-items: center; + padding: 0 28px; + background: rgba(244, 247, 243, 0.91); + border-bottom: 1px solid rgba(169, 183, 178, 0.72); + backdrop-filter: blur(18px); +} + +.brand, +.topbar-actions, +.nav-links { + display: flex; + align-items: center; +} + +.brand { + gap: 10px; + font-family: var(--mono); + font-size: 0.95rem; + font-weight: 700; +} + +.brand-mark { + display: inline-flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + color: #fff; + background: var(--ink); + border-radius: 6px; +} + +.nav-links { + justify-content: center; + gap: 8px; +} + +.nav-link { + position: relative; + padding: 10px 12px; + color: var(--muted); + font-size: 0.92rem; + font-weight: 600; + border-radius: 6px; + transition: color 160ms ease, background-color 160ms ease; +} + +.nav-link:hover, +.nav-link.active { + color: var(--teal-dark); + background: rgba(18, 98, 94, 0.08); +} + +.topbar-actions { + gap: 10px; +} + +.icon-button, +.primary-action { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 38px; + border-radius: 6px; + font-weight: 700; +} + +.icon-button { + min-width: 48px; + padding: 0 12px; + color: var(--teal-dark); + background: transparent; + border: 1px solid var(--line-strong); + cursor: pointer; +} + +.primary-action { + padding: 0 16px; + color: #fff; + background: var(--teal-dark); + border: 1px solid var(--teal-dark); + transition: transform 160ms ease, background-color 160ms ease; +} + +.primary-action:hover { + transform: translateY(-1px); + background: var(--ink); +} + +main { + overflow: hidden; +} + +.section-shell { + width: min(1160px, calc(100% - 40px)); + margin: 0 auto; +} + +.hero { + min-height: 720px; + display: grid; + grid-template-columns: minmax(0, 1.02fr) minmax(420px, 0.98fr); + gap: 48px; + align-items: center; + padding-top: 112px; + padding-bottom: 52px; +} + +.hero-copy { + max-width: 680px; +} + +.status-row { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; + margin-bottom: 24px; + color: var(--muted); + font-family: var(--mono); + font-size: 0.78rem; +} + +.status-row > span { + min-height: 30px; + display: inline-flex; + align-items: center; + padding: 0 10px; + border: 1px solid var(--line); + border-radius: 6px; + background: rgba(255, 255, 255, 0.72); +} + +.status-row .status-pill { + color: var(--teal-dark); + background: rgba(18, 98, 94, 0.10); + border-color: rgba(18, 98, 94, 0.24); +} + +h1, +h2, +h3, +p { + margin-top: 0; +} + +h1 { + margin-bottom: 24px; + max-width: 650px; + font-size: 4rem; + line-height: 0.98; + font-weight: 700; +} + +.lead { + max-width: 650px; + margin-bottom: 28px; + color: #3d4d49; + font-size: 1.15rem; + line-height: 1.65; +} + +.contact-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; + max-width: 650px; +} + +.contact-chip { + min-height: 62px; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: center; + gap: 4px; + padding: 10px 12px; + color: var(--ink); + background: rgba(255, 255, 255, 0.75); + border: 1px solid var(--line); + border-radius: 8px; + cursor: default; +} + +button.contact-chip { + cursor: pointer; +} + +.contact-chip:hover { + border-color: rgba(18, 98, 94, 0.35); + box-shadow: 0 10px 28px rgba(18, 98, 94, 0.08); +} + +.chip-label, +.summary-label, +.eyebrow { + color: var(--muted); + font-family: var(--mono); + font-size: 0.72rem; + font-weight: 700; + text-transform: uppercase; +} + +.architecture-board { + position: relative; + min-height: 520px; + display: flex; + flex-direction: column; + justify-content: space-between; + gap: 22px; + padding: 26px; + color: #edf6f4; + background: + linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px), + linear-gradient(180deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px), + #132321; + background-size: 24px 24px; + border: 1px solid rgba(255, 255, 255, 0.16); + border-radius: 8px; + box-shadow: var(--shadow); + overflow: hidden; +} + +.board-kicker { + width: fit-content; + display: inline-flex; + align-items: center; + min-height: 30px; + padding: 0 10px; + color: #d7e5e1; + background: rgba(18, 98, 94, 0.45); + border: 1px solid rgba(120, 198, 191, 0.38); + border-radius: 6px; + font-family: var(--mono); + font-size: 0.72rem; + font-weight: 700; + text-transform: uppercase; +} + +.board-title { + max-width: 420px; + margin-bottom: 0; + color: #fff; + font-size: 2.4rem; + line-height: 1; +} + +.board-lead { + max-width: 460px; + margin-bottom: 0; + color: #b5c5c0; + font-size: 1rem; + line-height: 1.55; +} + +.delivery-lane { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; +} + +.lane-step { + min-height: 138px; + display: flex; + flex-direction: column; + justify-content: space-between; + padding: 14px; + background: rgba(255, 255, 255, 0.07); + border: 1px solid rgba(255, 255, 255, 0.16); + border-radius: 8px; +} + +.lane-step span { + width: fit-content; + color: #ffe7bd; + font-family: var(--mono); + font-size: 0.76rem; + font-weight: 700; +} + +.lane-step strong { + display: block; + color: #fff; + font-size: 1.15rem; +} + +.lane-step p { + margin-bottom: 0; + color: #b5c5c0; + font-size: 0.86rem; + line-height: 1.4; +} + +.board-proof { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 8px; +} + +.board-proof div { + min-height: 88px; + display: flex; + flex-direction: column; + gap: 6px; + padding: 12px; + background: rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.14); + border-radius: 8px; +} + +.board-proof b { + color: #fff; + font-family: var(--mono); + font-size: 0.85rem; +} + +.board-proof span { + color: #b5c5c0; + font-size: 0.78rem; + line-height: 1.3; +} + +.evidence-band, +.stack-band { + padding: 64px 0; + background: rgba(255, 255, 255, 0.58); + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.evidence-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 16px; +} + +.evidence-card, +.work-card, +.lab-card, +.stack-column, +.education-card { + background: rgba(255, 255, 255, 0.78); + border: 1px solid var(--line); + border-radius: 8px; +} + +.evidence-card { + padding: 22px; +} + +.evidence-card h2 { + margin: 10px 0 12px; + font-size: 1.35rem; + line-height: 1.22; +} + +.evidence-card p, +.work-card p, +.lab-card p, +.education-card p { + margin-bottom: 0; + color: #4c5d59; + line-height: 1.58; +} + +.case-section, +.homelab-section, +.incidents-section, +.education-section { + padding: 88px 0; +} + +.section-heading { + max-width: 790px; + margin-bottom: 34px; +} + +.section-heading h2 { + margin: 8px 0 12px; + font-size: 2.45rem; + line-height: 1.08; +} + +.section-heading p { + color: #4c5d59; + font-size: 1.05rem; + line-height: 1.62; +} + +.case-layout { + display: grid; + grid-template-columns: 300px minmax(0, 1fr); + gap: 20px; + align-items: start; +} + +.case-summary { + position: sticky; + top: 92px; + display: grid; + gap: 14px; + padding: 18px; + background: #132321; + color: #edf6f4; + border-radius: 8px; +} + +.case-summary > div { + padding-bottom: 14px; + border-bottom: 1px solid rgba(255, 255, 255, 0.14); +} + +.case-summary strong { + display: block; + margin-top: 6px; + line-height: 1.35; +} + +.case-summary .summary-label { + color: #9bb0aa; +} + +.text-link { + min-height: 42px; + display: inline-flex; + align-items: center; + justify-content: center; + color: #fff; + background: var(--teal); + border-radius: 6px; + font-weight: 700; +} + +.work-streams { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 16px; +} + +.work-card { + position: relative; + min-height: 355px; + padding: 22px; +} + +.work-card-marker { + width: 42px; + height: 32px; + display: inline-flex; + align-items: center; + justify-content: center; + margin-bottom: 18px; + color: #fff; + background: var(--teal-dark); + border-radius: 6px; + font-family: var(--mono); + font-size: 0.8rem; +} + +.work-card h3, +.lab-card h3, +.stack-column h3, +.education-card h3 { + margin-bottom: 12px; + font-size: 1.24rem; +} + +.work-card ul { + display: grid; + gap: 8px; + margin: 18px 0 0; + padding-left: 18px; + color: #4c5d59; + line-height: 1.45; +} + +.work-card li::marker { + color: var(--amber); +} + +.homelab-grid, +.education-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 16px; +} + +.lab-card { + min-height: 230px; + padding: 22px; + border-top: 4px solid var(--amber); +} + +.lab-card:nth-child(2) { + border-top-color: var(--teal); +} + +.lab-card:nth-child(3) { + border-top-color: var(--blue); +} + +.lab-card:nth-child(4) { + border-top-color: var(--red); +} + +.stack-matrix { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 16px; +} + +.stack-column { + padding: 20px; +} + +.tag-list { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.tag-list span { + display: inline-flex; + align-items: center; + min-height: 30px; + padding: 4px 9px; + color: var(--teal-dark); + background: rgba(18, 98, 94, 0.08); + border: 1px solid rgba(18, 98, 94, 0.16); + border-radius: 6px; + font-family: var(--mono); + font-size: 0.78rem; +} + +.incident-layout { + display: grid; + grid-template-columns: 280px minmax(0, 1fr); + gap: 18px; +} + +.incident-tabs { + display: grid; + gap: 10px; +} + +.incident-tab { + min-height: 58px; + padding: 12px 14px; + color: var(--ink); + text-align: left; + background: rgba(255, 255, 255, 0.78); + border: 1px solid var(--line); + border-radius: 8px; + cursor: pointer; + transition: border-color 160ms ease, background-color 160ms ease, transform 160ms ease; +} + +.incident-tab:hover, +.incident-tab.active { + border-color: rgba(18, 98, 94, 0.35); + background: rgba(18, 98, 94, 0.08); + transform: translateY(-1px); +} + +.incident-panel { + min-height: 250px; + padding: 22px; + background: #132321; + color: #edf6f4; + border-radius: 8px; +} + +.incident-panel h3 { + margin-bottom: 16px; + font-size: 1.38rem; +} + +.incident-steps { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 12px; +} + +.incident-step { + min-height: 160px; + padding: 14px; + background: rgba(255, 255, 255, 0.07); + border: 1px solid rgba(255, 255, 255, 0.14); + border-radius: 8px; +} + +.incident-step strong { + display: block; + margin-bottom: 10px; + color: #fff; + font-family: var(--mono); + font-size: 0.86rem; +} + +.incident-step p { + margin: 0; + color: #bfd0cb; + line-height: 1.5; +} + +.incident-panel code { + color: #ffe7bd; + background: rgba(248, 231, 202, 0.14); + border-color: rgba(248, 231, 202, 0.34); +} + +.education-grid { + grid-template-columns: repeat(3, minmax(0, 1fr)); + align-items: stretch; +} + +.education-card { + min-height: 260px; + padding: 28px; + display: flex; + flex-direction: column; + justify-content: space-between; + border-top: 5px solid var(--teal); +} + +.education-card .summary-label { + display: inline-block; + margin-bottom: 18px; + color: var(--teal-dark); +} + +.education-card h3 { + max-width: 92%; + margin-bottom: 14px; + color: var(--ink); + font-size: 1.62rem; + line-height: 1.08; +} + +.education-school { + margin-bottom: 16px !important; + color: var(--teal-dark) !important; + font-weight: 700; + line-height: 1.35 !important; +} + +.education-card:nth-child(2) { + border-top-color: var(--blue); +} + +.education-card:nth-child(3) { + border-top-color: var(--amber); +} + +.footer { + padding: 34px 0; + color: #c6d3cf; + background: #132321; +} + +.footer-grid { + display: flex; + align-items: center; + justify-content: space-between; + gap: 24px; +} + +.footer-grid strong, +.footer-grid span, +.footer-links a { + display: block; +} + +.footer-grid strong { + color: #fff; + margin-bottom: 6px; +} + +.footer-links { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + gap: 14px; +} + +.footer-links a:hover { + color: #fff; +} + +.toast { + position: fixed; + left: 50%; + bottom: 28px; + z-index: 40; + min-height: 42px; + display: flex; + align-items: center; + justify-content: center; + padding: 0 18px; + color: #fff; + background: var(--ink); + border: 1px solid rgba(255, 255, 255, 0.18); + border-radius: 8px; + box-shadow: var(--shadow); + opacity: 0; + transform: translate(-50%, 16px); + pointer-events: none; + transition: opacity 180ms ease, transform 180ms ease; +} + +.toast.show { + opacity: 1; + transform: translate(-50%, 0); +} + +.reveal { + opacity: 0; + transform: translateY(18px); + transition: opacity 560ms ease, transform 560ms ease; +} + +.reveal.active { + opacity: 1; + transform: translateY(0); +} + +@media (max-width: 1040px) { + .topbar { + grid-template-columns: auto auto; + justify-content: space-between; + } + + .nav-links { + display: none; + } + + .hero { + grid-template-columns: 1fr; + min-height: auto; + padding-top: 116px; + } + + .architecture-board { + min-height: auto; + } + + .case-layout, + .incident-layout { + grid-template-columns: 1fr; + } + + .case-summary { + position: static; + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .case-summary .text-link { + grid-column: 1 / -1; + } + + .homelab-grid, + .stack-matrix { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@media (max-width: 760px) { + .topbar { + height: 62px; + padding: 0 14px; + } + + .brand span:last-child { + display: none; + } + + .primary-action { + padding: 0 12px; + } + + .section-shell { + width: min(100% - 28px, 1160px); + } + + .hero { + gap: 30px; + padding-top: 94px; + padding-bottom: 42px; + } + + h1 { + font-size: 2.75rem; + line-height: 1.02; + } + + .lead { + font-size: 1rem; + } + + .contact-grid, + .evidence-grid, + .work-streams, + .homelab-grid, + .stack-matrix, + .incident-steps, + .education-grid { + grid-template-columns: 1fr; + } + + .architecture-board { + min-height: auto; + padding: 16px; + } + + .board-title { + font-size: 2rem; + } + + .delivery-lane, + .board-proof { + grid-template-columns: 1fr; + } + + .lane-step, + .board-proof div { + min-height: auto; + } + + .case-section, + .homelab-section, + .incidents-section, + .education-section { + padding: 62px 0; + } + + .section-heading h2 { + font-size: 2rem; + } + + .case-summary { + grid-template-columns: 1fr; + } + + .work-card, + .lab-card, + .education-card { + min-height: auto; + } + + .footer-grid { + align-items: flex-start; + flex-direction: column; + } + + .footer-links { + justify-content: flex-start; + } +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } +} + +@media print { + @page { + size: A4; + margin: 10mm 9mm 10mm; + } + + html { + font-size: 10px !important; + } + + body { + background: #fff !important; + color: #000 !important; + font-size: 10px !important; + line-height: 1.3 !important; + print-color-adjust: exact; + -webkit-print-color-adjust: exact; + } + + main { + overflow: visible !important; + } + + .topbar, + .footer, + .toast, + .architecture-board, + .incidents-section { + display: none !important; + } + + .section-shell { + width: 100% !important; + max-width: none !important; + } + + .hero { + min-height: auto; + display: block !important; + align-items: start !important; + padding: 0 0 0.85rem !important; + border-bottom: 1px solid #cfcfcf; + } + + .hero-copy { + max-width: none !important; + } + + h1 { + margin-bottom: 0.5rem !important; + font-size: 3rem !important; + line-height: 0.98 !important; + } + + h2 { + margin-bottom: 0.42rem !important; + font-size: 1.7rem !important; + line-height: 1.05 !important; + } + + h3 { + margin-bottom: 0.28rem !important; + font-size: 1.16rem !important; + line-height: 1.12 !important; + } + + p { + margin-bottom: 0 !important; + } + + .lead { + max-width: 94%; + margin-bottom: 0.65rem !important; + font-size: 1.08rem !important; + line-height: 1.42 !important; + } + + .status-row { + gap: 0.35rem !important; + margin-bottom: 0.55rem !important; + font-size: 0.78rem !important; + } + + .status-row > span { + min-height: 0 !important; + padding: 0.18rem 0.48rem !important; + border-radius: 3px !important; + } + + .contact-grid { + grid-template-columns: repeat(4, minmax(0, 1fr)) !important; + gap: 0.3rem !important; + } + + .contact-chip { + min-height: 0 !important; + padding: 0.42rem 0.5rem !important; + gap: 0.1rem !important; + border-radius: 4px !important; + font-size: 0.96rem !important; + } + + .evidence-band, + .stack-band, + .case-section, + .homelab-section, + .education-section { + padding: 0.9rem 0 0 !important; + background: #fff; + border: 0; + } + + .evidence-band { + padding-top: 0.75rem !important; + } + + .stack-band { + padding-top: 0.95rem !important; + } + + .evidence-grid, + .homelab-grid, + .stack-matrix, + .education-grid { + display: grid !important; + grid-template-columns: repeat(3, minmax(0, 1fr)) !important; + gap: 0.55rem !important; + } + + .case-layout { + display: grid !important; + grid-template-columns: 1fr !important; + gap: 0.48rem !important; + } + + .work-streams { + display: grid !important; + grid-template-columns: repeat(3, minmax(0, 1fr)) !important; + gap: 0.55rem !important; + } + + .homelab-grid, + .stack-matrix { + grid-template-columns: repeat(4, minmax(0, 1fr)) !important; + } + + .case-summary { + position: static; + grid-column: 1 / -1; + display: grid !important; + grid-template-columns: 1.15fr 1fr 1.45fr 0.85fr !important; + gap: 0.48rem !important; + padding: 0.55rem !important; + color: #000; + background: #fff; + border: 1px solid #999; + border-radius: 4px !important; + } + + .case-summary > div { + padding-bottom: 0 !important; + border-bottom: 0 !important; + } + + .case-summary strong { + margin-top: 0.16rem !important; + font-size: 0.98rem !important; + line-height: 1.2 !important; + } + + .case-summary .summary-label { + color: #333; + } + + .case-summary .text-link { + min-height: 0 !important; + padding: 0.22rem !important; + color: #000 !important; + background: #fff !important; + border: 1px solid #999; + border-radius: 3px !important; + font-size: 0.88rem !important; + } + + .section-heading { + margin-bottom: 0.55rem !important; + max-width: none !important; + } + + .section-heading h2 { + margin-bottom: 0.26rem !important; + font-size: 1.75rem !important; + } + + .section-heading p, + .evidence-card p, + .work-card p, + .lab-card p, + .education-card p, + .work-card ul { + color: #000; + line-height: 1.3 !important; + font-size: 0.92rem !important; + } + + .evidence-card, + .work-card, + .lab-card, + .stack-column, + .education-card { + break-inside: avoid; + box-shadow: none; + border-color: #bbb; + background: #fff; + border-radius: 4px !important; + } + + .work-card, + .lab-card, + .education-card, + .evidence-card, + .stack-column { + min-height: 0 !important; + padding: 0.58rem !important; + } + + .work-card-marker { + width: auto !important; + height: auto !important; + min-height: 0 !important; + margin-bottom: 0.34rem !important; + padding: 0.1rem 0.34rem !important; + color: #000 !important; + background: #fff !important; + border: 1px solid #999; + border-radius: 3px !important; + font-size: 0.72rem !important; + } + + .work-card ul { + display: block !important; + margin: 0.36rem 0 0 !important; + padding-left: 1.05rem !important; + } + + .work-card li { + margin-bottom: 0.12rem !important; + } + + .lab-card { + border-top-width: 2px !important; + } + + .tag-list { + gap: 0.24rem !important; + } + + .tag-list span { + min-height: 0 !important; + padding: 0.12rem 0.34rem !important; + border-radius: 3px !important; + font-size: 0.76rem !important; + } + + .education-card { + border-top-width: 2px !important; + } + + .education-card .summary-label, + .chip-label, + .summary-label, + .eyebrow { + margin-bottom: 0.22rem !important; + font-size: 0.68rem !important; + } + + .education-card h3 { + max-width: none !important; + font-size: 1.18rem !important; + line-height: 1.08 !important; + } + + .education-school { + margin-bottom: 0.28rem !important; + line-height: 1.16 !important; + font-size: 0.9rem !important; + } + + .homelab-section { + break-before: page !important; + page-break-before: always !important; + padding-top: 0 !important; + } + + code { + padding: 0 !important; + color: #000 !important; + background: transparent !important; + border: 0 !important; + } + + .reveal { + opacity: 1 !important; + transform: none !important; + } +} From f7826fb2306fe7b9dd89f700a309a908445334e3 Mon Sep 17 00:00:00 2001 From: Zuev Date: Sat, 4 Jul 2026 22:15:05 +0300 Subject: [PATCH 02/14] =?UTF-8?q?=D1=80=D0=B5=D0=B7=D1=8E=D0=BC=D0=B5=20?= =?UTF-8?q?=D0=B4=D0=B5=D0=B2=D0=BE=D0=BF=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resume/index.html | 23 ++++++++++++++++++++--- resume/style.css | 9 +++++++-- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/resume/index.html b/resume/index.html index bcf4d63..c3a5ea9 100644 --- a/resume/index.html +++ b/resume/index.html @@ -6,13 +6,13 @@ Зуев Егор — Junior DevOps / Infrastructure Engineer + content="Резюме Зуева Егора Алексеевича: Junior DevOps / Infrastructure Engineer. K3s, Caddy, Ansible, PostgreSQL, OpenTelemetry, SigNoz, Homelab, AI-агенты и LLM API."> + content="DevOps, Junior DevOps, Зуев Егор, Kubernetes, K3s, Ansible, Caddy, PostgreSQL, OpenTelemetry, SigNoz, Proxmox, Homelab, AI agents, LLM API, нейросети, ИИ агенты"> + content="Инженерное резюме: мультитенантная инфраструктура стартапа «Умное расписание», CI/CD, IaC, Observability, Homelab и практическое применение AI-агентов."> @@ -47,6 +47,7 @@
Ищу предложения Junior DevOps / Infrastructure Engineer + AI-агенты и LLM API 100 000 ₽ на руки

Зуев Егор Алексеевич

@@ -278,6 +279,11 @@

Prometheus, Node Exporter и Grafana для CPU, дисков, температур, сетевой активности и базовых алертов по состоянию сервера.

+
+

AI-агенты и нейросети

+

Профессионально использую топовые нейросети, оплачиваю подписки, работаю с LLM API и настроил + Hermes Agent на личном сервере для быстрого удалённого администрирования.

+
@@ -333,6 +339,17 @@ UFW/firewalld +
+

AI и агентная автоматизация

+
+ Hermes Agent + LLM API + AI Agents + ChatGPT + Claude + Prompting +
+
diff --git a/resume/style.css b/resume/style.css index 7888401..e373f5c 100644 --- a/resume/style.css +++ b/resume/style.css @@ -13,6 +13,7 @@ --amber-soft: #f8e7ca; --red: #8d2430; --blue: #274d85; + --violet: #5d3f8f; --shadow: 0 16px 40px rgba(20, 33, 31, 0.10); --mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; --sans: 'IBM Plex Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; @@ -553,7 +554,7 @@ button.contact-chip { .homelab-grid, .education-grid { display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); + grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; } @@ -575,9 +576,13 @@ button.contact-chip { border-top-color: var(--red); } +.lab-card-ai { + border-top-color: var(--violet); +} + .stack-matrix { display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); + grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; } From ae0dd4c8b3d5739d170af70ce941fd1c6ffe23f4 Mon Sep 17 00:00:00 2001 From: Zuev Date: Fri, 10 Jul 2026 22:20:50 +0300 Subject: [PATCH 03/14] =?UTF-8?q?=D0=B1=D0=B0=D0=B3=20=D1=80=D0=B5=D0=BF?= =?UTF-8?q?=D0=BE=D1=80=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BUG_REPORT.md | 665 ++++++++++++++---- graphify-out/.graphify_learning.json | 69 +- ...°лизируй_весь_проект_на_баги_и_ошибки_и_допол.md | 26 + graphify-out/reflections/LESSONS.md | 11 +- 4 files changed, 631 insertions(+), 140 deletions(-) create mode 100644 graphify-out/memory/query_20260710_181403_проанализируй_весь_проект_на_баги_и_ошибки_и_допол.md diff --git a/BUG_REPORT.md b/BUG_REPORT.md index 041768a..d2d13a3 100644 --- a/BUG_REPORT.md +++ b/BUG_REPORT.md @@ -1,219 +1,614 @@ # Отчёт по ошибкам и рискам проекта Magistr -Дата проверки: 2026-07-03 +Дата проверки: 2026-07-10 -Проверено вручную: backend Spring Boot, мультитенантность, авторизация, генерация расписания, основные frontend JS-файлы. Автотесты не запущены: в окружении нет `mvn` и `./mvnw`. +## Объём и способ проверки -## Нужно исправить в первую очередь +Проверены: -### 1. Высокая — JWT имеет небезопасные production-дефолты +- 166 Java-файлов backend, JPA-модели, репозитории, контроллеры, сервисы и конфигурация мультитенантности; +- обе Flyway-миграции без изменения существующих файлов; +- 23 JavaScript-файла, встроенный JavaScript страниц преподавателя/студента, HTML/CSS и SPA-маршрутизация; +- `compose.yaml`, Dockerfile, Gitea Actions; +- production-манифесты `../k8s/`, которые AGENTS.md относит к внешним зависимостям проекта; +- проектная документация и существующий граф связей `graphify-out/graph.json`. + +Выполненные проверки: + +- `mvn test` в Maven-контейнере: **30 тестов, 0 failures, 0 errors, BUILD SUCCESS**; +- `node --check` для всех внешних JS-файлов и извлечённых inline-скриптов: ошибок синтаксиса нет; +- `docker compose config --quiet`: Compose синтаксически корректен; +- `kubectl kustomize ../k8s`: Kustomize-манифесты собираются; +- сопоставление JPA-таблиц с Flyway DDL: отсутствующих таблиц для сущностей не найдено; +- `git diff --check`: проблем с пробелами и маркерами конфликтов нет. + +Ограничения проверки: не выполнялись E2E-тесты в браузере, нагрузочное тестирование, тестирование с реальным PostgreSQL и одновременной работой двух backend-pod. Конкурентные дефекты ниже подтверждены по коду и воспроизводимому сценарию, но не запускались против production-кластера. + +## Сводка + +| Приоритет | Количество | +|---|---:| +| Критический | 2 | +| Высокий | 10 | +| Средний | 19 | +| Низкий | 3 | +| **Всего** | **34** | + +## Критические проблемы + +### 1. Production-манифесты содержат известные JWT/DB-секреты и хранят пароли в ConfigMap **Файлы:** -- `backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java:13-17` + - `backend/src/main/resources/application.properties:18-22` -- `backend/src/main/java/com/magistr/app/controller/AuthController.java:162-168` +- `backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java:13-17` +- `../k8s/config.yaml:15-26` +- `../k8s/backend.yaml:1-23` +- `../k8s/otel-collector.yaml:1-25` -**Проблема:** если на проде не задан `JWT_SECRET`, приложение использует известный дефолтный секрет `dev-only-change-this-jwt-secret-32-bytes-minimum`. При этом `JWT_REFRESH_COOKIE_SECURE` по умолчанию `false`, и refresh-cookie может уходить без флага `Secure`. +**Проблема:** приложение имеет известный JWT-секрет по умолчанию и небезопасный дефолт `refresh-cookie-secure=false`. Production-манифест `config.yaml` передаёт другой, но также заранее известный placeholder-секрет, который удовлетворяет проверке длины. Пароли PostgreSQL записаны открытым текстом в `Secret.stringData`, tenant ConfigMap и ConfigMap коллектора OpenTelemetry. Kubernetes Secret в YAML не шифрует значение в исходном файле, а ConfigMap вообще не предназначен для секретов. -**Риск:** подделка access-токенов при известном секрете; утечка refresh-cookie при ошибочной HTTP/прокси-конфигурации. +**Риск:** подделка access JWT, компрометация всех tenant-БД и метрик, повторное использование опубликованных credentials. Если эти значения когда-либо применялись, их нужно считать скомпрометированными. **Как исправить:** -- На production-профиле падать при отсутствии `JWT_SECRET` и при секрете короче требуемой длины. -- Для production сделать `app.jwt.refresh-cookie-secure=true` обязательным. -- Разделить dev/prod профили: дефолтный секрет оставить только в `application-dev.properties`. + +- Немедленно ротировать JWT- и DB-секреты во всех окружениях. +- Удалить реальные/фиксированные значения из файлов и истории репозиториев. +- Использовать External Secrets, SOPS/Sealed Secrets или секреты CI/CD; tenant credentials и credentials OTel хранить в Secret, а не ConfigMap. +- На production-профиле завершать запуск при пустом, дефолтном или известном placeholder `JWT_SECRET` и при `JWT_REFRESH_COOKIE_SECURE != true`. --- -### 2. Высокая — race condition при ротации refresh-токена - -**Файл:** `backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java:50-78` - -**Проблема:** `rotate()` читает refresh-токен через `findByTokenHash()`, проверяет активность, затем отзывает старый и создаёт новый. Нет блокировки строки или атомарного `UPDATE ... WHERE revoked_at IS NULL`. Два параллельных запроса с одним refresh-токеном могут оба пройти проверку и создать две активные сессии. - -**Риск:** повторное использование одного refresh-токена, раздвоение сессий, некорректная ротация `rotatedToTokenHash`. - -**Как исправить:** -- Добавить pessimistic lock в репозиторий (`@Lock(PESSIMISTIC_WRITE)` для поиска по `tokenHash`) внутри транзакции. -- Либо сделать атомарное обновление: `UPDATE auth_refresh_tokens SET revoked_at = now, rotated_to_token_hash = :newHash WHERE token_hash = :hash AND revoked_at IS NULL AND expires_at > now` и создавать новый токен только если обновлена 1 строка. -- Добавить тест на два параллельных refresh-запроса. - ---- - -### 3. Высокая — `AuthContext` может протечь между запросами при `403` - -**Файл:** `backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java:35-49` - -**Проблема:** пользователь кладётся в `AuthContext` на строке 45, а при нехватке роли метод возвращает `false` на строке 49. В таком сценарии `afterCompletion()` текущего interceptor'а может не выполниться, и `ThreadLocal` останется в потоке до следующей очистки. - -**Риск:** утечка контекста пользователя между запросами в servlet thread pool. Сейчас это в основном риск безопасности и будущих багов, но его лучше устранить сразу. - -**Как исправить:** перед каждым `return false` после `AuthContext.setCurrentUser(user)` вызывать `AuthContext.clear()`. Ещё лучше — не устанавливать `AuthContext`, пока не пройдена ролевая проверка, или обернуть обработку отказов в безопасный helper. - ---- - -### 4. Высокая — точечные изменения расписания не проверяются на конфликты - -**Файл:** `backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java:71-127` - -**Проблема:** при `MOVE`/`REPLACE` валидируется только существование нового преподавателя, аудитории и слота. Не проверяется, свободны ли преподаватель/аудитория/группа в выбранную дату и пару. - -**Риск:** учебный отдел может создать override, который назначит преподавателя или аудиторию на две пары одновременно. Основные правила расписания конфликты проверяют, а override — нет. - -**Как исправить:** -- Перед сохранением override построить расписание на `lessonDate` и проверить занятость нового `timeSlot`, `teacher`, `classroom`, групп/подгрупп базового слота. -- Переиспользовать/вынести конфликтную логику из `ScheduleRuleAdminController` в сервис. -- Вернуть `409 Conflict` с описанием конфликтующего занятия. - ---- - -### 5. Средняя/высокая — расписание преподавателя не показывает пары, где он назначен через override +### 2. Flyway создаёт во всех новых tenant-БД предсказуемые учётные записи и демонстрационные данные **Файлы:** -- `backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java:47-58` -- `backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java:36-54` -**Проблема:** если поиск выполняется только по `teacherId`, сервис строит расписание через `buildScheduleForTeacher(teacherId)`, то есть берёт только базовые правила, где преподаватель указан в слоте. Если override заменил преподавателя на этого teacherId, базовое правило в выборку не попадёт, и после `applyOverrides()` такая пара не появится. +- `backend/src/main/resources/db/migration/V1__init.sql:21-24,38-42,85-92,221-265` +- `docs/README.md:45-54` -**Риск:** преподаватель не увидит замену/переназначенную ему пару в своём расписании. +**Проблема:** V1 создаёт администратора с публично документированным коротким паролем, а также несколько тестовых пользователей с одинаковым известным паролем. Эта же миграция запускается для tenant-БД, добавленных в production, и одновременно добавляет демонстрационные кафедры, группы и другие данные. + +**Риск:** немедленный административный доступ к свежему tenant, если пароль не сменили вручную; загрязнение production-БД тестовыми сущностями. **Как исправить:** -- При поиске по `teacherId` дополнительно учитывать overrides с `newTeacher.id = teacherId` за период. -- Либо строить расписание по группам для затронутых override-слотов и после применения override фильтровать по преподавателю. -- Добавить тест: базовый преподаватель A, override `newTeacher=B`, поиск по `teacherId=B` должен вернуть пару. + +- Не менять V1. Добавить новую миграцию `V3__disable_demo_accounts.sql`, которая архивирует/удаляет демонстрационные аккаунты и данные там, где они не были явно сохранены. +- Создавать первого администратора отдельной bootstrap-процедурой с одноразовым случайным секретом. +- Разнести demo/dev seed и обязательную production-схему. +- Ротировать пароли уже созданных tenant-БД. + +## Высокий приоритет + +### 3. Race condition при ротации refresh-токена + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java:50-91` +- `backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java:10` + +**Проблема:** `rotate()` читает токен, проверяет его активность, а затем отзывает старый и создаёт новый без блокировки строки или условного атомарного UPDATE. Два параллельных запроса с одним cookie могут оба пройти проверку и создать две новые сессии. + +**Риск:** повторное использование refresh-токена, раздвоение цепочки ротации и обход ожидаемой семантики single-use. + +**Как исправить:** использовать `PESSIMISTIC_WRITE` либо атомарный `UPDATE ... WHERE revoked_at IS NULL AND expires_at > now()` и создавать следующий токен только при обновлении одной строки. Добавить конкурентный интеграционный тест с PostgreSQL. --- -### 6. Средняя — обновление существующего тенанта может удалить рабочее подключение и сохранить нерабочее +### 4. `AuthContext` остаётся в servlet-потоке после отказа по роли + +**Файл:** `backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java:45-49,65-68` + +**Проблема:** пользователь записывается в ThreadLocal до проверки `@RequireRoles`. Если interceptor возвращает `false`, его собственный `afterCompletion()` не вызывается, поэтому контекст не очищается. + +**Риск:** следующий запрос на том же потоке может увидеть данные предыдущего пользователя, особенно если он проходит через публичный auth endpoint или останавливается в более раннем interceptor. + +**Как исправить:** очищать контекст в начале `preHandle()` и перед каждым `return false`; ещё лучше — устанавливать пользователя только после успешной проверки роли. Добавить MockMvc-тест последовательных запросов на одном executor-потоке. + +--- + +### 5. Точечные изменения расписания создаются без проверки конфликтов и факта существования пары **Файлы:** -- `backend/src/main/java/com/magistr/app/controller/DatabaseController.java:104-116` + +- `backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java:71-126` +- `backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java:67-141` + +**Проблема:** для `MOVE`/`REPLACE` проверяется только существование сущностей. Не проверяется занятость преподавателя, аудитории и групп в новой паре. Также можно сохранить override на дату, когда базовый слот вообще не генерируется, либо сохранить фактически пустой `REPLACE`. + +**Риск:** двойное назначение ресурсов; накопление неработающих изменений, которые API считает успешными. + +**Как исправить:** перед сохранением построить исходную пару на указанную дату, проверить action-specific поля и пересечения уже применённого расписания. При конфликте возвращать `409 Conflict`. + +--- + +### 6. Расписание преподавателя не показывает пары, назначенные ему через override + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java:47-63` +- `backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java:36-58` +- `backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java:14-26` + +**Проблема:** запрос только по `teacherId` сначала выбирает базовые правила этого преподавателя. Если override заменяет преподавателя A на B, правило A не попадает в исходную выборку B, поэтому последующее `applyOverrides()` уже не может добавить пару. + +**Риск:** преподаватель B не видит назначенную ему замену. + +**Как исправить:** учитывать overrides с `newTeacher.id = teacherId` за период и достраивать соответствующие базовые пары до финальной фильтрации. + +--- + +### 7. Валидатор правил расписания пропускает несколько нарушений инвариантов + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java:220-228,440-481,524-565` +- `backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java:252-293` +- `backend/src/main/resources/db/migration/V1__init.sql:707-726` + +**Проблемы:** + +- конфликт ищется только с уже сохранёнными правилами; два конфликтующих/дублирующих слота внутри одного нового правила не сравниваются между собой; +- пользователь слота проверяется на архивность, но не на роль `TEACHER`; +- `lessonFormat` проверяется только на непустоту, хотя DB допускает лишь «Очно»/«Онлайн»; +- нечётное число академических часов принимается, хотя генератор списывает по два часа и может выдать больше часов, чем задано. + +**Риск:** дубли в один момент времени, назначение студента/администратора преподавателем, HTTP 500 на DB CHECK и неверный расход часов. + +**Как исправить:** валидировать пары новых слотов между собой, роль пользователя, enum формата и кратность часов двум; продублировать ключевые ограничения новой Flyway-миграцией там, где это возможно. + +--- + +### 8. Ошибка в строке календарной сетки возвращает 400, но удаляет старую сетку и коммитит часть новой + +**Файл:** `backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java:125-146` + +**Проблема:** `saveGrid()` работает в транзакции, сначала удаляет всю старую сетку, затем валидирует и сохраняет строки по одной. `IllegalArgumentException` ловится внутри transactional-метода и не выходит за границу proxy, поэтому транзакция считается успешной. + +**Воспроизведение:** передать список, где первая строка корректна, а вторая содержит неверный день/дату. API вернёт 400, но старая сетка будет удалена, а первая новая строка сохранится. + +**Риск:** тихая потеря календарного учебного графика при ошибке пользователя. + +**Как исправить:** сначала провалидировать весь список и уникальность ключей, затем одним шагом заменять данные; либо не перехватывать исключение внутри транзакции/помечать транзакцию rollback-only. + +--- + +### 9. Обновление tenant может удалить рабочее подключение и успешно сохранить нерабочее + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/DatabaseController.java:104-124,175-182` - `backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java:135-148` -- `backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java:147-158` +- `backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java:133-160` -**Проблема:** при добавлении тенанта с уже существующим доменом старый DataSource сначала удаляется и закрывается (`removeTenant()`), затем добавляется новый. Hikari настроен с `setInitializationFailTimeout(-1)`, поэтому невалидная БД может быть добавлена без ошибки. `initDatabaseForTenant()` ловит исключения Flyway и не пробрасывает их наружу, поэтому API может вернуть успех и записать нерабочий конфиг. +**Проблема:** существующий DataSource сначала удаляется и закрывается. Новый Hikari pool создаётся с `initializationFailTimeout=-1`. Ошибка Flyway проглатывается, а результат записи ConfigMap игнорируется. API способен вернуть успех после неудачной миграции или неудачной персистенции. -**Риск:** админ одной ошибкой в JDBC URL/пароле может выключить рабочий tenant и разнести нерабочую конфигурацию через ConfigMap. +**Риск:** одна опечатка в URL/пароле отключает рабочий tenant; разные pod получают разную конфигурацию. -**Как исправить:** -- Сначала создать и проверить новый DataSource во временном объекте (`testConnection`, Flyway migrate) и только после успеха атомарно заменить старый. -- `initDatabaseForTenant()` должен возвращать результат или бросать исключение, чтобы `DatabaseController` не писал невалидный ConfigMap. -- При ошибке оставлять старое подключение активным. +**Как исправить:** создать временный pool, проверить соединение и миграции, затем атомарно заменить старый. Ошибки миграции и ConfigMap должны прерывать операцию; нужен compensating rollback. --- -### 7. Средняя — watcher не применяет изменения URL/логина/пароля существующего тенанта +### 10. Два backend-pod могут потерять изменения tenant-конфигурации, а probes не видят отказ БД -**Файл:** `backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java:102-125` +**Файлы:** -**Проблема:** `syncTenants()` добавляет только новые домены и удаляет исчезнувшие. Если в `tenants.json` изменились `url`, `username` или `password` для уже существующего `domain`, текущий DataSource не заменяется. +- `../k8s/backend.yaml:31,86-97` +- `backend/src/main/java/com/magistr/app/controller/DatabaseController.java:177-182` +- `backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java:62-92` -**Риск:** после обновления ConfigMap часть pod'ов продолжит ходить в старую БД/со старыми credentials до рестарта. +**Проблема:** deployment имеет две реплики. Каждая PATCH-операция перезаписывает весь `tenants.json` из локальной in-memory карты без resourceVersion/compare-and-swap. Параллельное добавление A на pod-1 и B на pod-2 приводит к last-write-wins и потере A или B. TCP readiness/liveness считает pod здоровым, даже если все tenant-БД недоступны и Flyway завершился ошибкой. -**Как исправить:** сравнивать весь `TenantConfig` для существующих доменов. При отличии — безопасно пересоздавать DataSource после успешной проверки нового подключения. +**Риск:** потерянные конфигурационные изменения и маршрутизация трафика на фактически неработающий pod. + +**Как исправить:** вынести операции в единый coordinator/CRD/БД либо применять optimistic locking к ConfigMap с повтором; добавить health endpoint, проверяющий миграции и доступность обязательных tenant. --- -### 8. Средняя — отключена проверка TLS-сертификата Kubernetes API +### 11. Дашборд может показать зелёное «конфликтов нет», когда проверка фактически не выполнена + +**Файл:** `frontend/admin/js/views/dashboard.js:148-168,274-287` + +**Проблемы:** + +- диапазон недели вычисляется двойным мутированием одного `Date`; в первые дни месяца конец диапазона попадает в начало предыдущего месяца и оказывается раньше начала; +- каждый запрос кафедры имеет `catch(() => [])`, поэтому сетевые/серверные ошибки превращаются в пустое расписание; +- после этого пустой результат отображается как «Конфликты расписания не обнаружены». + +**Проверенный пример:** для 2026-07-02 код строит диапазон примерно 2026-06-29 … 2026-06-05 вместо 2026-06-29 … 2026-07-05. + +**Риск:** ложное подтверждение безопасности расписания именно в панели контроля. + +**Как исправить:** вычислять воскресенье как `monday + 6 дней` на отдельном объекте, форматировать локальную дату без UTC и различать состояния «нет конфликтов»/«проверка частично или полностью не выполнена». + +--- + +### 12. Access JWT и удалённый JavaScript выполняются в одном origin + +**Файлы:** + +- `frontend/admin/js/api.js:5-7,155-163` +- `frontend/script.js:5-28` +- `frontend/admin/js/otel.js:1-8` + +**Проблема:** JWT хранится в `localStorage`. Страница входа динамически исполняет неприкреплённые по версии модули с `esm.sh`, а admin — удалённые модули без SRI. Такой код имеет доступ к DOM, введённому паролю и `localStorage`. + +**Риск:** компрометация CDN/пакета или XSS сразу даёт учётные данные и Bearer-токен. + +**Как исправить:** собирать и раздавать telemetry dependencies локально с lockfile; держать access token в памяти или перейти на защищённую cookie-сессию; добавить строгий CSP и убрать inline-скрипты. + +## Средний приоритет + +### 13. Watcher не применяет изменения существующего tenant и не повторяет неудачную синхронизацию + +**Файл:** `backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java:60-71,102-125` + +**Проблема:** сравниваются только множества доменов — смена URL, логина или пароля существующего домена игнорируется. Кроме того, новый hash записывается до JSON parsing/sync; если синхронизация падает, следующий poll считает файл уже обработанным и не повторяет операцию. + +**Риск:** pod продолжает использовать старые credentials либо навсегда остаётся в частично синхронизированном состоянии до следующего изменения файла/рестарта. + +**Как исправить:** сравнивать весь нормализованный `TenantConfig`, записывать hash только после полного успеха и сохранять retry/backoff-состояние. + +--- + +### 14. Полностью отключена проверка TLS Kubernetes API **Файл:** `backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java:74-76,104-119` -**Проблема:** `createInsecureClient()` доверяет любому сертификату (`checkServerTrusted` пустой). Комментарий объясняет это self-signed CA, но в Kubernetes правильный CA доступен в serviceaccount volume. +**Проблема:** trust manager принимает любой сертификат. Kubernetes CA уже доступен в serviceaccount volume. -**Риск:** MITM внутри сети кластера может подменить Kubernetes API и получить serviceaccount token/подменить ConfigMap. +**Риск:** MITM к API server, утечка serviceaccount token и подмена tenant ConfigMap. -**Как исправить:** использовать CA из `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` и стандартную проверку hostname/cert chain. Не использовать trust-all клиент. +**Как исправить:** загружать `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`, использовать стандартную проверку цепочки и hostname. --- -### 9. Средняя — кабинет кафедры может перезаписать дисциплину другой кафедры при импорте +### 15. Редактор временных слотов позволяет создать пересекающиеся интервалы и сломать базовые правила + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java:152-224` +- `backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java:418-435` + +**Проблемы:** + +- проверяется только уникальность номера пары, но не пересечение временных интервалов внутри сетки; +- update разрешает перенести существующий базовый слот в MANUAL scope, хотя правила обязаны ссылаться на DEFAULT; +- `durationMinutes` может не соответствовать разнице `startTime/endTime`. + +**Риск:** два занятия реально идут одновременно, но конфликтный анализ считает их разными слотами; существующие правила исчезают из ожидаемой базовой сетки. + +**Как исправить:** запретить пересечение интервалов, фиксировать scope используемого базового слота и вычислять duration на backend. + +--- + +### 16. Учебные годы и семестры допускают пересечения и выход семестра за границы года + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java:46-129,188-237` +- `backend/src/main/java/com/magistr/app/service/AcademicDateService.java:32-34` +- `backend/src/main/java/com/magistr/app/repository/SemesterRepository.java:13-17` + +**Проблема:** проверяется только порядок двух дат. Можно пересечь учебные годы, пересечь осенний и весенний семестры, вынести семестр за границы года. При update также не проверяется дубликат title/type до DB constraint. + +**Риск:** `findFirst...` выбирает произвольный семестр для даты; номер недели и чётность становятся недетерминированными, а часть update-запросов заканчивается HTTP 500. + +**Как исправить:** централизовать календарную валидацию, запретить пересечения и добавить DB-level exclusion/range constraints новой миграцией. + +--- + +### 17. Изменение календаря или группы нарушает уже сохранённые назначения + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java:85-98,178-214` +- `backend/src/main/java/com/magistr/app/controller/GroupController.java:173-212,322-359` + +**Проблема:** после назначения графика группе можно изменить у графика учебный год, специальность, профиль, форму или количество курсов; можно также изменить эти поля у группы. Существующее `student_group_calendar_assignments` не перепроверяется и не удаляется. При уменьшении courseCount остаются строки сетки старших курсов. + +**Риск:** расписание строится по графику, который больше не соответствует группе/году, хотя API проверял соответствие при первоначальном назначении. + +**Как исправить:** запрещать изменение ключевых измерений у используемого графика либо транзакционно перевалидировать назначения, grid и subjects. + +--- + +### 18. Историческая модель кафедр преподавателя используется непоследовательно + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/UserController.java:218-259,310-324` +- `backend/src/main/java/com/magistr/app/controller/WorkloadController.java:51-60,85-100` +- `backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java:102-115` + +**Проблемы:** + +- будущий перевод немедленно меняет `users.department_id`, и преподаватель до `validFrom` появляется одновременно в старой и новой кафедре; +- исторический список фильтрует `User::isActiveRecord`, поэтому архивный преподаватель исчезает даже для даты, когда он работал; +- workload прошлых периодов относится к текущему `users.department_id`; +- дополнительная активная кафедральная связь учитывается в списке преподавателей, но `TeacherSubjectController` разрешает связь только по legacy `users.department_id`. + +**Риск:** неверные исторические отчёты и неработоспособность дополнительного назначения преподавателя. + +**Как исправить:** считать кафедру через `teacher_department_assignments` на дату; legacy-поле обновлять только в дату вступления перевода в силу либо не использовать для бизнес-решений. + +--- + +### 19. Роль `DEPARTMENT` может запрашивать workload чужой кафедры + +**Файл:** `backend/src/main/java/com/magistr/app/controller/WorkloadController.java:43-135` + +**Проблема:** endpoints принимают произвольный `departmentId` или отсутствие фильтра и не сопоставляют его с `AuthContext.departmentId`. + +**Риск:** межкафедральное раскрытие отчётов и обход ограничений, которые уже применяются в `DepartmentWorkspaceController` и части `UserController`. + +**Как исправить:** для `DEPARTMENT` принудительно использовать кафедру из токена; явно документировать endpoints, где глобальный просмотр действительно разрешён. + +--- + +### 20. Глобальные workload/free-classrooms ломаются при количестве активных групп больше 50 + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/WorkloadController.java:43-135` +- `backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java:160-180` + +**Проблема:** агрегирующие endpoints переиспользуют общий поиск с ограничением 50 групп. `free-classrooms` вообще не принимает scope, поэтому в крупном tenant неизбежно получает `IllegalArgumentException` вместо списка свободных аудиторий. + +**Риск:** штатная функция перестаёт работать при росте университета. + +**Как исправить:** сделать специализированные агрегирующие запросы/батч-генерацию, а не использовать ограничение интерактивного широкого поиска. + +--- + +### 21. Импорт кафедры может переназначить дисциплину другой кафедры **Файл:** `backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java:80-90` -**Проблема:** импорт ищет дисциплину только по глобальному имени (`findByName`) и затем без проверки меняет `departmentId` на кафедру текущего пользователя. Если дисциплина с таким названием уже принадлежит другой кафедре, она будет переназначена. +**Проблема:** дисциплина ищется по глобальному имени, после чего `departmentId` безусловно меняется на текущую кафедру. -**Риск:** потеря принадлежности дисциплины и связей расписания/календарей у другой кафедры. +**Риск:** потеря принадлежности и изменение расписаний/календарей другой кафедры. -**Как исправить:** -- Не менять `departmentId` существующей дисциплины другой кафедры. -- Сделать уникальность по `(department_id, lower(name))`, если одинаковые названия допустимы у разных кафедр. -- При конфликте возвращать понятную ошибку или создавать отдельную запись в рамках кафедры. +**Как исправить:** не менять чужую запись; решить бизнес-правило уникальности и при необходимости перейти на `(department_id, lower(name))` новой миграцией. --- -### 10. Средняя — кафедра может смотреть workload по чужим кафедрам - -**Файл:** `backend/src/main/java/com/magistr/app/controller/WorkloadController.java:43-130` - -**Проблема:** endpoints `/api/workload/*` доступны роли `DEPARTMENT` и принимают произвольный `departmentId`, но не сверяют его с `AuthContext.departmentId`. Также при `departmentId` отсутствующем запрос строится по всем группам/кафедрам. - -**Риск:** оператор кафедры может получить загруженность преподавателей/аудиторий/кафедр за другие подразделения, если это не было задумано бизнес-правилами. - -**Как исправить:** для роли `DEPARTMENT` принудительно использовать `AuthContext.getCurrentUser().departmentId()` и игнорировать/запрещать чужой `departmentId`. Аналогично проверить `ScheduleSearchController`, если расписание не должно быть глобально видимым. - ---- - -### 11. Средняя — семестры можно создать вне учебного года или с пересечениями +### 22. Права frontend и backend расходятся для учебного отдела **Файлы:** -- `backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java:95-129,201-211` -- `backend/src/main/java/com/magistr/app/service/AcademicDateService.java:32-34` -- `backend/src/main/java/com/magistr/app/repository/SemesterRepository.java:13` -**Проблема:** при создании/обновлении семестра проверяется только `endDate >= startDate`. Нет проверки, что семестр лежит внутри своего учебного года и не пересекается с другим семестром. При этом расписание ищет `findFirstByStartDateLessThanEqualAndEndDateGreaterThanEqual()`, то есть при пересечении дата будет сопоставляться с произвольным первым семестром. +- `backend/src/main/java/com/magistr/app/controller/SpecialityController.java:23-24,38-58,196-213` +- `backend/src/main/java/com/magistr/app/controller/EducationFormController.java:17-18,33-59` +- `frontend/admin/js/views/academic-calendar.js:106-118,207-218` +- `frontend/admin/settings/js/main.js:47-52` -**Риск:** генерация расписания и чётность недель будут работать некорректно на пересекающихся датах. +**Проблемы:** -**Как исправить:** -- Валидировать границы семестра относительно `AcademicYear.startDate/endDate`. -- Запрещать пересечение семестров в рамках учебного года. -- Желательно добавить DB-level exclusion constraint/range constraint или хотя бы сервисную проверку и тест. +- `EDUCATION_OFFICE` видит вкладку календарных графиков, но её обязательные GET `/api/specialties` и profiles разрешены только `ADMIN`; инициализация попадает в 403; +- settings показывает учебному отделу CRUD форм обучения, но POST/DELETE backend разрешены только `ADMIN`. + +**Риск:** видимые штатные экраны частично или полностью не работают. + +**Как исправить:** согласовать role matrix в одном источнике; либо расширить read/write права, либо скрыть недоступные действия. --- -### 12. Низкая/средняя — access-токен хранится в `localStorage` +### 23. Генерация расписания имеет выраженный N+1 по дням, правилам и группам -**Файл:** `frontend/admin/js/api.js:5-7,155-163` +**Файлы:** -**Проблема:** access JWT хранится в `localStorage`, откуда его может украсть любой XSS в админке. Refresh-токен уже вынесен в HttpOnly cookie, но access-токен остаётся доступным JS. +- `backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java:64-90,107-124,187-229,297-308` +- `backend/src/main/java/com/magistr/app/service/AcademicDateService.java:58-87` -**Риск:** при XSS злоумышленник получает Bearer token и может выполнять API-запросы до истечения TTL. +**Проблема:** семестр повторно ищется внутри каждого правила, а `isTheoryDay()` для каждой группы и даты выполняет отдельные запросы assignment + calendar day. В teacher mode это повторяется по всем группам правила. -**Как исправить:** -- По возможности держать access token в памяти и обновлять через HttpOnly refresh cookie. -- Усилить CSP (`script-src` без inline), запретить небезопасные вставки HTML. -- Провести отдельный XSS-аудит всех `innerHTML`. +**Риск:** диапазон 120 дней и десятки групп порождают тысячи/десятки тысяч SQL-запросов, таймауты и нагрузку на каждую tenant-БД. + +**Как исправить:** заранее батчем загружать semesters, assignments и calendar days за диапазон; передавать уже найденный semester в `processRuleForDate()`. Добавить метрики query count и нагрузочный тест. --- -### 13. Низкая — frontend местами вставляет текст ошибки через `innerHTML` без экранирования +### 24. Истёкшие и отозванные refresh-токены никогда не удаляются -**Файл:** `frontend/admin/settings/js/views/database.js:37-49` +**Файлы:** -**Проблема:** `e.message` вставляется в `innerHTML` без `escapeHtml()`. Сейчас большинство серверных ошибок фиксированные, но часть ошибок может включать текст из внешних систем/драйверов. +- `backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java:34-107` +- `backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java:8-11` -**Риск:** потенциальный XSS в настройках БД при попадании HTML в сообщение ошибки. +**Проблема:** каждый login/refresh добавляет строку, ротация лишь ставит `revoked_at`. Cleanup job/repository delete отсутствует. -**Как исправить:** заменить на `textContent` или оборачивать `escapeHtml(e.message)`. +**Риск:** неограниченный рост `auth_refresh_tokens` и индексов. + +**Как исправить:** периодически удалять давно истёкшие/отозванные строки с разумным audit retention; покрыть job тестом. --- -### 14. Низкая — backend image скачивает OpenTelemetry javaagent по `latest` +### 25. DB constraint violations превращаются в 500 и иногда раскрывают текст драйвера -**Файл:** `backend/Dockerfile:7` +**Файлы:** -**Проблема:** сборка всегда скачивает `latest` javaagent с GitHub без pin версии/checksum. +- `backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java:23-55` +- `backend/src/main/java/com/magistr/app/controller/GroupController.java:166-169,216-219` +- `backend/src/main/java/com/magistr/app/controller/SubjectController.java:122-125` +- `backend/src/main/java/com/magistr/app/controller/DatabaseController.java:121-124,166-171` -**Риск:** невоспроизводимые сборки; внезапные несовместимости; supply-chain риск. +**Проблема:** нет общего обработчика `DataIntegrityViolationException`/constraint name. Часть контроллеров ловит общий `Exception` и возвращает клиенту `e.getMessage()`. -**Как исправить:** закрепить конкретную версию javaagent и проверять checksum. +**Риск:** неправильный HTTP status, английские/технические сообщения в UI и раскрытие деталей схемы/JDBC. -## Дополнительно проверить после исправлений +**Как исправить:** добавить единый перевод constraint → 409/400 с русским сообщением; не отдавать внутренний exception text. -1. Добавить Maven Wrapper (`mvnw`), чтобы проверки запускались одинаково в CI и локально. -2. Прогнать `mvn test` и добавить тесты на: - - параллельную ротацию refresh-токена; - - override с конфликтом преподавателя/аудитории; - - расписание преподавателя, назначенного через override; - - обновление существующего tenant config; - - запрет чужого `departmentId` для роли `DEPARTMENT`. -3. Не изменять существующие Flyway-миграции. Если нужны DB constraints/indexes — добавлять новую миграцию `V3__...sql`. +--- + +### 26. Чистый локальный запуск по документации не публикует приложение и имеет противоречивую конфигурацию БД + +**Файлы:** + +- `compose.yaml:1-43` +- `backend/src/main/resources/application.properties:3-6,18-22` +- `docs/README.md:33-43` +- `docs/INFRASTRUCTURE.md:3-37` + +**Проблемы:** + +- frontend/backend не имеют `ports`, а Caddy не входит в Compose, поэтому на чистой машине `localhost:80` после указанной команды недоступен; +- `POSTGRES_DB` может изменить создаваемую DB, но backend URL жёстко указывает `app_db`; +- JWT-переменные из `.env` не передаются контейнеру backend; +- для PostgreSQL не объявлен именованный volume, поэтому после down/recreate данные могут остаться в потерянном anonymous volume. + +**Как исправить:** добавить локальный reverse proxy/ports, передавать согласованный JDBC URL и JWT env, объявить named volume и обновить quick start. + +--- + +### 27. CI/CD разворачивает код без запуска тестов, а tag pipeline перезапускает `:main` + +**Файлы:** + +- `.gitea/workflows/docker-build.yaml:3-8,35-40,63-68,73-96` +- `backend/Dockerfile:1-6` +- `../k8s/backend.yaml:45-46` +- `../k8s/frontend.yaml:20-21` + +**Проблема:** workflow не имеет test job, а Dockerfile выполняет `mvn package -DskipTests`. На событии tag metadata публикует tag-образ, но deployment продолжает ссылаться на mutable `:main` и просто перезапускается. + +**Риск:** production получает непроверенный commit; release-tag может перезапустить старый main-образ вместо релиза. + +**Как исправить:** обязательные test/compile/static-check jobs до push/deploy; деплой image digest или конкретного release tag; concurrency lock и rollback при failed rollout. + +--- + +### 28. Нет ограничения попыток входа + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/AuthController.java:57-86` +- `../k8s/ingress.yaml:1-45` + +**Проблема:** login не имеет rate limit, задержки, lockout или CAPTCHA; в Ingress также нет соответствующего middleware/аннотации. + +**Риск:** online brute force и password spraying, особенно опасные вместе с известными seed-аккаунтами. + +**Как исправить:** rate limit по tenant+IP+username, прогрессивная задержка и аудит неудачных входов без логирования пароля. + +--- + +### 29. Часовой пояс backend не зафиксирован, а часть frontend дат строится через UTC + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/model/LifecycleEntity.java:94-98` +- `backend/src/main/java/com/magistr/app/controller/UserController.java:85,164,235,271` +- `backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java:236` +- `frontend/admin/js/views/dashboard.js:48,159-160` +- `frontend/admin/js/views/department-workspace.js:494-504` +- `compose.yaml` и `../k8s/backend.yaml` + +**Проблема:** бизнес-даты используют `LocalDate.now()`/`LocalDateTime.now()` с timezone JVM, но контейнеры не получают `TZ`/`user.timezone`. Frontend использует `toISOString()`, поэтому в Москве до 03:00 получает предыдущую календарную дату. + +**Риск:** архивирование, перевод, доступность ресурсов и «сегодняшнее расписание» сдвигаются на день/несколько часов в зависимости от окружения. + +**Как исправить:** внедрить `Clock` и явный `ZoneId` для бизнес-даты, хранить абсолютные timestamps как UTC/`Instant`, форматировать date-only локальными компонентами. + +--- + +### 30. Сборки и deployment используют mutable/непроверяемые артефакты + +**Файлы:** + +- `backend/Dockerfile:7` +- `../k8s/otel-collector.yaml:59` +- `../k8s/backend.yaml:45-46` +- `../k8s/frontend.yaml:20-21` +- `.gitea/workflows/docker-build.yaml:83-87` + +**Проблема:** javaagent и kubectl скачиваются как latest/stable без checksum, collector использует `latest`, приложения — mutable `main`. + +**Риск:** невоспроизводимые сборки, неожиданные несовместимости и supply-chain подмена. + +**Как исправить:** pin версии и image digest, проверять SHA256/signature, генерировать SBOM и сканировать образы. + +--- + +### 31. Группы допускают некорректную численность и ломают существующее деление на подгруппы + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/controller/GroupController.java:173-212,250-272` +- `backend/src/main/java/com/magistr/app/controller/SubgroupController.java:151-175` +- `backend/src/main/resources/db/migration/V1__init.sql:203-219` + +**Проблема:** `groupSize` проверяется только на null, `yearStartStudy` — только на ноль; DB не имеет CHECK для положительной численности. При update можно уменьшить группу ниже суммы активных подгрупп, хотя SubgroupController такой результат запрещает при редактировании подгрупп. + +**Риск:** отрицательная/нулевая численность, неверный расчёт вместимости и внутренне противоречивые подгруппы. + +**Как исправить:** единый валидатор create/update, проверка суммы подгрупп и новая миграция с CHECK constraints. + +## Низкий приоритет + +### 32. Лимит «120 дней» фактически разрешает 121 дату + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java:148-157` +- `backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java:135-144` + +**Проблема:** проверяется `DAYS.between(start, end) > 120`, но обе границы включены. Разница 120 означает 121 календарную дату. + +**Как исправить:** проверять включительную длину (`between + 1`) либо изменить текст/документацию. + +--- + +### 33. Остались XSS-точки в сообщениях ошибок и видимые поля пароля + +**Файлы:** + +- `frontend/admin/settings/js/views/database.js:39,49` +- `frontend/admin/js/main.js:260-262` +- `frontend/admin/settings/js/main.js:130-133` +- `frontend/admin/views/users.html:11-12` +- `frontend/admin/js/views/teacher-requests.js:47-51` + +**Проблема:** несколько `e.message` вставляются через `innerHTML` без экранирования. Поля пароля при создании пользователя/одобрении заявки имеют `type="text"`. + +**Риск:** потенциальный DOM XSS при попадании управляемого текста ошибки; пароль виден на экране и может сохраняться как обычный текст формы. + +**Как исправить:** использовать `textContent`/`escapeHtml`, а для паролей — `type="password"` и корректные `autocomplete`. + +--- + +### 34. Проектный языковой регламент нарушен в UI и логах + +**Файлы:** + +- `backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java:65,78,95` +- `backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java:60,123` +- `frontend/admin/settings/js/views/database.js:14-16,60-62` +- `frontend/admin/js/otel.js:47` + +**Проблема:** присутствуют английские production-логи и UI-метки `Online/Offline`; JDBC exception также может попасть в UI на английском. + +**Как исправить:** привести пользовательские сообщения и проектные логи к русскому языку; технические идентификаторы оставлять в structured fields. + +## Что покрыть тестами в первую очередь + +1. PostgreSQL/Testcontainers + Flyway: чистая БД, upgrade существующей БД, отсутствие активных demo-аккаунтов. +2. Два параллельных refresh-запроса с одним токеном. +3. Цепочка interceptor: 403, затем публичный/защищённый запрос на том же потоке. +4. Override с конфликтом и поиск преподавателя, назначенного через `newTeacher`. +5. Внутренние конфликты одного нового правила, роль преподавателя, нечётные часы и недопустимый формат. +6. `saveGrid` с корректной и ошибочной строкой: после 400 старая сетка должна остаться целой. +7. Изменение tenant URL/credentials, неудачная миграция, параллельные PATCH от двух pod. +8. Более 50 активных групп для workload/free-classrooms. +9. Future-dated перевод преподавателя и исторические отчёты. +10. E2E для `EDUCATION_OFFICE`: календарные графики и настройки форм обучения. +11. Frontend-тест дат в первые дни месяца и в 00:00–03:00 Europe/Moscow. + +## Рекомендуемый порядок исправления + +1. Ротация/удаление секретов и отключение seed-аккаунтов. +2. Data-loss и security races: calendar grid, refresh rotation, AuthContext. +3. Атомарность tenant-конфигурации и реальные health checks. +4. Конфликты overrides/rules и корректность расписания преподавателя. +5. Согласование ролей, календарных инвариантов и исторической модели кафедр. +6. Производительность генератора, Compose/CI/CD и frontend hardening. + +Существующие Flyway-миграции не изменять. Все исправления схемы оформлять новой миграцией, начиная с `V3__...sql`. diff --git a/graphify-out/.graphify_learning.json b/graphify-out/.graphify_learning.json index 6da639c..3dd8c8c 100644 --- a/graphify-out/.graphify_learning.json +++ b/graphify-out/.graphify_learning.json @@ -1,5 +1,70 @@ { - "generated_at": "2026-07-04T10:57:14.633512+00:00", - "nodes": {}, + "generated_at": "2026-07-10T17:12:35.296680+00:00", + "nodes": { + "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor": { + "code_fingerprint": "9f11d3686fe75ecd9f0b8abaa42702ed900baa8cc253a4025e377fe527fc3b81", + "label": "AuthorizationInterceptor", + "last": "2026-07-04T10:57:57.276777+00:00", + "provenance": [ + { + "date": "2026-07-04T10:57:57.276777+00:00", + "outcome": "useful", + "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" + } + ], + "score": 0.865333358, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_config_auth_requireroles_requireroles": { + "code_fingerprint": "9690db03571a132129eadcebf6c24c1217bfb6b1781ec52eb05819e53266ce7e", + "label": "RequireRoles", + "last": "2026-07-04T10:57:57.276777+00:00", + "provenance": [ + { + "date": "2026-07-04T10:57:57.276777+00:00", + "outcome": "useful", + "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" + } + ], + "score": 0.865333358, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule": { + "code_fingerprint": "692d61c1bfd5b46f5865174dde8cf2d962d2ccd124b5e4320e2ba8535bb29605", + "label": "ScheduleRule", + "last": "2026-07-04T12:07:28.781712+00:00", + "provenance": [ + { + "date": "2026-07-04T12:07:28.781712+00:00", + "outcome": "useful", + "q": "Корректны ли inferred-связи вокруг ScheduleRule?" + } + ], + "score": 0.866299207, + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest": { + "code_fingerprint": "73cb9594bd5dc29ba9d9bde11e860d2c182b205b36062df87a8a8783611ffe79", + "label": "ScheduleRuleTest", + "last": "2026-07-04T12:07:28.781712+00:00", + "provenance": [ + { + "date": "2026-07-04T12:07:28.781712+00:00", + "outcome": "useful", + "q": "Корректны ли inferred-связи вокруг ScheduleRule?" + } + ], + "score": 0.866299207, + "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", + "status": "tentative", + "uses": 1 + } + }, "version": 1 } diff --git a/graphify-out/memory/query_20260710_181403_проанализируй_весь_проект_на_баги_и_ошибки_и_допол.md b/graphify-out/memory/query_20260710_181403_проанализируй_весь_проект_на_баги_и_ошибки_и_допол.md new file mode 100644 index 0000000..0120119 --- /dev/null +++ b/graphify-out/memory/query_20260710_181403_проанализируй_весь_проект_на_баги_и_ошибки_и_допол.md @@ -0,0 +1,26 @@ +--- +type: "query" +date: "2026-07-10T18:14:03.213067+00:00" +question: "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" +contributor: "graphify" +outcome: "useful" +source_nodes: ["GlobalExceptionHandler", "AuthorizationInterceptor", "TenantConfigWatcher", "ConfigMapUpdater", "ScheduleRuleAdminController"] +--- + +# Q: проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md' + +## Answer + +Expanded from original query via vocab: [error, exception, conflict, validation, authorization, database, schedule, tenant, frontend, backend, repository, controller]. Выполнен статический аудит backend, frontend, Flyway, Compose, CI/CD и Kubernetes; подтверждены 34 проблемы, а BUG_REPORT.md дополнен приоритетами, рисками, сценариями воспроизведения и рекомендациями. Maven: 30 тестов без ошибок; JavaScript, Compose и Kustomize прошли синтаксические проверки. + +## Outcome + +- Signal: useful + +## Source Nodes + +- GlobalExceptionHandler +- AuthorizationInterceptor +- TenantConfigWatcher +- ConfigMapUpdater +- ScheduleRuleAdminController \ No newline at end of file diff --git a/graphify-out/reflections/LESSONS.md b/graphify-out/reflections/LESSONS.md index 51e1271..ec1f82c 100644 --- a/graphify-out/reflections/LESSONS.md +++ b/graphify-out/reflections/LESSONS.md @@ -1,11 +1,16 @@ # Lessons -_Auto-generated by `graphify reflect` from 0 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ +_Auto-generated by `graphify reflect` from 2 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ ## Summary -- 0 useful · 0 dead ends · 0 corrected · 0 unmarked +- 2 useful · 0 dead ends · 0 corrected · 0 unmarked ## Lessons -_No marked outcomes yet._ +**Tentative** — useful in fewer than 2 results; verify before relying. + +- `ScheduleRule` (1× useful) +- `ScheduleRuleTest` (1× useful) +- `AuthorizationInterceptor` (1× useful) +- `RequireRoles` (1× useful) From 39c58440cf4de7f7fce953420bc06ec4b5a48a07 Mon Sep 17 00:00:00 2001 From: Zuev Date: Sat, 11 Jul 2026 03:00:16 +0300 Subject: [PATCH 04/14] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=BC=D0=BF=D1=82=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=84=D0=B8=D0=BA=D1=81=D0=B0=20=D1=83?= =?UTF-8?q?=D1=8F=D0=B7=D0=B2=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BUG_FIX_PROMPT.md | 193 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 BUG_FIX_PROMPT.md diff --git a/BUG_FIX_PROMPT.md b/BUG_FIX_PROMPT.md new file mode 100644 index 0000000..0f11616 --- /dev/null +++ b/BUG_FIX_PROMPT.md @@ -0,0 +1,193 @@ +# Промпт для исправления ошибок из `BUG_REPORT.md` + +Ты работаешь как ведущий full-stack инженер, специалист по безопасности и DevOps в репозитории системы университетского расписания Magistr. + +Твоя задача — не просто составить план, а последовательно реализовать, протестировать и документировать исправления всех проблем из корневого файла `BUG_REPORT.md`, **кроме проблемы № 2**. + +## Обязательная область работ + +Исправь проблемы **№ 1 и № 3–34**. Проблема **№ 2 полностью исключена из задачи**: + +`[1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]` + +Это ровно 33 проблемы: одна критическая № 1, десять высокого приоритета № 3–12, девятнадцать среднего приоритета № 13–31 и три низкого приоритета № 32–34. + +- не исправляй её; +- не изменяй ради неё демонстрационные данные или учётные записи; +- не добавляй миграцию для отключения demo-аккаунтов; +- не меняй существующие Flyway-миграции, включая `V1__init.sql` и `V2__subgroups_active_unique_name.sql`; +- не включай проблему № 2 в итоговый список выполненных исправлений. + +Если изменение для другого пункта пересекается с проблемой № 2, реализуй только часть, необходимую для другого пункта, и не затрагивай seed/demo-данные. + +## Проектный контекст и обязательные правила + +1. Сначала полностью прочитай: + - корневой `AGENTS.md` — это главный проектный регламент; + - `BUG_REPORT.md`; + - относящиеся к изменениям документы из `docs/`; + - фактический код и тесты в затронутых подсистемах; + - production-манифесты в `../k8s/`, которые входят в область проекта согласно `AGENTS.md`. +2. При конфликте любых инструкций проекта с `AGENTS.md` следуй `AGENTS.md`. +3. Используй проектные навыки из `.agents/skills`, когда задача соответствует их описанию. Для навигации по проекту сначала используй существующий `graphify-out/graph.json`, если он актуален. После изменений в коде примени `AutoUpdateDocs`. +4. Соблюдай стек проекта: Java 17, Spring Boot 3.2.5, PostgreSQL/Flyway, Vanilla JavaScript, HTML и CSS без frontend-фреймворков. +5. Все ответы, комментарии, UI-тексты, пользовательские ошибки и проектные логи должны быть на русском языке. Технические идентификаторы допустимы в структурированных полях логов. +6. Сохраняй мультитенантную модель: отдельная PostgreSQL БД для каждого tenant. Проверяй, что миграции и фоновые задачи корректно работают для всех tenant-БД. +7. Не изменяй существующие Flyway-миграции. Любые новые ограничения схемы оформляй новыми последовательно пронумерованными миграциями, начиная со следующей свободной версии. Сначала проверь фактическую максимальную версию в `backend/src/main/resources/db/migration/`. +8. Сохраняй уже имеющиеся пользовательские изменения в рабочем дереве. Не откатывай и не перезаписывай несвязанные правки. +9. Не выполняй `commit`, `push`, deployment, ротацию production-секретов, переписывание истории Git или иные внешние необратимые действия без отдельного разрешения. Репозиторную часть исправлений реализуй полностью, а необходимые production-действия оформи отдельным точным runbook. +10. Не придумывай и не коммить реальные секреты. Не выводи секреты, пароли, токены, cookie или строки подключения в ответах, тестах и логах. +11. Не скрывай ошибки пустыми `catch`, не ослабляй проверки безопасности ради прохождения тестов и не отмечай проблему исправленной только за счёт комментария или документации. +12. Если замечание из отчёта уже исправлено в текущем коде, проверь это по реализации, добавь или уточни регрессионный тест и укажи доказательство. Не делай лишнюю повторную правку. +13. Не редактируй `BUG_REPORT.md`: он остаётся исходным реестром требований и основанием для итоговой проверки. +14. Учитывай, что `../k8s/` находится вне Git-корня `magistr`: отдельно перечисляй и проверяй каждый изменённый там файл. `git diff` текущего репозитория не подтверждает состояние `../k8s/`. + +## Режим выполнения + +Задача большая, поэтому веди явный чек-лист по номерам проблем: `1, 3, 4, …, 34`. Для каждого пункта зафиксируй: + +- подтверждённую первопричину; +- изменяемые файлы и выбранное решение; +- автоматические тесты или иную воспроизводимую проверку; +- статус: `не начато`, `в работе`, `исправлено и проверено` либо `требуется внешнее действие`. + +Раздели работу на независимые потоки и используй субагентов, если платформа это поддерживает, но координируй общие файлы, номера Flyway-миграций, API-контракты и role matrix централизованно. Не останавливайся после анализа или первой группы исправлений. Продолжай, пока все пункты из области работ не будут реализованы и проверены либо пока не останется объективный блокер, требующий внешних полномочий. + +Перед редактированием: + +1. Выполни `git status --short` и сохрани понимание исходных пользовательских изменений. +2. Зафиксируй список и контрольные суммы всех существующих Flyway-миграций, чтобы доказать их неизменность в финале. +3. Проверь каждое утверждение отчёта по актуальному коду. +4. Составь краткий порядок правок с учётом зависимостей. +5. Запусти доступный базовый набор тестов, чтобы отличать исходные сбои от внесённых регрессий. + +## Требуемый результат по каждому пункту + +### Безопасность и аутентификация + +- **№ 1 — секреты в production-конфигурации.** Удали фиксированные, дефолтные и placeholder-секреты из отслеживаемой конфигурации; перенеси чувствительные значения из ConfigMap в подходящий механизм Secret/External Secrets/SOPS/Sealed Secrets либо подготовь безопасные ссылки на секреты без самих значений. На production-профиле приложение должно завершать запуск при отсутствующем, дефолтном или известном placeholder `JWT_SECRET`, а также при небезопасном refresh-cookie. Не переписывай историю Git и не ротируй реальные секреты самостоятельно — подготовь отдельный runbook ротации и очистки истории. При secret scan не трактуй неизменяемые demo-значения из `V1__init.sql`, относящиеся к исключённой проблеме № 2, как разрешение менять V1 или решать пункт № 2. +- **№ 3 — конкурентная ротация refresh-токена.** Обеспечь атомарную single-use семантику через блокировку строки или условный `UPDATE`; только один из параллельных запросов может создать следующий токен. Добавь конкурентный интеграционный тест с реальным PostgreSQL/Testcontainers. +- **№ 4 — утечка `AuthContext`.** Очищай контекст в начале обработки и на всех отказах, а пользователя устанавливай только после успешной аутентификации и авторизации. Добавь тест последовательных запросов на одном servlet-потоке. +- **№ 12 — access JWT и удалённый JavaScript в одном origin.** Убери исполнение неприкреплённых удалённых модулей, зафиксируй зависимости lockfile и раздавай их локально. Убери долговременное хранение access token в `localStorage` и `sessionStorage`: выбери и последовательно реализуй безопасную схему с access token в памяти и HttpOnly refresh-cookie либо полноценной защищённой cookie-сессией. Добавь строгий CSP без `unsafe-inline`/`unsafe-eval`, устрани несовместимые inline-скрипты и проверь все сценарии входа, refresh, logout и безопасного восстановления сессии после перезагрузки страницы. +- **№ 14 — отключённая TLS-проверка Kubernetes API.** Удали доверие любому сертификату. Используй service-account CA `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`, стандартную проверку цепочки и hostname; ошибки должны быть явными и безопасными. +- **№ 24 — бесконечный рост refresh-токенов.** Добавь tenant-aware cleanup с настраиваемым сроком хранения отозванных/истёкших записей, безопасным расписанием и тестами. Очистка должна сохранять активные и свежие audit-записи, быть идемпотентной и безопасной при двух pod. +- **№ 25 — утечка DB/JDBC-ошибок.** Централизованно преобразуй `DataIntegrityViolationException` и известные constraints в корректные `400`/`409` с русскими сообщениями. Внутренние тексты исключений не должны попадать клиенту. +- **№ 28 — отсутствие ограничения входа.** Реализуй общий для нескольких backend-pod rate limit по tenant + IP + нормализованному username, прогрессивную задержку или временную блокировку и аудит неудачных попыток без логирования пароля. Учти корректное определение клиентского IP только за доверенным proxy, не допускай user enumeration, возвращай `429 Too Many Requests` и корректный `Retry-After`. Не выдавай локальный in-memory limiter одного pod за production-решение. +- **№ 33 — DOM XSS и видимые пароли.** Замени небезопасные вставки ошибок через `innerHTML` на `textContent` или проверенное экранирование. Поля пароля должны иметь `type="password"` и корректные `autocomplete`. +- **№ 34 — языковой регламент.** Приведи затронутые UI-тексты, ошибки и production-логи к русскому языку, не отдавая пользователю сырой JDBC/HTTP exception text. + +### Расписание, календарь и бизнес-инварианты + +- **№ 5 — невалидные schedule overrides.** До сохранения построй фактическую исходную пару на дату, проверь обязательные поля для каждого action, существование пары и конфликты преподавателя, аудитории и всех групп в результирующем расписании. Конфликт должен давать `409 Conflict` с русским сообщением. +- **№ 6 — замена преподавателя не видна в его расписании.** Учитывай overrides с `newTeacher` за период, достраивай относящиеся базовые пары и выполняй окончательную фильтрацию после применения overrides. Покрой исходного и нового преподавателя тестами. +- **№ 7 — неполная валидация правил.** Проверяй конфликты и дубли внутри нового правила, роль `TEACHER`, допустимый enum формата и чётное положительное количество академических часов. Где уместно, продублируй инварианты новой Flyway-миграцией. +- **№ 8 — частичный commit календарной сетки.** Сначала валидируй весь payload и уникальность ключей, затем атомарно заменяй сетку в транзакции. После любого `400` прежние данные должны остаться без изменений. +- **№ 11 — ложный зелёный статус дашборда.** Рассчитывай воскресенье как отдельную дату `понедельник + 6 дней`, не используй UTC для date-only значений и разделяй состояния «конфликтов нет», «частичная ошибка проверки» и «проверка не выполнена». Для `2026-07-02` диапазон должен быть `2026-06-29…2026-07-05`; проверь также переход года. +- **№ 15 — некорректные временные слоты.** Требуй `startTime < endTime`, запрети пересечения интервалов внутри scope, но разреши соседние интервалы с общей границей. Не разрешай перевод используемого базового слота из `DEFAULT` в `MANUAL`, а продолжительность рассчитывай на backend по `startTime/endTime`. Защити инвариант и от конкурентных записей. +- **№ 16 — пересечения учебных лет и семестров.** Централизуй валидацию диапазонов для create/update: запрети пересечения учебных лет, пересечения семестров, выход семестра за границы его года и дубликаты title/type. Добавь DB-ограничения новой миграцией там, где PostgreSQL может надёжно обеспечить инвариант. +- **№ 17 — устаревшие назначения календарей.** При изменении ключевых измерений календаря или группы либо безопасно отклоняй несовместимое изменение с `409 Conflict` без изменения данных, либо в одной транзакции перевалидируй назначения, grid и subjects. Уменьшение `courseCount` не должно оставлять строки или дисциплины старших курсов. +- **№ 18 — исторические кафедры преподавателя.** Для бизнес-решений и исторических отчётов определяй кафедру через `teacher_department_assignments` на целевую дату. Будущий перевод не должен менять текущую принадлежность раньше `validFrom`, архивный преподаватель должен корректно отображаться в историческом периоде, дополнительные активные назначения должны работать единообразно. +- **№ 19 — доступ к workload чужой кафедры.** Для роли `DEPARTMENT` принудительно ограничивай scope кафедрой из `AuthContext`; глобальный просмотр разрешай только явно уполномоченным ролям. +- **№ 20 — лимит 50 групп в агрегатах.** Не используй ограничение интерактивного широкого поиска в workload/free-classrooms. Реализуй специализированные агрегирующие запросы или контролируемую batch-обработку и тесты как минимум с 51 и 100 активными группами. +- **№ 21 — импорт дисциплины другой кафедры.** Не переназначай чужую запись по совпавшему глобальному имени. Зафиксируй бизнес-правило владения и уникальности; безопасный вариант по умолчанию — `409 Conflict` при совпадении с чужой кафедрой и идемпотентный повторный импорт своей записи. При необходимости введи `(department_id, lower(name))` новой миграцией и обработай существующие данные безопасно. +- **№ 22 — несовпадающие права учебного отдела.** Создай единый явно проверяемый role matrix для backend и frontend. Либо выдай `EDUCATION_OFFICE` необходимые права, либо скрой недоступные действия; штатные экраны не должны завершать инициализацию с `403`. +- **№ 23 — N+1 при генерации расписания.** Батчем загружай semesters, assignments и calendar days на диапазон, переиспользуй найденные данные и не выполняй запрос на каждую дату/группу/правило. Добавь измеримый query-count тест на диапазоне 120 дней и десятках групп, доказывающий отсутствие роста порядка `дни × группы × правила` при неизменном результате. +- **№ 29 — нефиксированный часовой пояс.** Внедри `Clock` и явно настроенный `ZoneId` `Europe/Moscow` для бизнес-дат, используй `Instant`/UTC для абсолютных timestamp, зафиксируй timezone контейнеров и формируй frontend date-only строки из локальных компонентов без `toISOString()`. +- **№ 31 — некорректный размер группы.** Используй единый валидатор create/update: `groupSize > 0`, `yearStartStudy > 0`, а также запрет уменьшения ниже суммы активных подгрупп, включая конкурентный сценарий. Добавь новые CHECK constraints отдельной миграцией. +- **№ 32 — диапазон в 121 дату.** Проверяй включительную длину диапазона; максимум должен составлять ровно 120 календарных дат. Покрой граничные случаи 120 и 121 дата. + +### Tenant, инфраструктура и поставка + +- **№ 9 — небезопасная замена tenant DataSource.** Создавай временный pool, явно проверяй соединение и Flyway, затем атомарно подменяй рабочий DataSource. Ошибка миграции или сохранения конфигурации должна прерывать операцию и запускать compensating rollback без потери старого подключения. +- **№ 10 — lost update ConfigMap и неинформативные probes.** Реализуй optimistic locking по `resourceVersion` с ограниченным retry/backoff либо эквивалентный единый coordinator; параллельные изменения двух pod не должны теряться. Readiness должна учитывать доступность обязательных tenant-БД и успешность миграций, а liveness — только жизнеспособность процесса, чтобы отказ БД не создавал restart storm. +- **№ 13 — неполная синхронизация watcher.** Сравнивай весь нормализованный `TenantConfig`, а hash обновляй только после полного успеха. Неудачная синхронизация должна повторяться с ограниченным backoff и наблюдаемым русскоязычным логом. +- **№ 26 — нерабочий чистый локальный запуск.** Сделай `docker compose up -d --build` на чистой машине, без заранее созданной внешней сети, достаточным для доступа к приложению по `http://localhost:80` и проксирования `/api` в backend. Согласуй JDBC URL и `POSTGRES_DB`, передай JWT-настройки, добавь именованный volume и обнови quick start. +- **№ 27 — deployment без тестов и неверный tag rollout.** Добавь обязательные backend/frontend/static/config проверки до build/push/deploy, concurrency lock и проверяемый rollback. Для релизного tag разворачивай конкретный tag или digest, а не перезапускай mutable `:main`. +- **№ 30 — mutable и непроверяемые артефакты.** Зафиксируй версии и digest базовых/сторонних образов и инструментов, проверяй SHA256/signature скачиваемых бинарников, формируй SBOM и добавь сканирование образов. В production не должно остаться `latest` и `:main`; обновление версии должно быть явным и воспроизводимым. + +## Архитектурные требования к реализации + +- Транзакционные границы должны находиться на вызываемых Spring proxy-методах; не рассчитывай на `@Transactional` при self-invocation или пойманном внутри исключении. +- Для конкурентных сценариев используй гарантии PostgreSQL и проверяй их интеграционными тестами, а не только синхронизацией внутри одного JVM-процесса. +- Все операции с tenant-конфигурацией должны быть идемпотентными и безопасными при двух pod. +- Не смешивай date-only и timestamp. Date-only передавай как `YYYY-MM-DD` без UTC-конвертации. +- Сохраняй обратную совместимость API там, где она не противоречит безопасности. Если контракт необходимо изменить, синхронно обнови backend, frontend, тесты и `docs/API.md`. +- Не дублируй сложные бизнес-правила по контроллерам. Выноси общую валидацию/логику в переиспользуемые компоненты в соответствии с текущей архитектурой проекта. +- Избегай массовых косметических рефакторингов, не относящихся к отчёту. Каждое существенное изменение должно сопоставляться с одним или несколькими номерами проблем. +- Не выполняй `docker compose down -v`, массовое удаление данных и другие необратимые операции. Интеграционные тесты должны использовать изолированные временные ресурсы. + +## Обязательные тесты и проверки + +Добавь регрессионные тесты для каждого исправленного поведения. В первую очередь обязательно покрой: + +1. PostgreSQL/Testcontainers и Flyway: чистая схема и upgrade существующей схемы — **без проверки и изменения поведения из проблемы № 2**. +2. Два параллельных refresh-запроса с одним токеном: успех только одного. +3. Последовательность `403`, затем публичный/защищённый запрос на одном потоке без утечки `AuthContext`. +4. Override с конфликтом и расписание преподавателя, назначенного через `newTeacher`. +5. Внутренние конфликты нового правила, неверная роль, нечётные часы и недопустимый формат. +6. Атомарность `saveGrid`: после ошибочного payload старая сетка полностью сохранена. +7. Изменение tenant URL/credentials, неудачная миграция, неудачный ConfigMap update и параллельные PATCH от двух pod. +8. Более 50 активных групп для workload/free-classrooms. +9. Будущий перевод преподавателя и исторические отчёты. +10. E2E или эквивалентный интеграционный сценарий `EDUCATION_OFFICE` для календарных графиков и форм обучения. +11. Frontend-даты в первые дни месяца и в интервале 00:00–03:00 `Europe/Moscow`. +12. Граничные диапазоны 120/121 дата, XSS payload в ошибке, rate limit и cleanup refresh-токенов. + +После реализации выполни доступные проверки и зафиксируй фактический результат каждой команды: + +```bash +mvn -f backend/pom.xml test +find frontend -type f -name '*.js' -print0 | xargs -0 -n1 node --check +docker compose config --quiet +docker compose build backend frontend +kubectl kustomize ../k8s >/dev/null +bash -n ../k8s/deploy.sh +git diff --check +git diff --stat +git status --short +``` + +Команду для `../k8s/deploy.sh` выполняй только если файл существует. Если локального Maven, Node, Docker или kubectl нет либо сборке нужен недоступный network/daemon, используй уже принятый в проекте контейнерный эквивалент либо честно укажи, какую проверку невозможно запустить и почему. Не называй непроверенный результат успешным. Успешный Docker build не заменяет `mvn test`. + +Дополнительно проверь: + +- отсутствие секретов и placeholder credentials в отслеживаемых production-файлах; +- отсутствие изменений существующих Flyway-миграций; +- согласованность новых миграций с JPA-моделями и upgrade-путём всех tenant-БД; +- отсутствие сырых exception messages в HTTP-ответах; +- соответствие backend/frontend role matrix; +- отсутствие `localStorage`/`sessionStorage` для access JWT, удалённых исполняемых модулей и исполняемого inline JavaScript, несовместимого со строгим CSP; +- воспроизводимость Docker/CI/Kubernetes-конфигурации; +- отсутствие английских пользовательских сообщений и production-логов в изменённых областях. +- отдельный список и содержательную проверку всех изменений в `../k8s/`, поскольку они не видны в Git diff проекта. + +## Документация + +После кода и тестов обнови только относящуюся к изменениям документацию, в том числе при необходимости: + +- `docs/API.md`; +- `docs/DATABASE.md`; +- `docs/ARCHITECTURE.md`; +- `docs/BUSINESS_LOGIC.md`; +- `docs/FRONTEND.md`; +- `docs/INFRASTRUCTURE.md`; +- `docs/LOGGING.md`; +- `docs/README.md` и корневой quick start. + +Документация должна описывать фактическое поведение после изменений. Не документируй проблему № 2 как исправленную и не меняй инструкции по demo-аккаунтам в рамках этой задачи. + +## Формат итогового ответа + +Ответ дай на русском языке и начни с результата. Включи: + +1. Таблицу по всем пунктам `1, 3–34`: номер, краткое исправление, основные файлы, тест/проверка, статус. +2. Список созданных Flyway-миграций и подтверждение, что существующие миграции не изменены. +3. Фактически выполненные команды и их результаты. +4. Изменения API, конфигурации, role matrix и deployment-процесса. +5. Отдельный раздел «Требуемые действия оператора» для ротации секретов, очистки истории, настройки secret manager, production rollout и других действий, которым нужен внешний доступ. Не утверждай, что они выполнены. +6. Оставшиеся риски или проверки, которые невозможно выполнить локально. +7. Подтверждение, что проблема № 2 не затрагивалась. + +Перед финальным ответом ещё раз прочитай `BUG_REPORT.md` и сравни чек-лист с точным множеством `{1} ∪ {3..34}`. В итоговой таблице должно быть ровно 33 строки без пропущенных или повторяющихся ID. У каждого пункта должны быть реализация либо доказательство уже существующего исправления, регрессионная проверка и честный статус. + +Критерий завершения: каждый пункт № 1 и № 3–34 имеет реализацию и регрессионную проверку либо явно отделённое внешнее действие; все доступные тесты проходят; документация соответствует коду; проблема № 2 и существующие Flyway-миграции не изменены. From 85f61436b657cc119b4571d96309a3757c7b4ed7 Mon Sep 17 00:00:00 2001 From: Zuev Date: Mon, 13 Jul 2026 03:28:18 +0300 Subject: [PATCH 05/14] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BUG_FIX_PROGRESS.md | 278 ++++++ backend/pom.xml | 22 + .../magistr/app/config/DataInitializer.java | 39 - .../config/auth/AuthorizationInterceptor.java | 4 +- .../app/config/auth/JwtProperties.java | 52 +- .../auth/JwtSecurityStartupValidator.java | 24 + .../app/config/auth/RefreshTokenService.java | 2 +- .../app/config/tenant/ConfigMapUpdater.java | 125 --- .../tenant/KubernetesTenantSecretUpdater.java | 178 ++++ .../config/tenant/TenantConfigWatcher.java | 96 +- .../config/tenant/TenantDataSourceConfig.java | 69 +- .../tenant/TenantRoutingDataSource.java | 275 ++++-- .../AcademicCalendarController.java | 70 +- .../app/controller/DatabaseController.java | 113 +-- .../controller/GlobalExceptionHandler.java | 11 + .../ScheduleOverrideController.java | 122 +-- .../ScheduleRuleAdminController.java | 664 +------------- .../AuthRefreshTokenRepository.java | 13 + .../ScheduleOverrideRepository.java | 21 + .../repository/ScheduleRuleRepository.java | 33 +- .../app/repository/SemesterRepository.java | 18 + .../app/repository/SubgroupRepository.java | 13 + .../service/AcademicCalendarGridService.java | 157 ++++ .../app/service/PostgreSqlAdvisoryLock.java | 44 + .../app/service/RetiredTenantPoolService.java | 148 +++ .../service/ScheduleConflictException.java | 8 + .../app/service/ScheduleOverrideService.java | 532 +++++++++++ .../app/service/ScheduleQueryService.java | 102 ++- .../ScheduleRuleConflictException.java | 34 + .../app/service/ScheduleRuleService.java | 850 ++++++++++++++++++ .../TenantDatabaseMigrationService.java | 25 + .../app/service/TenantLifecycleException.java | 15 + .../app/service/TenantLifecycleService.java | 339 +++++++ .../src/main/resources/application.properties | 2 +- .../V3__schedule_override_invariants.sql | 94 ++ .../V4__schedule_rule_even_hours.sql | 97 ++ .../auth/AuthorizationInterceptorTest.java | 137 +++ .../app/config/auth/JwtPropertiesTest.java | 71 ++ .../auth/JwtSecurityStartupValidatorTest.java | 101 +++ ...okenServiceConcurrencyIntegrationTest.java | 205 +++++ .../config/auth/RefreshTokenServiceTest.java | 4 +- .../KubernetesTenantSecretUpdaterTest.java | 154 ++++ .../tenant/TenantConfigWatcherTest.java | 160 ++++ .../tenant/TenantRoutingDataSourceTest.java | 76 ++ .../ScheduleOverrideControllerTest.java | 54 ++ .../ScheduleRuleAdminControllerTest.java | 151 ++++ ...eduleOverrideMigrationIntegrationTest.java | 294 ++++++ ...duleRuleHoursMigrationIntegrationTest.java | 337 +++++++ ...micCalendarGridServiceIntegrationTest.java | 212 +++++ .../AcademicCalendarGridServiceTest.java | 229 +++++ ...PostgreSqlAdvisoryLockIntegrationTest.java | 142 +++ .../service/ScheduleOverrideServiceTest.java | 671 ++++++++++++++ .../ScheduleQueryServiceOverrideTest.java | 152 ++++ ...heduleQueryServiceTeacherOverrideTest.java | 241 +++++ ...RuleServiceConcurrencyIntegrationTest.java | 365 ++++++++ .../app/service/ScheduleRuleServiceTest.java | 600 +++++++++++++ ...antLifecyclePostgreSqlIntegrationTest.java | 244 +++++ .../service/TenantLifecycleServiceTest.java | 323 +++++++ docs/API.md | 86 +- docs/ARCHITECTURE.md | 76 +- docs/BUSINESS_LOGIC.md | 48 +- docs/DATABASE.md | 41 +- docs/DEVELOPMENT.md | 2 +- docs/INFRASTRUCTURE.md | 37 +- docs/LOGGING.md | 2 +- docs/README.md | 1 + docs/SECURITY_RUNBOOK.md | 77 ++ graphify-out/.graphify_learning.json | 244 ++++- ...подсистемы_связывают_исправления_аутентифика.md | 27 + ...duleoverrideservice_должен_выявлять_конфли.md | 22 + ...зопасно_валидировать_и_сохранять_точечные_из.md | 24 + ...связи_затрагивает_полная_валидация_правил_ра.md | 26 + ...зопасно_заменить_tenant_datasource_без_потер.md | 25 + ...зопасно_обновлять_tenant_datasource_без_поте.md | 25 + graphify-out/reflections/LESSONS.md | 29 +- scripts/check-production-secrets.sh | 73 ++ 76 files changed, 9219 insertions(+), 1258 deletions(-) create mode 100644 BUG_FIX_PROGRESS.md delete mode 100755 backend/src/main/java/com/magistr/app/config/DataInitializer.java create mode 100644 backend/src/main/java/com/magistr/app/config/auth/JwtSecurityStartupValidator.java delete mode 100755 backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java create mode 100644 backend/src/main/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdater.java mode change 100755 => 100644 backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java create mode 100644 backend/src/main/java/com/magistr/app/service/AcademicCalendarGridService.java create mode 100644 backend/src/main/java/com/magistr/app/service/PostgreSqlAdvisoryLock.java create mode 100644 backend/src/main/java/com/magistr/app/service/RetiredTenantPoolService.java create mode 100644 backend/src/main/java/com/magistr/app/service/ScheduleConflictException.java create mode 100644 backend/src/main/java/com/magistr/app/service/ScheduleOverrideService.java create mode 100644 backend/src/main/java/com/magistr/app/service/ScheduleRuleConflictException.java create mode 100644 backend/src/main/java/com/magistr/app/service/ScheduleRuleService.java create mode 100644 backend/src/main/java/com/magistr/app/service/TenantDatabaseMigrationService.java create mode 100644 backend/src/main/java/com/magistr/app/service/TenantLifecycleException.java create mode 100644 backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java create mode 100644 backend/src/main/resources/db/migration/V3__schedule_override_invariants.sql create mode 100644 backend/src/main/resources/db/migration/V4__schedule_rule_even_hours.sql create mode 100644 backend/src/test/java/com/magistr/app/config/auth/AuthorizationInterceptorTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/auth/JwtPropertiesTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/auth/JwtSecurityStartupValidatorTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/tenant/TenantRoutingDataSourceTest.java create mode 100644 backend/src/test/java/com/magistr/app/controller/ScheduleOverrideControllerTest.java create mode 100644 backend/src/test/java/com/magistr/app/controller/ScheduleRuleAdminControllerTest.java create mode 100644 backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/ScheduleOverrideServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceOverrideTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java create mode 100644 docs/SECURITY_RUNBOOK.md create mode 100644 graphify-out/memory/query_20260711_222223_какие_подсистемы_связывают_исправления_аутентифика.md create mode 100644 graphify-out/memory/query_20260712_141303_как_scheduleoverrideservice_должен_выявлять_конфли.md create mode 100644 graphify-out/memory/query_20260712_145207_как_безопасно_валидировать_и_сохранять_точечные_из.md create mode 100644 graphify-out/memory/query_20260712_214838_какие_связи_затрагивает_полная_валидация_правил_ра.md create mode 100644 graphify-out/memory/query_20260712_220947_как_безопасно_заменить_tenant_datasource_без_потер.md create mode 100644 graphify-out/memory/query_20260712_222021_как_безопасно_обновлять_tenant_datasource_без_поте.md create mode 100644 scripts/check-production-secrets.sh diff --git a/BUG_FIX_PROGRESS.md b/BUG_FIX_PROGRESS.md new file mode 100644 index 0000000..e03bdcf --- /dev/null +++ b/BUG_FIX_PROGRESS.md @@ -0,0 +1,278 @@ +# Журнал исправления проблем + +Обновлено: 2026-07-13 (Europe/Moscow). + +## Область и неизменяемые данные + +- В работе ровно 33 проблемы: `1` и `3–34`. +- Проблема № 2 исключена: демонстрационные учётные записи, seed-данные и документация по ним не изменяются. +- `BUG_REPORT.md` не редактируется. +- Существующие Flyway-миграции не редактируются. + +Исходное рабочее дерево перед началом реализации было чистым (`git status --short` без вывода). + +Контрольные суммы исходных миграций: + +| Файл | SHA-256 | +|---|---| +| `V1__init.sql` | `404f65f270dd87f4db996495fc970456c4fd0f762e7c32638199dffaa812ea7b` | +| `V2__subgroups_active_unique_name.sql` | `68f5525a50ddba4f8800a63cab3cd0f84779e301c4a1f29a6e0399f97fbdb30b` | + +## Исходная линия проверок + +| Проверка | Результат до изменений | +|---|---| +| `mvn -f backend/pom.xml test` | Maven на хосте отсутствует. Контейнерный эквивалент `maven:3.9-eclipse-temurin-17` завершён успешно: 30 тестов, 0 failures, 0 errors. | +| `find frontend ... node --check` | Успешно. | +| `docker compose config --quiet` | Успешно. | +| `kubectl kustomize ../k8s >/dev/null` | Успешно. | +| `bash -n ../k8s/deploy.sh` | Успешно. | +| `git diff --check` | Успешно. | + +## Порядок выполнения + +1. Безопасная production-конфигурация и внешние секреты: № 1 (с зависимой частью № 14). +2. Аутентификация и границы запроса: № 3, 4, 24, 25, 28. +3. Высокоприоритетные инварианты расписания: № 5–8. +4. Tenant lifecycle и Kubernetes coordination: № 9, 10, 13, 14. +5. Frontend-сессия и достоверность UI: № 11, 12, 33, 34. +6. Календарные и DB-инварианты: № 15–17, 21, 31, 32. +7. История, права, масштаб и производительность: № 18–23. +8. Локальный запуск, CI/CD, воспроизводимые артефакты и timezone: № 26, 27, 29, 30. +9. AutoUpdateDocs, полный регрессионный прогон и финальный аудит 33 пунктов. + +## Чек-лист + +Статусы меняются только после реализации и воспроизводимой проверки. + +| № | Статус | Подтверждённая первопричина | Решение и основные файлы | Проверка | +|---:|---|---|---|---| +| 1 | требуется внешнее действие | В коде и production YAML были встроенные/placeholder JWT и DB credentials; tenant и OTel credentials находились в отслеживаемой конфигурации; Secure-cookie не был обязательным для production. | Встроенный JWT default удалён; добавлен fail-fast validator; production использует только внешние `app-secret`, `tenants-secret`, `otel-postgres-secret`; создан `docs/SECURITY_RUNBOOK.md`. Репозиторная часть исправлена. Оператору остаются ротация, provisioning, rollout и очистка истории. | 11 JWT unit/context tests; общий backend: 45/0/0; `scripts/check-production-secrets.sh`; Kustomize и shell syntax — успешно. | +| 3 | исправлено и проверено | Ротация refresh-токена выполняла read-check-write без блокировки/условного update. | `RefreshTokenService.rotate()` использует блокирующий `findByTokenHashForUpdate()` с `PESSIMISTIC_WRITE` и `JOIN FETCH` внутри транзакции. | Два синхронных запроса к Spring proxy и PostgreSQL: один успех, один отказ, один активный новый токен. Полный backend: 46/0/0/0. | +| 4 | исправлено и проверено | `AuthContext` устанавливался до role-check и сохранялся в servlet-потоке, когда `preHandle=false` не приводил к `afterCompletion`. | `AuthorizationInterceptor` очищает контекст в начале каждого запроса и устанавливает пользователя только после успешной проверки ролей; финальная очистка сохранена. | Один MockMvc-поток: `403`, публичный запрос, разрешённый запрос и очистка после завершения. Полный backend: 47/0/0/0. | +| 5 | исправлено и проверено | Override сохранялся без доказательства исходной пары, action-specific полей и ресурсных конфликтов. | `ScheduleOverrideService` строит base/effective day, валидирует матрицу и фактическое изменение, проверяет ресурсы и сериализует CRUD через PostgreSQL advisory locks; V3 закрепляет структурные инварианты. | 27 целевых unit/MockMvc/PostgreSQL tests; полный backend: 74/0/0/0. | +| 6 | исправлено и проверено | Teacher-only поиск загружал только базовые правила исходного преподавателя до применения override. | Один snapshot overrides; релевантные `newTeacher`-замены достраивают exact base occurrences по уникальным датам, затем применяются overrides, финальный teacher-фильтр и deduplicate. | 5 новых A→B/phantom/cache/dedup/regression тестов; узкий прогон 10/0/0/0, полный backend 79/0/0/0. | +| 7 | исправлено и проверено | Контроллер сравнивал новые слоты только с сохранёнными правилами, не проверял роль преподавателя и enum формата, а нечётные часы приводили к перерасходу генератора. | `ScheduleRuleService` валидирует весь кандидат до мутации, попарно проверяет дубли/ресурсы, требует `TEACHER`, `Очно`/`Онлайн` и чётные часы; строка семестра сериализует запись. V4 закрепляет чётность и точный дубль в БД. | 23 service/MockMvc/Flyway/PostgreSQL tests; полный backend: 102/0/0/0. | +| 8 | исправлено и проверено | `saveGrid` удалял данные до полной валидации и ловил исключение внутри transactional controller-метода, поэтому Spring коммитил delete и уже обработанные строки. | `AcademicCalendarGridService` полностью валидирует и строит replacement до delete, атомарно заменяет строки и очищает кэш через `afterCommit`; контроллер стал HTTP-адаптером. | 8 unit + 1 PostgreSQL proxy test; fingerprint старой сетки после отказа неизменен; полный backend 111/0/0/0. | +| 9 | в работе | При update старый pool закрывается до создания нового; Hikari допускает ленивый нерабочий pool, Flyway проглатывает ошибку, а отказ Secret-персистенции оставляет локальное состояние изменённым. | Реализуются prepare/validate/migrate кандидата, persistence до atomic swap и компенсация Secret при ошибке активации. | Готовятся unit и PostgreSQL lifecycle tests для credentials/migration/persistence/swap. | +| 10 | не начато | Два pod перезаписывают целый tenant-документ без `resourceVersion`; TCP probes не отражают готовность tenant-БД. | Optimistic locking с retry; отдельные liveness/readiness semantics. | Конкурентные PATCH и health tests; Kustomize-проверка probes. | +| 11 | не начато | Sunday вычисляется повторным мутированием даты; ошибки запросов превращаются в пустые результаты и зелёный статус. | Чистая local-date утилита и три явных состояния проверки. | 2026-07-02, переход года, частичная/полная ошибка API. | +| 12 | не начато | Access JWT хранится в Web Storage; origin исполняет удалённые модули; CSP допускает несовместимые сценарии. | Access JWT только в памяти, восстановление через HttpOnly refresh-cookie; локальные pinned assets; строгий CSP и удаление inline JS. | Login/refresh/logout/reload tests; статический аудит CSP/storage/imports. | +| 13 | не начато | Watcher сравнивает только домены и фиксирует hash до успешной полной синхронизации. | Нормализованное сравнение полного `TenantConfig`, hash после успеха, bounded backoff. | Изменение URL/credentials и retry после ошибки. | +| 14 | исправлено и проверено | Kubernetes HTTP-клиент имел trust-all TLS fallback. | `KubernetesTenantSecretUpdater` загружает service-account CA, строит PKIX trust store, включает HTTPS hostname verification и не имеет небезопасного fallback. | Mock HTTPS: доверенный CA принят; чужой CA, неверный hostname и отсутствующий CA отклонены. Backend 45/0/0. | +| 15 | не начато | Не проверяются `start < end` и пересечения; duration доверяется клиенту; используемый DEFAULT scope можно изменить. | Централизованный валидатор, backend duration, DB/concurrency protection. | Overlap/adjacent/scope/concurrency tests. | +| 16 | не начато | Create/update проверяют лишь порядок дат, но не пересечения и принадлежность семестра году. | Единый calendar validator и PostgreSQL range/exclusion constraints. | Create/update + конкурентные PostgreSQL tests. | +| 17 | не начато | Изменение измерений группы/календаря оставляет несовместимые assignments/grid/subjects. | Отклонять несовместимое изменение транзакционно с `409`; контролировать `courseCount`. | Assignment сохранён после отказа; старшие строки не остаются. | +| 18 | не начато | Бизнес-решения смешивают `users.department_id` с датированными assignments и фильтруют архивные записи по текущему состоянию. | Date-aware resolver кафедры и единое использование истории. | Будущий перевод, прошлый период, архивный преподаватель, совместительство. | +| 19 | не начато | Workload принимает произвольный `departmentId` для роли `DEPARTMENT`. | Принудительный scope из `AuthContext`; глобальный доступ только разрешённым ролям. | Межкафедральный запрос кафедры не раскрывает данные. | +| 20 | не начато | Агрегаты переиспользуют интерактивный широкий поиск с лимитом 50 групп. | Специализированная batch/aggregate генерация без UI-лимита. | 51 и 100 активных групп. | +| 21 | не начато | Импорт ищет дисциплину по глобальному имени и меняет её владельца. | `409` для чужой записи, идемпотентность своей; scoped uniqueness при миграции. | Повторный свой импорт и совпадение чужой кафедры. | +| 22 | не начато | Видимые EDUCATION_OFFICE экраны вызывают backend endpoints с ADMIN-only правами. | Единая role matrix для backend/frontend; согласовать read/write capabilities. | Интеграционный сценарий календаря и форм обучения без штатного `403`. | +| 23 | не начато | Генератор повторно запрашивает semester/assignment/calendar day на каждой комбинации. | Батч-загрузка и request-scoped lookup maps. | Query-count test на 120 датах и десятках групп. | +| 24 | не начато | Истёкшие/отозванные refresh rows не удаляются. | Tenant-aware scheduled cleanup с retention и безопасностью двух pod. | Active/fresh rows сохраняются; cleanup идемпотентен и конкурентно безопасен. | +| 25 | не начато | Нет общего mapping DB constraints; контроллеры возвращают клиенту `getMessage()`. | Централизованный sanitizer/mapping `400`/`409`, убрать raw exception body. | Известный/неизвестный constraint без JDBC details. | +| 26 | не начато | Compose требует внешнюю сеть, не публикует HTTP, рассогласует DB/JWT и не имеет named volume. | Самодостаточная сеть/reverse proxy, согласованные env и volume. | Чистый `docker compose up -d --build`, HTTP `/` и `/api`. | +| 27 | не начато | Pipeline собирает/деплоит без обязательных тестов и для tag перезапускает mutable `main`. | Test gates, concurrency, immutable tag/digest rollout, rollback check. | Workflow lint/static inspection и shell tests. | +| 28 | не начато | Login не имеет shared rate limit; IP безусловно доверяет forwarded header. | PostgreSQL-backed tenant+trusted-IP+username limiter, lockout/audit, `429`/`Retry-After`. | Multi-instance integration tests, отсутствие user enumeration. | +| 29 | не начато | Business dates зависят от timezone процесса; frontend date-only строится через UTC. | Инъекция `Clock`/`Europe/Moscow`, UTC timestamps, локальное форматирование date-only, TZ контейнеров. | Boundary tests 00:00–03:00 и первые дни месяца. | +| 30 | не начато | Образы/скачиваемые инструменты используют mutable tags/latest без checksum/SBOM/scan. | Pin versions+digests, SHA verification, SBOM и image scan gates. | Static scan production refs и CI configuration. | +| 31 | не начато | Group create/update допускает неположительные значения и уменьшение ниже активных подгрупп. | Общий validator, locking, новые CHECK constraints. | Create/update/concurrency и migration tests. | +| 32 | не начато | `between(start,end) > 120` разрешает 121 включительную дату. | Проверять `between + 1 <= 120` в обоих сервисах. | Границы 120/121. | +| 33 | не начато | Несколько `e.message` вставляются как HTML; парольные поля имеют `type=text`. | `textContent`/экранирование; `type=password` и autocomplete. | DOM/XSS static/unit test и HTML assertions. | +| 34 | не начато | В затронутых UI/log paths остаются английские метки/логи и raw exception text. | Русификация и безопасные сообщения на границе API/UI. | Поиск английских production сообщений и regression tests. | + +## Завершённые этапы + +### № 1 и зависимая № 14 + +- `JwtProperties` больше не содержит секрет по умолчанию; production startup отклоняет пустое, короткое, известное legacy/placeholder значение и `JWT_REFRESH_COOKIE_SECURE=false`. +- `../k8s/config.yaml` больше не создаёт Secret с литеральными значениями. +- `../k8s/backend.yaml` монтирует tenant-конфигурацию из `tenants-secret`. +- `../k8s/otel-collector.yaml` использует только `${env:...}` ссылки и `otel-postgres-secret`. +- `KubernetesTenantSecretUpdater` заменил `ConfigMapUpdater`, использует base64-поле Kubernetes Secret, service-account CA и hostname verification. +- `../k8s/deploy.sh` проверяет обязательные Secrets/ключи до rollout без вывода значений. +- Созданы `docs/SECURITY_RUNBOOK.md` и `scripts/check-production-secrets.sh`; документация синхронизирована через AutoUpdateDocs. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn test` | 45 тестов, 0 failures, 0 errors, BUILD SUCCESS. | +| `bash scripts/check-production-secrets.sh` | Успешно. | +| `kubectl kustomize ../k8s >/dev/null` | Успешно. | +| `bash -n ../k8s/deploy.sh` | Успешно. | +| `git diff --check` | Успешно. | +| Повторные SHA-256 V1/V2 | Совпадают с исходными. | + +Изменённые вне Git-корня файлы: `../k8s/config.yaml`, `backend.yaml`, +`otel-collector.yaml`, `rbac.yaml`, `deploy.sh`, `README.md`. Их состояние проверяется +отдельно от `git diff`. + +### № 3 — атомарная ротация refresh-токена + +- Репозиторий захватывает строку исходного токена через `PESSIMISTIC_WRITE` и загружает + пользователя в том же запросе. +- `RefreshTokenService.rotate()` выполняет проверку активности, отзыв исходного токена и + создание следующего токена в одной транзакции после захвата блокировки. +- Добавлен интеграционный тест с двумя синхронными потоками, Spring transactional proxy, + Flyway V1/V2 и реальным PostgreSQL 16.3 через Testcontainers. +- Одновременная ротация подтверждает ровно один успешный результат, один отказ, две строки + в БД и ровно один активный следующий токен. +- `docs/ARCHITECTURE.md` и `docs/API.md` синхронизированы через AutoUpdateDocs. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный узкий `mvn -Dtest=RefreshTokenServiceTest,RefreshTokenServiceConcurrencyIntegrationTest test` | 5 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Контейнерный полный `mvn test` | 46 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `git diff --check` | Успешно. | + +### № 4 — границы `AuthContext` + +- `AuthorizationInterceptor.preHandle()` очищает `AuthContext` до проверки URI, метода, + публичного endpoint и bearer-токена. +- Аутентифицированный пользователь помещается в `ThreadLocal` только после успешной + проверки `@RequireRoles`; ответы `401` и `403` оставляют контекст пустым. +- `afterCompletion()` продолжает очищать контекст после успешно допущенного запроса. +- Регрессионный MockMvc-тест выполняет на одном JUnit-потоке запрещённый защищённый, + публичный и разрешённый защищённый запросы и проверяет контекст внутри обработчиков и + после завершения. +- `docs/ARCHITECTURE.md` синхронизирован через AutoUpdateDocs. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=AuthorizationInterceptorTest test` | 1 тест, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Контейнерный полный `mvn test` | 47 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `git diff --check` | Успешно. | + +### № 5 — безопасные точечные изменения расписания + +- `ScheduleOverrideController` стал тонким HTTP-адаптером, а CRUD перенесён в публичные + транзакционные методы `ScheduleOverrideService`. +- Перед сохранением строится реальная базовая пара на дату с учётом семестра, календаря, + чётности, lifecycle и остатка часов; несуществующая occurrence возвращает `400`. +- Матрица `CANCEL`/`MOVE`/`REPLACE`, формат и action-specific фактическое изменение + проверяются до мутации managed entity. +- Сохранённые overrides и кандидат применяются общей логикой `ScheduleQueryService`; + полуоткрытые интервалы проверяются по преподавателю, аудитории, целой группе и + подгруппам. Конфликт возвращается как русский `409 Conflict`. +- PostgreSQL transaction advisory lock сериализует изменения даты между pod. Update/delete + дополнительно блокируют ID; старая и новая даты update захватываются в стабильном порядке, + после чего строка перечитывается с `PESSIMISTIC_WRITE`. +- Добавлена `V3__schedule_override_invariants.sql`: preflight legacy-строк, CHECK для + payload каждого действия и формата. Миграционный тест подтверждает полный rollback на + невалидном legacy `REPLACE` и clean upgrade до V3. +- `docs/API.md`, `docs/BUSINESS_LOGIC.md`, `docs/DATABASE.md` и `docs/ARCHITECTURE.md` + синхронизированы через AutoUpdateDocs. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Целевые контейнерные Maven-прогоны № 5 | 22 unit/MockMvc/PostgreSQL теста, затем 24 усиленных unit/MockMvc теста; оба прогона без failures/errors/skipped. Все 27 тестов № 5 входят в полный прогон. | +| Контейнерный полный `mvn test` | 74 теста, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `git diff --check` | Успешно. | +| Повторные SHA-256 V1/V2 | Совпадают с исходными. | +| SHA-256 новой V3 | `eb5315b58a2bad95b0ad36718052788168be0d8f347649c5c98782949865357b`. | + +### № 6 — замена преподавателя в результирующем расписании + +- `ScheduleQueryService.search()` читает overrides диапазона один раз и переиспользует + один снимок для достраивания и применения изменений. +- Teacher-only путь по-прежнему строит базовое расписание преподавателя напрямую. Только + при наличии overrides с совпадающим `newTeacher` он группирует целевые слоты по дате и + один раз строит полный базовый день каждой релевантной даты. +- Из дня добавляются только occurrences с точным `baseRuleSlotId + lessonDate`; отсутствующая + базовая пара не создаёт фантомное занятие. +- Overrides применяются до окончательного teacher-фильтра: новый преподаватель видит замену, + исходный — нет. Итоговая дедупликация удаляет совпавшие базовые и достроенные фрагменты. +- `CANCEL` и `MOVE` продолжают применяться из того же snapshot; при отсутствии релевантной + замены `groupRepository.findAll()` не вызывается. +- `docs/API.md`, `docs/BUSINESS_LOGIC.md` и `docs/ARCHITECTURE.md` синхронизированы через + AutoUpdateDocs. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Узкий контейнерный Maven-прогон трёх `ScheduleQueryService*Test` | 10 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Контейнерный полный `mvn test` | 79 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `git diff --check` | Успешно. | + +### № 7 — полная валидация правил расписания + +- `ScheduleRuleAdminController` стал тонким HTTP-адаптером; create/update/archive перенесены + в публичные транзакционные методы `ScheduleRuleService`. +- До обращений к справочникам сервис проверяет обязательные поля, неотрицательность и + чётность каждого лимита часов, положительную сумму, недели начала и структуру payload. + Ноль разрешён для неиспользуемого типа занятия. +- Слот принимает только активного пользователя с ролью `TEACHER`, базовый временной слот и + формат `Очно`/`Онлайн`; отсутствующая вложенная ссылка возвращает безопасный `400`. +- Кандидат строится отдельно от managed entity. Точные дубли и ресурсные конфликты слотов + нового payload проверяются попарно до сохранения; `ODD` и `EVEN` разрешены одновременно, + а `BOTH` пересекается с ними. Конфликтный update не изменяет существующее правило. +- Создание первым DB-запросом блокирует строку семестра. Update блокирует строку правила и + старый/новый семестры в стабильном порядке; реальный PostgreSQL-тест подтверждает, что из + двух параллельных create проходит один, а второй после commit видит `409 Conflict`. +- `V4__schedule_rule_even_hours.sql` выполняет русский preflight нечётных legacy-часов и + точных дублей слотов, затем добавляет провалидированный CHECK чётности и UNIQUE точного + payload слота. При legacy-нарушении V4 полностью откатывается и остаётся версия V3. +- `docs/API.md`, `docs/BUSINESS_LOGIC.md`, `docs/DATABASE.md` и `docs/ARCHITECTURE.md` + синхронизированы через AutoUpdateDocs. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Целевые service/MockMvc/Flyway/PostgreSQL прогоны № 7 | 23 теста, 0 failures, 0 errors, 0 skipped. | +| Контейнерный полный `mvn test` | 102 теста, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `git diff --check` | Успешно. | +| Повторные SHA-256 V1/V2/V3 | Совпадают с зафиксированными значениями. | +| SHA-256 новой V4 | `211babace0f1620cac2186b42b6d3039c8ee8518284473b49da0a4d47186e490`. | + +### № 8 — атомарная замена календарной сетки + +- `AcademicCalendarController.saveGrid()` больше не содержит транзакцию, bulk delete, + построчное сохранение и внутренний catch; endpoint делегирует публичному + `AcademicCalendarGridService.replaceGrid()`. +- Сервис до первого write полностью валидирует непустой payload: `null`-строки, границы + курса и учебного года, согласованность `weekNumber` и ISO `dayOfWeek` с датой, наличие + activity type и уникальность `(courseNumber, date)`. +- Все `AcademicCalendarDay` строятся в памяти до `deleteByCalendarId`. Валидный набор + сохраняется как `delete → flush → saveAll → flush` в одной транзакции; исключения выходят + за Spring proxy и приводят к rollback. +- Очистка кэша зарегистрирована как `afterCommit`, поэтому не выполняется при rollback и не + создаёт окно повторного кэширования старой сетки между flush и commit. +- PostgreSQL-тест сравнивает count+MD5 старой seed-сетки: payload с корректной первой и + ошибочной второй строкой оставляет fingerprint неизменным и не добавляет первую строку; + следующий валидный запрос атомарно оставляет ровно две новые строки. +- `docs/API.md`, `docs/BUSINESS_LOGIC.md` и `docs/ARCHITECTURE.md` синхронизированы через + AutoUpdateDocs. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Unit `AcademicCalendarGridServiceTest` | 8 тестов, 0 failures, 0 errors, 0 skipped. | +| PostgreSQL `AcademicCalendarGridServiceIntegrationTest` | 1 тест, 0 failures, 0 errors, 0 skipped; rollback/fingerprint и after-commit подтверждены. | +| Контейнерный полный `mvn test` | 111 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `git diff --check` | Успешно. | + +## Точка продолжения + +Текущий этап: **№ 9 — безопасная замена tenant DataSource**. + +Следующая операция: + +1. проверить актуальные create/update потоки `DatabaseController`, swap/remove API + `TenantRoutingDataSource`, Flyway и персистенцию tenant-конфигурации; +2. определить порядок prepare → connection validation → Flyway → persistence → atomic swap, + не закрывающий рабочий pool до полной готовности кандидата; +3. добавить компенсирующий rollback для ошибок персистенции/активации и явные русские + ошибки без ложного `200`; +4. покрыть неверные credentials, ошибку миграции и ошибку персистенции тестами, доказывающими + сохранность старого подключения; +5. выполнить полный прогон и AutoUpdateDocs перед изменением статуса № 9. diff --git a/backend/pom.xml b/backend/pom.xml index 6759af9..2cdbae9 100755 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -76,6 +76,28 @@ spring-boot-starter-test test + + com.squareup.okhttp3 + mockwebserver + 4.12.0 + test + + + com.squareup.okhttp3 + okhttp-tls + 4.12.0 + test + + + org.testcontainers + junit-jupiter + test + + + org.testcontainers + postgresql + test + diff --git a/backend/src/main/java/com/magistr/app/config/DataInitializer.java b/backend/src/main/java/com/magistr/app/config/DataInitializer.java deleted file mode 100755 index 06405e7..0000000 --- a/backend/src/main/java/com/magistr/app/config/DataInitializer.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.magistr.app.config; - -import com.magistr.app.config.tenant.TenantConfig; -import com.magistr.app.config.tenant.TenantConfigWatcher; -import com.magistr.app.config.tenant.TenantRoutingDataSource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.CommandLineRunner; -import org.springframework.stereotype.Component; - -/** - * При запуске приложения инициализирует БД для каждого тенанта. - * Делегирует инициализацию в TenantConfigWatcher.initDatabaseForTenant(). - */ -@Component -public class DataInitializer implements CommandLineRunner { - - private static final Logger log = LoggerFactory.getLogger(DataInitializer.class); - - private final TenantRoutingDataSource routingDataSource; - private final TenantConfigWatcher configWatcher; - - public DataInitializer(TenantRoutingDataSource routingDataSource, - TenantConfigWatcher configWatcher) { - this.routingDataSource = routingDataSource; - this.configWatcher = configWatcher; - } - - @Override - public void run(String... args) { - log.info("Initializing databases for {} tenant(s)...", routingDataSource.getTenantConfigs().size()); - - for (TenantConfig tenant : routingDataSource.getTenantConfigs().values()) { - configWatcher.initDatabaseForTenant(tenant); - } - - log.info("Database initialization complete"); - } -} diff --git a/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java b/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java index 8dcd92f..142b701 100644 --- a/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java +++ b/backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java @@ -25,6 +25,8 @@ public class AuthorizationInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { + AuthContext.clear(); + if (!request.getRequestURI().startsWith("/api/") || "OPTIONS".equalsIgnoreCase(request.getMethod())) { return true; } @@ -42,13 +44,13 @@ public class AuthorizationInterceptor implements HandlerInterceptor { return false; } - AuthContext.setCurrentUser(user); RequireRoles roles = resolveRoles(handler); if (roles != null && Arrays.stream(roles.value()).noneMatch(role -> role == user.role())) { writeError(response, HttpServletResponse.SC_FORBIDDEN, "Недостаточно прав для выполнения операции"); return false; } + AuthContext.setCurrentUser(user); return true; } diff --git a/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java b/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java index aab5abd..f142bf7 100644 --- a/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java +++ b/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java @@ -4,13 +4,34 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.time.Duration; +import java.util.HexFormat; +import java.util.Locale; +import java.util.Set; @Component @ConfigurationProperties(prefix = "app.jwt") public class JwtProperties { - private String secret = "dev-only-change-this-jwt-secret-32-bytes-minimum"; + private static final Set LEGACY_INSECURE_SECRET_FINGERPRINTS = Set.of( + "884e52f1fbb3b0caf409bc76a14ba8e601d6117be5a9188319f2e84f9e19a853", + "54f5809ada311ba1e12146a14db39ede2082b6f73ca7749bae8cd8450726eaf9" + ); + + private static final Set PLACEHOLDER_MARKERS = Set.of( + "change-me", + "change_this", + "change-this", + "dev-only", + "placeholder", + "replace-with", + "replace_this", + "replace-this" + ); + + private String secret; private Duration accessTtl = Duration.ofMinutes(15); private Duration refreshTtl = Duration.ofDays(7); private String refreshCookieName = "magistr_refresh"; @@ -57,10 +78,37 @@ public class JwtProperties { } public byte[] secretBytes() { - byte[] bytes = secret == null ? new byte[0] : secret.getBytes(StandardCharsets.UTF_8); + if (secret == null || secret.isBlank()) { + throw new IllegalStateException("JWT_SECRET обязателен и не может быть пустым"); + } + + byte[] bytes = secret.getBytes(StandardCharsets.UTF_8); if (bytes.length < 32) { throw new IllegalStateException("JWT_SECRET должен быть не короче 32 байт"); } + + String normalized = secret.toLowerCase(Locale.ROOT); + if (PLACEHOLDER_MARKERS.stream().anyMatch(normalized::contains) + || LEGACY_INSECURE_SECRET_FINGERPRINTS.contains(sha256(bytes))) { + throw new IllegalStateException("JWT_SECRET содержит известное небезопасное или шаблонное значение"); + } return bytes; } + + public void validateForEnvironment(boolean production) { + secretBytes(); + if (production && !refreshCookieSecure) { + throw new IllegalStateException( + "В production-профиле JWT_REFRESH_COOKIE_SECURE должен иметь значение true" + ); + } + } + + private String sha256(byte[] value) { + try { + return HexFormat.of().formatHex(MessageDigest.getInstance("SHA-256").digest(value)); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException("В JVM недоступен алгоритм SHA-256", e); + } + } } diff --git a/backend/src/main/java/com/magistr/app/config/auth/JwtSecurityStartupValidator.java b/backend/src/main/java/com/magistr/app/config/auth/JwtSecurityStartupValidator.java new file mode 100644 index 0000000..07900b5 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/auth/JwtSecurityStartupValidator.java @@ -0,0 +1,24 @@ +package com.magistr.app.config.auth; + +import jakarta.annotation.PostConstruct; +import org.springframework.core.env.Environment; +import org.springframework.core.env.Profiles; +import org.springframework.stereotype.Component; + +@Component +public class JwtSecurityStartupValidator { + + private final JwtProperties properties; + private final Environment environment; + + public JwtSecurityStartupValidator(JwtProperties properties, Environment environment) { + this.properties = properties; + this.environment = environment; + } + + @PostConstruct + void validate() { + boolean production = environment.acceptsProfiles(Profiles.of("prod", "production")); + properties.validateForEnvironment(production); + } +} diff --git a/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java b/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java index e4dff9e..044b461 100644 --- a/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java +++ b/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java @@ -55,7 +55,7 @@ public class RefreshTokenService { LocalDateTime now = LocalDateTime.now(); String currentHash = hashToken(rawToken); - Optional storedOpt = repository.findByTokenHash(currentHash); + Optional storedOpt = repository.findByTokenHashForUpdate(currentHash); if (storedOpt.isEmpty()) { return Optional.empty(); } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java b/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java deleted file mode 100755 index a69042e..0000000 --- a/backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.magistr.app.config.tenant; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; - -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; -import java.nio.file.Files; -import java.nio.file.Path; -import java.security.SecureRandom; -import java.security.cert.X509Certificate; -import java.util.List; -import java.util.Map; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -/** - * Обновляет K8s ConfigMap tenants-config через Kubernetes REST API. - * - * Работает ТОЛЬКО внутри K8s пода (использует ServiceAccount token). - * При запуске вне K8s (локальная разработка) — просто логирует предупреждение. - */ -@Service -public class ConfigMapUpdater { - - private static final Logger log = LoggerFactory.getLogger(ConfigMapUpdater.class); - - private static final String TOKEN_PATH = "/var/run/secrets/kubernetes.io/serviceaccount/token"; - private static final String NAMESPACE_PATH = "/var/run/secrets/kubernetes.io/serviceaccount/namespace"; - private static final String K8S_API_BASE = "https://kubernetes.default.svc"; - private static final String CONFIGMAP_NAME = "tenants-config"; - - private final ObjectMapper objectMapper = new ObjectMapper(); - private final boolean runningInK8s; - - public ConfigMapUpdater() { - this.runningInK8s = Files.exists(Path.of(TOKEN_PATH)); - if (!runningInK8s) { - log.info("Приложение запущено вне K8s — обновление ConfigMap будет пропущено"); - } - } - - /** - * Обновляет ConfigMap tenants-config с новым списком тенантов. - * @return true если обновление успешно (или мы не в K8s) - */ - public boolean updateTenantsConfig(List tenants) { - if (!runningInK8s) { - log.warn("Приложение запущено вне K8s, пропускаем обновление ConfigMap"); - return true; - } - - try { - String token = Files.readString(Path.of(TOKEN_PATH)).trim(); - String namespace = Files.readString(Path.of(NAMESPACE_PATH)).trim(); - - // Формируем JSON для тенантов - String tenantsJson = objectMapper.writerWithDefaultPrettyPrinter() - .writeValueAsString(tenants); - - // Strategic merge patch для ConfigMap - String patchBody = objectMapper.writeValueAsString(Map.of( - "data", Map.of("tenants.json", tenantsJson) - )); - - String url = String.format("%s/api/v1/namespaces/%s/configmaps/%s", - K8S_API_BASE, namespace, CONFIGMAP_NAME); - - // Создаём HttpClient с отключённой проверкой сертификатов - // (внутри кластера используется self-signed CA) - HttpClient client = createInsecureClient(); - - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(url)) - .header("Authorization", "Bearer " + token) - .header("Content-Type", "application/strategic-merge-patch+json") - .method("PATCH", HttpRequest.BodyPublishers.ofString(patchBody)) - .build(); - - HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); - - if (response.statusCode() == 200) { - log.info("ConfigMap '{}' успешно обновлён, тенантов: {}", CONFIGMAP_NAME, tenants.size()); - return true; - } else { - log.error("Не удалось обновить ConfigMap: HTTP {} — {}", response.statusCode(), response.body()); - return false; - } - - } catch (Exception e) { - log.error("Ошибка при обновлении ConfigMap: {}", e.getMessage()); - return false; - } - } - - /** - * Создаёт HttpClient, который доверяет self-signed сертификатам K8s API. - */ - private HttpClient createInsecureClient() { - try { - TrustManager[] trustAll = new TrustManager[]{ - new X509TrustManager() { - public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } - public void checkClientTrusted(X509Certificate[] certs, String authType) {} - public void checkServerTrusted(X509Certificate[] certs, String authType) {} - } - }; - - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(null, trustAll, new SecureRandom()); - - return HttpClient.newBuilder() - .sslContext(sslContext) - .build(); - } catch (Exception e) { - log.warn("Не удалось создать клиент без проверки сертификата, используем стандартный: {}", e.getMessage()); - return HttpClient.newHttpClient(); - } - } -} diff --git a/backend/src/main/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdater.java b/backend/src/main/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdater.java new file mode 100644 index 0000000..0a6cf61 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdater.java @@ -0,0 +1,178 @@ +package com.magistr.app.config.tenant; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLParameters; +import javax.net.ssl.TrustManagerFactory; +import java.io.InputStream; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.security.KeyStore; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; +import java.util.Base64; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * Обновляет Kubernetes Secret с конфигурацией тенантов через Kubernetes REST API. + * + *

Работает только внутри Kubernetes pod и использует service-account token и + * service-account CA. В локальной разработке персистенция пропускается.

+ */ +@Service +public class KubernetesTenantSecretUpdater { + + private static final Logger log = LoggerFactory.getLogger(KubernetesTenantSecretUpdater.class); + + private static final Path DEFAULT_TOKEN_PATH = + Path.of("/var/run/secrets/kubernetes.io/serviceaccount/token"); + private static final Path DEFAULT_NAMESPACE_PATH = + Path.of("/var/run/secrets/kubernetes.io/serviceaccount/namespace"); + private static final Path DEFAULT_CA_PATH = + Path.of("/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"); + private static final String DEFAULT_API_BASE = "https://kubernetes.default.svc"; + private static final String DEFAULT_SECRET_NAME = "tenants-secret"; + + private final ObjectMapper objectMapper; + private final Path tokenPath; + private final Path namespacePath; + private final Path caPath; + private final String apiBase; + private final String secretName; + private final boolean runningInKubernetes; + + public KubernetesTenantSecretUpdater() { + this( + DEFAULT_TOKEN_PATH, + DEFAULT_NAMESPACE_PATH, + DEFAULT_CA_PATH, + DEFAULT_API_BASE, + DEFAULT_SECRET_NAME, + new ObjectMapper() + ); + } + + KubernetesTenantSecretUpdater(Path tokenPath, + Path namespacePath, + Path caPath, + String apiBase, + String secretName, + ObjectMapper objectMapper) { + this.tokenPath = tokenPath; + this.namespacePath = namespacePath; + this.caPath = caPath; + this.apiBase = apiBase.endsWith("/") ? apiBase.substring(0, apiBase.length() - 1) : apiBase; + this.secretName = secretName; + this.objectMapper = objectMapper; + this.runningInKubernetes = Files.exists(tokenPath); + + if (!runningInKubernetes) { + log.info("Приложение запущено вне Kubernetes — обновление tenant Secret будет пропущено"); + } + } + + /** + * Сохраняет полный список тенантов в ключе {@code tenants.json} Kubernetes Secret. + * + * @return {@code true}, если Secret обновлён или приложение запущено вне Kubernetes + */ + public boolean updateTenantsConfig(List tenants) { + if (!runningInKubernetes) { + log.warn("Приложение запущено вне Kubernetes, персистенция tenant Secret пропущена"); + return true; + } + + try { + String token = Files.readString(tokenPath).trim(); + String namespace = Files.readString(namespacePath).trim(); + if (token.isBlank() || namespace.isBlank()) { + throw new IllegalStateException("ServiceAccount token или namespace не настроены"); + } + + String tenantsJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(tenants); + String encodedTenants = Base64.getEncoder() + .encodeToString(tenantsJson.getBytes(StandardCharsets.UTF_8)); + String patchBody = objectMapper.writeValueAsString(Map.of( + "data", Map.of("tenants.json", encodedTenants) + )); + + URI uri = URI.create(String.format( + "%s/api/v1/namespaces/%s/secrets/%s", + apiBase, + namespace, + secretName + )); + HttpRequest request = HttpRequest.newBuilder() + .uri(uri) + .header("Authorization", "Bearer " + token) + .header("Content-Type", "application/strategic-merge-patch+json") + .method("PATCH", HttpRequest.BodyPublishers.ofString(patchBody)) + .build(); + + HttpResponse response = createSecureClient(caPath) + .send(request, HttpResponse.BodyHandlers.discarding()); + if (response.statusCode() == 200) { + log.info("Tenant Secret успешно обновлён: tenantCount={}", tenants.size()); + return true; + } + + log.error("Kubernetes API отклонил обновление tenant Secret: httpStatus={}", response.statusCode()); + return false; + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.error("Обновление tenant Secret прервано"); + log.debug("Технические детали прерывания tenant Secret", e); + return false; + } catch (Exception e) { + log.error("Не удалось безопасно обновить tenant Secret: errorType={}", + e.getClass().getSimpleName()); + log.debug("Технические детали ошибки tenant Secret", e); + return false; + } + } + + HttpClient createSecureClient(Path serviceAccountCaPath) throws Exception { + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + Collection certificates; + try (InputStream input = Files.newInputStream(serviceAccountCaPath)) { + certificates = certificateFactory.generateCertificates(input); + } + if (certificates.isEmpty()) { + throw new IllegalStateException("ServiceAccount CA не содержит сертификатов"); + } + + KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); + trustStore.load(null, null); + int index = 0; + for (Certificate certificate : certificates) { + trustStore.setCertificateEntry("kubernetes-ca-" + index++, certificate); + } + + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance( + TrustManagerFactory.getDefaultAlgorithm() + ); + trustManagerFactory.init(trustStore); + + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, trustManagerFactory.getTrustManagers(), null); + + SSLParameters sslParameters = new SSLParameters(); + sslParameters.setEndpointIdentificationAlgorithm("HTTPS"); + + return HttpClient.newBuilder() + .sslContext(sslContext) + .sslParameters(sslParameters) + .build(); + } +} diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java index e27fb62..a22539d 100755 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java @@ -2,25 +2,23 @@ package com.magistr.app.config.tenant; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.magistr.app.service.TenantLifecycleService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.io.ClassPathResource; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import javax.sql.DataSource; import java.io.File; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.HexFormat; -import java.util.*; -import java.util.stream.Collectors; +import java.util.List; /** - * Периодически перечитывает tenants.json (mounted ConfigMap). - * Если ConfigMap был обновлён через K8s API, этот компонент + * Периодически перечитывает tenants.json (mounted Secret). + * Если Secret был обновлён через K8s API, этот компонент * подхватит изменения и синхронизирует in-memory datasource'ы. * * Также отвечает за инициализацию БД (init.sql) для новых тенантов. @@ -30,8 +28,7 @@ public class TenantConfigWatcher { private static final Logger log = LoggerFactory.getLogger(TenantConfigWatcher.class); - private final TenantRoutingDataSource routingDataSource; - private final DataSource dataSource; + private final TenantLifecycleService tenantLifecycleService; private final ObjectMapper objectMapper = new ObjectMapper(); @Value("${app.tenants.config-path:tenants.json}") @@ -40,9 +37,8 @@ public class TenantConfigWatcher { // Хеш последнего прочитанного конфига — чтобы не перезагружать зря private String lastConfigHash = ""; - public TenantConfigWatcher(TenantRoutingDataSource routingDataSource, DataSource dataSource) { - this.routingDataSource = routingDataSource; - this.dataSource = dataSource; + public TenantConfigWatcher(TenantLifecycleService tenantLifecycleService) { + this.tenantLifecycleService = tenantLifecycleService; } /** @@ -50,6 +46,10 @@ public class TenantConfigWatcher { */ @Scheduled(fixedDelay = 30_000, initialDelay = 30_000) public void watchForChanges() { + tenantLifecycleService.executeSerialized(this::watchForChangesSerialized); + } + + private void watchForChangesSerialized() { try { File file = new File(tenantsConfigPath); if (!file.exists()) return; @@ -62,20 +62,24 @@ public class TenantConfigWatcher { } log.info("Обнаружено изменение tenants.json (хеш: {} -> {}), перечитываем конфиг", lastConfigHash, hash); - lastConfigHash = hash; - List newTenants = objectMapper.readValue(content, new TypeReference<>() {}); syncTenants(newTenants); + lastConfigHash = hash; } catch (Exception e) { - log.error("Ошибка при проверке конфига тенантов: {}", e.getMessage()); + log.error("Ошибка при проверке конфига тенантов: errorType={}", e.getClass().getSimpleName()); + log.debug("Технические детали синхронизации конфига тенантов", e); } } /** - * Обновляет хеш конфига (вызывается после ручного обновления ConfigMap с этого же пода). + * Обновляет хеш конфига после ручного обновления Secret с этого же пода. */ public void refreshHash() { + tenantLifecycleService.executeSerialized(this::refreshHashSerialized); + } + + private void refreshHashSerialized() { try { File file = new File(tenantsConfigPath); if (file.exists()) { @@ -83,7 +87,9 @@ public class TenantConfigWatcher { lastConfigHash = configHash(content); } } catch (Exception e) { - log.warn("Не удалось обновить хеш конфига тенантов: {}", e.getMessage()); + log.warn("Не удалось обновить хеш конфига тенантов: errorType={}", + e.getClass().getSimpleName()); + log.debug("Технические детали обновления хеша тенантов", e); } } @@ -100,63 +106,7 @@ public class TenantConfigWatcher { * Синхронизирует in-memory тенантов с конфигом из файла. */ private void syncTenants(List newTenants) { - Map current = routingDataSource.getTenantConfigs(); - Set newDomains = newTenants.stream() - .map(t -> t.getDomain().toLowerCase()) - .collect(Collectors.toSet()); - - // Добавить новые тенанты - for (TenantConfig tenant : newTenants) { - String domain = tenant.getDomain().toLowerCase(); - if (!current.containsKey(domain)) { - log.info("Добавляем нового тенанта '{}' из обновлённого ConfigMap", domain); - routingDataSource.addTenant(tenant); - // Инициализируем БД для нового тенанта - initDatabaseForTenant(tenant); - } - } - - // Удалить тенанты, которых больше нет в конфиге - for (String existingDomain : new ArrayList<>(current.keySet())) { - if (!newDomains.contains(existingDomain)) { - log.info("Удаляем тенанта '{}' — его больше нет в ConfigMap", existingDomain); - routingDataSource.removeTenant(existingDomain); - } - } + tenantLifecycleService.synchronizeFromPersistedConfig(newTenants); } - /** - * Выполняет миграции Flyway для конкретного тенанта пи подключении. - * Если БД уже существует, но история Flyway пуста — - * делает baseline (считает V1_init.sql уже выполненным). - */ - public void initDatabaseForTenant(TenantConfig tenant) { - String domain = tenant.getDomain(); - try { - TenantContext.setCurrentTenant(domain); - - log.info("[{}] Запускаем миграции Flyway", domain); - - // Получаем DataSource конкретно для этого тенанта - javax.sql.DataSource tenantDs = routingDataSource.getResolvedDataSources().get(domain); - if (tenantDs == null) { - // Если ещё не resolve'нулся (первый запуск), берём обёртку - tenantDs = dataSource; - } - - org.flywaydb.core.Flyway flyway = org.flywaydb.core.Flyway.configure() - .dataSource(tenantDs) - .baselineOnMigrate(true) - .baselineVersion("1") - .load(); - - flyway.migrate(); - log.info("[{}] Миграции Flyway успешно выполнены", domain); - - } catch (Exception e) { - log.error("[{}] Ошибка миграции Flyway: {}", domain, e.getMessage()); - } finally { - TenantContext.clear(); - } - } } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java index 16d9ff6..134cc03 100755 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java @@ -2,6 +2,8 @@ package com.magistr.app.config.tenant; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.magistr.app.service.TenantDatabaseMigrationService; +import com.zaxxer.hikari.HikariDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -17,6 +19,7 @@ import jakarta.persistence.EntityManagerFactory; import javax.sql.DataSource; import java.io.File; import java.io.IOException; +import java.sql.Connection; import java.util.*; /** @@ -45,7 +48,7 @@ public class TenantDataSourceConfig { @Bean @Primary - public DataSource dataSource() { + public DataSource dataSource(TenantDatabaseMigrationService migrationService) { TenantRoutingDataSource routingDataSource = new TenantRoutingDataSource(); // Загружаем тенантов из JSON (read-only ConfigMap mount) @@ -57,16 +60,12 @@ public class TenantDataSourceConfig { "Default", "default", defaultDbUrl, defaultDbUsername, defaultDbPassword ); tenants.add(defaultTenant); - log.info("No tenants config found, using default datasource: {}", defaultDbUrl); + log.info("Конфигурация тенантов отсутствует, используется default DataSource"); } // Регистрируем тенантов for (TenantConfig tenant : tenants) { - try { - routingDataSource.addTenant(tenant); - } catch (Exception e) { - log.error("Не удалось добавить тенанта '{}': {}", tenant.getDomain(), e.getMessage()); - } + registerPreparedTenant(routingDataSource, migrationService, tenant); } // Если всё ещё нет ни одного тенанта — H2 in-memory заглушка @@ -80,7 +79,9 @@ public class TenantDataSourceConfig { "jdbc:h2:mem:placeholder;DB_CLOSE_DELAY=-1", "sa", "" ); - routingDataSource.addTenant(h2Fallback); + if (!registerPreparedTenant(routingDataSource, migrationService, h2Fallback)) { + throw new IllegalStateException("Не удалось создать резервный H2 DataSource"); + } } return routingDataSource; @@ -120,18 +121,64 @@ public class TenantDataSourceConfig { private List loadTenantsFromFile() { File file = new File(tenantsConfigPath); if (!file.exists()) { - log.info("Tenants config file not found: {}", tenantsConfigPath); + log.info("Файл конфигурации тенантов не найден"); return new ArrayList<>(); } try { ObjectMapper mapper = new ObjectMapper(); List list = mapper.readValue(file, new TypeReference<>() {}); - log.info("Loaded {} tenant(s) from {}", list.size(), tenantsConfigPath); + log.info("Загружено конфигураций тенантов: {}", list.size()); return list; } catch (IOException e) { - log.error("Не удалось прочитать конфиг тенантов: {}", e.getMessage()); + log.error("Не удалось прочитать конфигурацию тенантов: errorType={}", + e.getClass().getSimpleName()); + log.debug("Технические детали чтения конфигурации тенантов", e); return new ArrayList<>(); } } + + private boolean registerPreparedTenant(TenantRoutingDataSource routingDataSource, + TenantDatabaseMigrationService migrationService, + TenantConfig tenant) { + HikariDataSource candidate = null; + boolean activated = false; + try { + candidate = routingDataSource.prepareTenantDataSource(tenant); + try (Connection connection = candidate.getConnection()) { + if (!connection.isValid(5)) { + throw new IllegalStateException("База данных не подтвердила готовность подключения"); + } + } + if (!tenant.getUrl().trim().startsWith("jdbc:h2:")) { + migrationService.migrate(candidate); + } + TenantRoutingDataSource.TenantState previous = routingDataSource.swapTenant(tenant, candidate); + activated = true; + closeDataSource(previous == null ? null : previous.dataSource()); + log.info("Tenant-БД '{}' проверена и активирована", tenant.getDomain()); + return true; + } catch (Exception startupFailure) { + log.error("Не удалось безопасно активировать tenant-БД '{}': errorType={}", + tenant.getDomain(), startupFailure.getClass().getSimpleName()); + log.debug("Технические детали startup lifecycle tenant-БД", startupFailure); + return false; + } finally { + if (!activated) { + closeDataSource(candidate); + } + } + } + + private void closeDataSource(DataSource dataSource) { + if (dataSource instanceof HikariDataSource hikariDataSource) { + try { + hikariDataSource.close(); + } catch (RuntimeException closeFailure) { + log.warn("Не удалось штатно закрыть startup Hikari pool: errorType={}", + closeFailure.getClass().getSimpleName()); + log.debug("Технические детали закрытия startup Hikari pool", closeFailure); + } + } + } } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java old mode 100755 new mode 100644 index ea152b0..d06ae19 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java @@ -8,143 +8,252 @@ import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; -import java.util.HashMap; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Locale; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; +import java.util.Objects; +import java.util.Optional; /** * DataSource, который переключается между БД разных тенантов. - * На каждый запрос determineCurrentLookupKey() возвращает текущий тенант из TenantContext. + * Runtime-состояние публикуется одним неизменяемым snapshot, поэтому запрос + * никогда не видит конфигурацию и DataSource из разных версий. */ public class TenantRoutingDataSource extends AbstractRoutingDataSource { private static final Logger log = LoggerFactory.getLogger(TenantRoutingDataSource.class); - private final Map tenantConfigs = new ConcurrentHashMap<>(); - private final Map dataSources = new ConcurrentHashMap<>(); - private boolean initialized = false; + private final Object lifecycleMonitor = new Object(); + private volatile Map tenantStates = Map.of(); public TenantRoutingDataSource() { - // Устанавливаем пустой map чтобы afterPropertiesSet не падал - setTargetDataSources(new HashMap<>()); + // Inherited lifecycle Spring требует initial target map. Runtime routing + // выполняется переопределённым determineTargetDataSource(). + setTargetDataSources(Map.of()); setLenientFallback(false); } @Override protected Object determineCurrentLookupKey() { - String tenant = TenantContext.getCurrentTenant(); + return determineLookupKey(tenantStates); + } - if (tenant == null) { - // Нет HTTP контекста (JPA init, background tasks) — берём первый доступный - if (!dataSources.isEmpty()) { - return dataSources.keySet().iterator().next().toString(); + @Override + protected DataSource determineTargetDataSource() { + Map snapshot = tenantStates; + String lookupKey = determineLookupKey(snapshot); + TenantState state = snapshot.get(lookupKey); + if (state == null || state.dataSource() == null) { + throw new IllegalStateException("Подключение для выбранного тенанта не настроено"); + } + return state.dataSource(); + } + + /** + * Создаёт Hikari pool, но не включает его в маршрутизацию. + */ + public HikariDataSource prepareTenantDataSource(TenantConfig config) { + TenantConfig normalized = normalizeConfig(config); + HikariDataSource dataSource = new HikariDataSource(); + dataSource.setJdbcUrl(normalized.getUrl()); + dataSource.setUsername(normalized.getUsername()); + dataSource.setPassword(normalized.getPassword()); + dataSource.setPoolName("tenant-" + normalized.getDomain() + "-candidate-" + + Integer.toUnsignedString(System.identityHashCode(dataSource))); + dataSource.setMaximumPoolSize(10); + dataSource.setMinimumIdle(2); + dataSource.setConnectionTimeout(10_000); + dataSource.setValidationTimeout(5_000); + dataSource.setIdleTimeout(300_000); + dataSource.setMaxLifetime(600_000); + dataSource.setInitializationFailTimeout(10_000); + return dataSource; + } + + /** + * Атомарно публикует подготовленный DataSource и возвращает прежнее состояние. + */ + public TenantState swapTenant(TenantConfig config, DataSource candidate) { + Objects.requireNonNull(candidate, "Подготовленный DataSource обязателен"); + TenantConfig normalized = normalizeConfig(config); + String domain = normalized.getDomain(); + + synchronized (lifecycleMonitor) { + Map current = tenantStates; + TenantState previous = copyState(current.get(domain)); + Map updated = new LinkedHashMap<>(current); + updated.put(domain, new TenantState(domain, normalized, candidate)); + tenantStates = immutableStates(updated); + return previous; + } + } + + /** + * Атомарно исключает тенанта из маршрутизации, но не закрывает возвращённый DataSource. + */ + public TenantState removeTenantAtomically(String domain) { + String normalizedDomain = normalizeDomain(domain); + synchronized (lifecycleMonitor) { + Map current = tenantStates; + TenantState previous = current.get(normalizedDomain); + if (previous == null) { + return null; } - return "default"; + Map updated = new LinkedHashMap<>(current); + updated.remove(normalizedDomain); + tenantStates = immutableStates(updated); + return copyState(previous); } - - // HTTP запрос — возвращаем точный ключ тенанта - // Если тенанта нет — TenantInterceptor уже вернул 404 - return tenant; } - /** - * Добавляет тенант и создаёт для него HikariCP пул. - */ - public void addTenant(TenantConfig config) { - String domain = config.getDomain().toLowerCase(); - HikariDataSource ds = createDataSource(config); - - dataSources.put(domain, ds); - tenantConfigs.put(domain, config); - - // Обновляем target data sources - setTargetDataSources(dataSources); - afterPropertiesSet(); - initialized = true; - - log.info("Added tenant '{}' -> {}", domain, config.getUrl()); - } - - /** - * Удаляет тенант и закрывает его пул соединений. - */ - public void removeTenant(String domain) { - domain = domain.toLowerCase(); - Object removed = dataSources.remove(domain); - tenantConfigs.remove(domain); - - if (removed instanceof HikariDataSource ds) { - ds.close(); - log.info("Removed and closed tenant '{}'", domain); + public Optional snapshotTenant(String domain) { + if (domain == null || domain.isBlank()) { + return Optional.empty(); } + return Optional.ofNullable(copyState(tenantStates.get(normalizeDomain(domain)))); + } - setTargetDataSources(dataSources); - afterPropertiesSet(); + public Map snapshotTenantConfigs() { + Map snapshot = tenantStates; + Map configs = new LinkedHashMap<>(); + snapshot.forEach((domain, state) -> configs.put(domain, copyConfig(state.config()))); + return Collections.unmodifiableMap(configs); + } + + public Optional getTenantDataSource(String domain) { + if (domain == null || domain.isBlank()) { + return Optional.empty(); + } + TenantState state = tenantStates.get(normalizeDomain(domain)); + return state == null ? Optional.empty() : Optional.of(state.dataSource()); } /** - * Проверяет подключение к БД для указанного тенанта. + * Проверяет подключение к БД для зарегистрированного тенанта. */ public boolean testConnection(String domain) { - DataSource ds = (DataSource) dataSources.get(domain.toLowerCase()); - if (ds == null) return false; + Optional tenantDataSource = getTenantDataSource(domain); + if (tenantDataSource.isEmpty()) { + return false; + } - try (Connection conn = ds.getConnection()) { - return conn.isValid(5); + try (Connection connection = tenantDataSource.get().getConnection()) { + return connection.isValid(5); } catch (SQLException e) { - log.warn("Connection test failed for tenant '{}': {}", domain, e.getMessage()); + log.warn("Проверка подключения тенанта '{}' завершилась ошибкой: errorType={}", + normalizeDomain(domain), e.getClass().getSimpleName()); + log.debug("Технические детали проверки подключения тенанта", e); return false; } } /** - * Тестирует подключение по произвольным параметрам (без регистрации тенанта). + * Тестирует подключение по произвольным параметрам без регистрации тенанта. */ public String testExternalConnection(String url, String username, String password) { - HikariDataSource ds = new HikariDataSource(); - ds.setJdbcUrl(url); - ds.setUsername(username); - ds.setPassword(password); - ds.setMaximumPoolSize(1); - ds.setConnectionTimeout(5000); + HikariDataSource dataSource = new HikariDataSource(); + dataSource.setJdbcUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + dataSource.setMaximumPoolSize(1); + dataSource.setConnectionTimeout(5_000); - try (Connection conn = ds.getConnection()) { - if (conn.isValid(5)) { + try (Connection connection = dataSource.getConnection()) { + if (connection.isValid(5)) { return "OK"; } return "Подключение не валидно"; } catch (Exception e) { - return e.getMessage(); + log.warn("Проверка внешнего подключения завершилась ошибкой: errorType={}", + e.getClass().getSimpleName()); + log.debug("Технические детали проверки внешнего подключения", e); + return "Не удалось подключиться к базе данных"; } finally { - ds.close(); + dataSource.close(); } } + /** + * Возвращает неизменяемый снимок конфигураций для совместимости существующих consumers. + */ public Map getTenantConfigs() { - return tenantConfigs; + return snapshotTenantConfigs(); } public boolean hasTenant(String domain) { - return tenantConfigs.containsKey(domain.toLowerCase()); + return domain != null && !domain.isBlank() && tenantStates.containsKey(normalizeDomain(domain)); } public boolean isInitialized() { - return initialized && !dataSources.isEmpty(); + return !tenantStates.isEmpty(); } - private HikariDataSource createDataSource(TenantConfig config) { - HikariDataSource ds = new HikariDataSource(); - ds.setJdbcUrl(config.getUrl()); - ds.setUsername(config.getUsername()); - ds.setPassword(config.getPassword()); - ds.setPoolName("tenant-" + config.getDomain()); - ds.setMaximumPoolSize(10); - ds.setMinimumIdle(2); - ds.setConnectionTimeout(10000); - ds.setIdleTimeout(300000); - ds.setMaxLifetime(600000); - // Не падать при инициализации если БД недоступна - ds.setInitializationFailTimeout(-1); - return ds; + private String determineLookupKey(Map snapshot) { + String tenant = TenantContext.getCurrentTenant(); + if (tenant != null) { + return tenant; + } + return snapshot.isEmpty() ? "default" : snapshot.keySet().iterator().next(); + } + + private Map immutableStates(Map source) { + Map copy = new LinkedHashMap<>(); + source.forEach((domain, state) -> copy.put(domain, new TenantState( + domain, + copyConfig(state.config()), + state.dataSource() + ))); + return Collections.unmodifiableMap(copy); + } + + private TenantState copyState(TenantState state) { + if (state == null) { + return null; + } + return new TenantState(state.domain(), copyConfig(state.config()), state.dataSource()); + } + + private TenantConfig normalizeConfig(TenantConfig config) { + if (config == null) { + throw new IllegalArgumentException("Конфигурация тенанта обязательна"); + } + String domain = normalizeDomain(config.getDomain()); + if (config.getUrl() == null || config.getUrl().isBlank()) { + throw new IllegalArgumentException("URL базы данных не может быть пустым"); + } + String name = config.getName() == null || config.getName().isBlank() + ? domain + : config.getName().trim(); + return new TenantConfig( + name, + domain, + config.getUrl().trim(), + config.getUsername(), + config.getPassword() + ); + } + + private TenantConfig copyConfig(TenantConfig config) { + if (config == null) { + return null; + } + return new TenantConfig( + config.getName(), + config.getDomain(), + config.getUrl(), + config.getUsername(), + config.getPassword() + ); + } + + private String normalizeDomain(String domain) { + if (domain == null || domain.isBlank()) { + throw new IllegalArgumentException("Домен не может быть пустым"); + } + return domain.trim().toLowerCase(Locale.ROOT); + } + + public record TenantState(String domain, TenantConfig config, DataSource dataSource) { } } diff --git a/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java b/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java index 97d624f..7f5a460 100644 --- a/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java +++ b/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java @@ -4,6 +4,7 @@ import com.magistr.app.config.auth.RequireRoles; import com.magistr.app.dto.*; import com.magistr.app.model.*; import com.magistr.app.repository.*; +import com.magistr.app.service.AcademicCalendarGridService; import com.magistr.app.service.ScheduleGeneratorService; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; @@ -23,34 +24,34 @@ public class AcademicCalendarController { private final AcademicCalendarRepository calendarRepository; private final AcademicCalendarDayRepository calendarDayRepository; - private final AcademicCalendarActivityTypeRepository activityTypeRepository; private final AcademicYearRepository academicYearRepository; private final SpecialtiesRepository specialtiesRepository; private final SpecialtyProfileRepository profileRepository; private final EducationFormRepository educationFormRepository; private final SubjectRepository subjectRepository; private final AcademicCalendarSubjectRepository calendarSubjectRepository; + private final AcademicCalendarGridService calendarGridService; private final ScheduleGeneratorService scheduleGeneratorService; public AcademicCalendarController(AcademicCalendarRepository calendarRepository, AcademicCalendarDayRepository calendarDayRepository, - AcademicCalendarActivityTypeRepository activityTypeRepository, AcademicYearRepository academicYearRepository, SpecialtiesRepository specialtiesRepository, SpecialtyProfileRepository profileRepository, EducationFormRepository educationFormRepository, SubjectRepository subjectRepository, AcademicCalendarSubjectRepository calendarSubjectRepository, + AcademicCalendarGridService calendarGridService, ScheduleGeneratorService scheduleGeneratorService) { this.calendarRepository = calendarRepository; this.calendarDayRepository = calendarDayRepository; - this.activityTypeRepository = activityTypeRepository; this.academicYearRepository = academicYearRepository; this.specialtiesRepository = specialtiesRepository; this.profileRepository = profileRepository; this.educationFormRepository = educationFormRepository; this.subjectRepository = subjectRepository; this.calendarSubjectRepository = calendarSubjectRepository; + this.calendarGridService = calendarGridService; this.scheduleGeneratorService = scheduleGeneratorService; } @@ -123,27 +124,10 @@ public class AcademicCalendarController { } @PutMapping("/{id}/grid") - @Transactional - public ResponseEntity saveGrid(@PathVariable Long id, @RequestBody List rows) { - AcademicCalendar calendar = calendarRepository.findByIdWithDetails(id).orElse(null); - if (calendar == null) { - return ResponseEntity.notFound().build(); - } - if (rows == null || rows.isEmpty()) { - return ResponseEntity.badRequest().body(Map.of("message", "Передайте хотя бы одну ячейку графика")); - } - - try { - calendarDayRepository.deleteByCalendarId(id); - for (AcademicCalendarGridDayDto row : rows) { - AcademicCalendarDay day = buildGridDay(calendar, row); - calendarDayRepository.save(day); - } - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(Map.of("message", "Календарный учебный график сохранён")); - } catch (IllegalArgumentException e) { - return ResponseEntity.badRequest().body(Map.of("message", e.getMessage())); - } + public ResponseEntity saveGrid(@PathVariable("id") Long id, + @RequestBody List rows) { + calendarGridService.replaceGrid(id, rows); + return ResponseEntity.ok(Map.of("message", "Календарный учебный график сохранён")); } @GetMapping("/{id}/subjects") @@ -213,44 +197,6 @@ public class AcademicCalendarController { calendar.setCourseCount(request.courseCount()); } - private AcademicCalendarDay buildGridDay(AcademicCalendar calendar, AcademicCalendarGridDayDto row) { - if (row.courseNumber() == null || row.courseNumber() <= 0 - || row.date() == null - || row.weekNumber() == null || row.weekNumber() <= 0 - || row.dayOfWeek() == null || row.dayOfWeek() < 1 || row.dayOfWeek() > 7) { - throw new IllegalArgumentException("Курс, дата, неделя и день недели обязательны"); - } - if (row.date().isBefore(calendar.getAcademicYear().getStartDate()) - || row.date().isAfter(calendar.getAcademicYear().getEndDate())) { - throw new IllegalArgumentException("Дата выходит за пределы учебного года"); - } - if (row.courseNumber() > calendar.getCourseCount()) { - throw new IllegalArgumentException("Номер курса выходит за пределы графика"); - } - - AcademicCalendarActivityType activityType = resolveActivityType(row); - AcademicCalendarDay day = new AcademicCalendarDay(); - day.setAcademicCalendar(calendar); - day.setCourseNumber(row.courseNumber()); - day.setDate(row.date()); - day.setWeekNumber(row.weekNumber()); - day.setDayOfWeek(row.dayOfWeek()); - day.setActivityType(activityType); - return day; - } - - private AcademicCalendarActivityType resolveActivityType(AcademicCalendarGridDayDto row) { - if (row.activityTypeId() != null) { - return activityTypeRepository.findById(row.activityTypeId()) - .orElseThrow(() -> new IllegalArgumentException("Код активности не найден")); - } - if (row.activityCode() != null && !row.activityCode().isBlank()) { - return activityTypeRepository.findByCode(row.activityCode().trim()) - .orElseThrow(() -> new IllegalArgumentException("Код активности не найден")); - } - throw new IllegalArgumentException("Код активности обязателен"); - } - private void replaceCalendarSubjects(AcademicCalendar calendar, List rows) { if (rows.size() > 1000) { throw new IllegalArgumentException("Слишком много дисциплин для одного графика"); diff --git a/backend/src/main/java/com/magistr/app/controller/DatabaseController.java b/backend/src/main/java/com/magistr/app/controller/DatabaseController.java index 27e2173..48ecbc1 100755 --- a/backend/src/main/java/com/magistr/app/controller/DatabaseController.java +++ b/backend/src/main/java/com/magistr/app/controller/DatabaseController.java @@ -1,12 +1,14 @@ package com.magistr.app.controller; import com.magistr.app.config.auth.RequireRoles; -import com.magistr.app.config.tenant.ConfigMapUpdater; import com.magistr.app.config.tenant.TenantConfig; import com.magistr.app.config.tenant.TenantConfigWatcher; import com.magistr.app.config.tenant.TenantContext; import com.magistr.app.config.tenant.TenantRoutingDataSource; import com.magistr.app.model.Role; +import com.magistr.app.service.TenantLifecycleException; +import com.magistr.app.service.TenantLifecycleService; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -14,15 +16,14 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; /** * API управления подключениями к базам данных (тенантами). * Доступно только для ADMIN. * - * При добавлении/удалении тенанта: - * 1. Обновляется in-memory DataSource (мгновенно на этом поде) - * 2. Обновляется K8s ConfigMap (через ConfigMapUpdater) - * 3. Другие поды подхватят изменения через TenantConfigWatcher (~30 сек) + * Изменения проходят безопасный lifecycle: подготовка и миграция временного + * пула, сохранение desired-конфигурации и только затем локальная активация. */ @RestController @RequestMapping("/api/database") @@ -30,15 +31,15 @@ import java.util.Map; public class DatabaseController { private final TenantRoutingDataSource routingDataSource; - private final ConfigMapUpdater configMapUpdater; - private final TenantConfigWatcher configWatcher; + private final TenantLifecycleService tenantLifecycleService; + private final TenantConfigWatcher tenantConfigWatcher; public DatabaseController(TenantRoutingDataSource routingDataSource, - ConfigMapUpdater configMapUpdater, - TenantConfigWatcher configWatcher) { + TenantLifecycleService tenantLifecycleService, + TenantConfigWatcher tenantConfigWatcher) { this.routingDataSource = routingDataSource; - this.configMapUpdater = configMapUpdater; - this.configWatcher = configWatcher; + this.tenantLifecycleService = tenantLifecycleService; + this.tenantConfigWatcher = tenantConfigWatcher; } /** @@ -87,41 +88,19 @@ public class DatabaseController { */ @PostMapping("/tenants") public ResponseEntity> addTenant(@RequestBody TenantConfig config) { - Map result = new HashMap<>(); - - if (config.getDomain() == null || config.getDomain().isBlank()) { - result.put("success", false); - result.put("message", "Домен не может быть пустым"); - return ResponseEntity.badRequest().body(result); - } - - if (config.getUrl() == null || config.getUrl().isBlank()) { - result.put("success", false); - result.put("message", "URL базы данных не может быть пустым"); - return ResponseEntity.badRequest().body(result); - } - - if (routingDataSource.hasTenant(config.getDomain())) { - routingDataSource.removeTenant(config.getDomain()); - } - try { - // 1. Добавить в in-memory (мгновенно на этом поде) - routingDataSource.addTenant(config); - - // 2. Инициализировать БД (init.sql) если нужно - configWatcher.initDatabaseForTenant(config); - - // 3. Обновить K8s ConfigMap (другие поды подхватят через ~30 сек) - persistToConfigMap(); - - result.put("success", true); - result.put("message", "Тенант '" + config.getDomain() + "' добавлен"); - return ResponseEntity.ok(result); - } catch (Exception e) { - result.put("success", false); - result.put("message", "Ошибка: " + e.getMessage()); - return ResponseEntity.internalServerError().body(result); + return tenantLifecycleService.executeSerialized(() -> { + TenantConfig saved = tenantLifecycleService.addOrUpdateTenant(config); + tenantConfigWatcher.refreshHash(); + Map result = new HashMap<>(); + result.put("success", true); + result.put("message", "Тенант '" + saved.getDomain() + "' добавлен"); + return ResponseEntity.ok(result); + }); + } catch (IllegalArgumentException validationFailure) { + return lifecycleError(HttpStatus.BAD_REQUEST, validationFailure.getMessage()); + } catch (TenantLifecycleException lifecycleFailure) { + return lifecycleError(HttpStatus.SERVICE_UNAVAILABLE, lifecycleFailure.getMessage()); } } @@ -129,21 +108,23 @@ public class DatabaseController { * Удалить тенант. */ @DeleteMapping("/tenants/{domain}") - public ResponseEntity> removeTenant(@PathVariable String domain) { - Map result = new HashMap<>(); - - if (!routingDataSource.hasTenant(domain)) { - result.put("success", false); - result.put("message", "Тенант '" + domain + "' не найден"); - return ResponseEntity.status(404).body(result); + public ResponseEntity> removeTenant(@PathVariable("domain") String domain) { + try { + return tenantLifecycleService.executeSerialized(() -> { + TenantConfig removed = tenantLifecycleService.removeTenant(domain); + tenantConfigWatcher.refreshHash(); + Map result = new HashMap<>(); + result.put("success", true); + result.put("message", "Тенант '" + removed.getDomain() + "' удалён"); + return ResponseEntity.ok(result); + }); + } catch (NoSuchElementException notFound) { + return lifecycleError(HttpStatus.NOT_FOUND, notFound.getMessage()); + } catch (IllegalArgumentException validationFailure) { + return lifecycleError(HttpStatus.BAD_REQUEST, validationFailure.getMessage()); + } catch (TenantLifecycleException lifecycleFailure) { + return lifecycleError(HttpStatus.SERVICE_UNAVAILABLE, lifecycleFailure.getMessage()); } - - routingDataSource.removeTenant(domain); - persistToConfigMap(); - - result.put("success", true); - result.put("message", "Тенант '" + domain + "' удалён"); - return ResponseEntity.ok(result); } /** @@ -171,14 +152,10 @@ public class DatabaseController { return ResponseEntity.ok(result); } - /** - * Сохраняет текущий список тенантов в K8s ConfigMap. - */ - private void persistToConfigMap() { - List tenants = new ArrayList<>(routingDataSource.getTenantConfigs().values()); - boolean ok = configMapUpdater.updateTenantsConfig(tenants); - if (ok) { - configWatcher.refreshHash(); // Чтобы watcher не перезагрузил те же данные - } + private ResponseEntity> lifecycleError(HttpStatus status, String message) { + Map result = new HashMap<>(); + result.put("success", false); + result.put("message", message); + return ResponseEntity.status(status).body(result); } } diff --git a/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java b/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java index 5b459d5..2886f48 100644 --- a/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java +++ b/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java @@ -1,5 +1,6 @@ package com.magistr.app.controller; +import com.magistr.app.service.ScheduleConflictException; import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +21,15 @@ public class GlobalExceptionHandler { private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); + @ExceptionHandler(ScheduleConflictException.class) + public ResponseEntity> handleScheduleConflict(ScheduleConflictException exception, + HttpServletRequest request) { + String message = exception.getMessage() == null || exception.getMessage().isBlank() + ? "Изменение создаёт конфликт расписания" + : exception.getMessage(); + return error(HttpStatus.CONFLICT, message, request); + } + @ExceptionHandler(IllegalArgumentException.class) public ResponseEntity> handleIllegalArgument(IllegalArgumentException exception, HttpServletRequest request) { @@ -68,6 +78,7 @@ public class GlobalExceptionHandler { private String reason(HttpStatus status) { return switch (status) { case BAD_REQUEST -> "Некорректный запрос"; + case CONFLICT -> "Конфликт"; case NOT_FOUND -> "Не найдено"; case INTERNAL_SERVER_ERROR -> "Внутренняя ошибка сервера"; default -> status.name(); diff --git a/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java b/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java index 12c2f78..0500e88 100644 --- a/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java +++ b/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java @@ -1,11 +1,9 @@ package com.magistr.app.controller; -import com.magistr.app.config.auth.AuthContext; import com.magistr.app.config.auth.RequireRoles; import com.magistr.app.dto.ScheduleOverrideDto; -import com.magistr.app.model.*; -import com.magistr.app.repository.*; -import com.magistr.app.service.ScheduleGeneratorService; +import com.magistr.app.model.Role; +import com.magistr.app.service.ScheduleOverrideService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -17,132 +15,30 @@ import java.util.Map; @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) public class ScheduleOverrideController { - private final ScheduleOverrideRepository scheduleOverrideRepository; - private final ScheduleRuleSlotRepository scheduleRuleSlotRepository; - private final TimeSlotRepository timeSlotRepository; - private final ClassroomRepository classroomRepository; - private final UserRepository userRepository; - private final ScheduleGeneratorService scheduleGeneratorService; + private final ScheduleOverrideService scheduleOverrideService; - public ScheduleOverrideController(ScheduleOverrideRepository scheduleOverrideRepository, - ScheduleRuleSlotRepository scheduleRuleSlotRepository, - TimeSlotRepository timeSlotRepository, - ClassroomRepository classroomRepository, - UserRepository userRepository, - ScheduleGeneratorService scheduleGeneratorService) { - this.scheduleOverrideRepository = scheduleOverrideRepository; - this.scheduleRuleSlotRepository = scheduleRuleSlotRepository; - this.timeSlotRepository = timeSlotRepository; - this.classroomRepository = classroomRepository; - this.userRepository = userRepository; - this.scheduleGeneratorService = scheduleGeneratorService; + public ScheduleOverrideController(ScheduleOverrideService scheduleOverrideService) { + this.scheduleOverrideService = scheduleOverrideService; } @GetMapping public List getAll() { - return scheduleOverrideRepository.findAll().stream() - .map(this::toDto) - .toList(); + return scheduleOverrideService.getAll(); } @PostMapping public ResponseEntity create(@RequestBody ScheduleOverrideDto request) { - return save(null, request); + return ResponseEntity.ok(scheduleOverrideService.create(request)); } @PutMapping("/{id}") public ResponseEntity update(@PathVariable Long id, @RequestBody ScheduleOverrideDto request) { - if (!scheduleOverrideRepository.existsById(id)) { - return ResponseEntity.notFound().build(); - } - return save(id, request); + return ResponseEntity.ok(scheduleOverrideService.update(id, request)); } @DeleteMapping("/{id}") public ResponseEntity delete(@PathVariable Long id) { - if (!scheduleOverrideRepository.existsById(id)) { - return ResponseEntity.notFound().build(); - } - scheduleOverrideRepository.deleteById(id); - scheduleGeneratorService.clearCache(); + scheduleOverrideService.delete(id); return ResponseEntity.ok(Map.of("message", "Точечное изменение расписания удалено")); } - - private ResponseEntity save(Long id, ScheduleOverrideDto request) { - String validationError = validate(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - - ScheduleOverride override = id == null - ? scheduleOverrideRepository - .findByBaseRuleSlotIdAndLessonDate(request.baseRuleSlotId(), request.lessonDate()) - .orElseGet(ScheduleOverride::new) - : scheduleOverrideRepository.findById(id).orElseGet(ScheduleOverride::new); - - override.setBaseRuleSlot(scheduleRuleSlotRepository.findById(request.baseRuleSlotId()).orElseThrow()); - override.setLessonDate(request.lessonDate()); - override.setAction(request.action()); - override.setNewTimeSlot(request.newTimeSlotId() == null ? null : timeSlotRepository.findById(request.newTimeSlotId()).orElse(null)); - override.setNewClassroom(request.newClassroomId() == null ? null : classroomRepository.findById(request.newClassroomId()).orElse(null)); - override.setNewTeacher(request.newTeacherId() == null ? null : userRepository.findById(request.newTeacherId()).orElse(null)); - override.setNewLessonFormat(clean(request.newLessonFormat())); - override.setComment(clean(request.comment())); - override.setCreatedBy(AuthContext.currentUserId()); - - ScheduleOverride saved = scheduleOverrideRepository.save(override); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(toDto(saved)); - } - - private String validate(ScheduleOverrideDto request) { - if (request == null) { - return "Передайте данные изменения расписания"; - } - if (request.baseRuleSlotId() == null || scheduleRuleSlotRepository.findById(request.baseRuleSlotId()).isEmpty()) { - return "Базовый слот расписания не найден"; - } - if (request.lessonDate() == null) { - return "Дата пары обязательна"; - } - if (request.action() == null || !List.of("MOVE", "CANCEL", "REPLACE").contains(request.action())) { - return "Недопустимое действие изменения расписания"; - } - if (request.newClassroomId() != null) { - Classroom classroom = classroomRepository.findById(request.newClassroomId()).orElse(null); - if (classroom == null || classroom.isArchivedRecord() || Boolean.FALSE.equals(classroom.getIsAvailable())) { - return "Активная аудитория не найдена"; - } - } - if (request.newTeacherId() != null) { - User teacher = userRepository.findById(request.newTeacherId()).orElse(null); - if (teacher == null || teacher.getRole() != Role.TEACHER || teacher.isArchivedRecord()) { - return "Активный преподаватель не найден"; - } - } - if (request.newTimeSlotId() != null && timeSlotRepository.findById(request.newTimeSlotId()).isEmpty()) { - return "Временной слот не найден"; - } - return null; - } - - private ScheduleOverrideDto toDto(ScheduleOverride override) { - return new ScheduleOverrideDto( - override.getId(), - override.getBaseRuleSlot().getId(), - override.getLessonDate(), - override.getAction(), - override.getNewTimeSlot() == null ? null : override.getNewTimeSlot().getId(), - override.getNewClassroom() == null ? null : override.getNewClassroom().getId(), - override.getNewTeacher() == null ? null : override.getNewTeacher().getId(), - override.getNewLessonFormat(), - override.getComment(), - override.getCreatedBy(), - override.getCreatedAt() - ); - } - - private String clean(String value) { - return value == null || value.isBlank() ? null : value.trim(); - } } diff --git a/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java b/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java index 346a7e4..224a7ea 100644 --- a/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java +++ b/backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java @@ -2,663 +2,79 @@ package com.magistr.app.controller; import com.magistr.app.config.auth.RequireRoles; import com.magistr.app.dto.ScheduleRuleDto; -import com.magistr.app.dto.ScheduleRuleSlotDto; -import com.magistr.app.model.*; -import com.magistr.app.repository.*; -import com.magistr.app.service.ScheduleGeneratorService; +import com.magistr.app.model.Role; +import com.magistr.app.service.ScheduleRuleConflictException; +import com.magistr.app.service.ScheduleRuleService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; -import java.time.DayOfWeek; -import java.time.temporal.ChronoUnit; -import java.util.*; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; @RestController @RequestMapping("/api/admin/schedule-rules") @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) public class ScheduleRuleAdminController { - private static final String APPLY_MODE_DEFAULT = "DEFAULT"; - private static final int ACADEMIC_HOURS_PER_SLOT = 2; - private static final Set VALID_SLOT_PARITIES = Set.of( - ScheduleParity.BOTH, - ScheduleParity.ODD, - ScheduleParity.EVEN - ); + private final ScheduleRuleService scheduleRuleService; - private final ScheduleRuleRepository scheduleRuleRepository; - private final SubjectRepository subjectRepository; - private final SemesterRepository semesterRepository; - private final GroupRepository groupRepository; - private final TimeSlotRepository timeSlotRepository; - private final UserRepository userRepository; - private final ClassroomRepository classroomRepository; - private final LessonTypesRepository lessonTypesRepository; - private final SubgroupRepository subgroupRepository; - private final ScheduleGeneratorService scheduleGeneratorService; - - public ScheduleRuleAdminController(ScheduleRuleRepository scheduleRuleRepository, - SubjectRepository subjectRepository, - SemesterRepository semesterRepository, - GroupRepository groupRepository, - TimeSlotRepository timeSlotRepository, - UserRepository userRepository, - ClassroomRepository classroomRepository, - LessonTypesRepository lessonTypesRepository, - SubgroupRepository subgroupRepository, - ScheduleGeneratorService scheduleGeneratorService) { - this.scheduleRuleRepository = scheduleRuleRepository; - this.subjectRepository = subjectRepository; - this.semesterRepository = semesterRepository; - this.groupRepository = groupRepository; - this.timeSlotRepository = timeSlotRepository; - this.userRepository = userRepository; - this.classroomRepository = classroomRepository; - this.lessonTypesRepository = lessonTypesRepository; - this.subgroupRepository = subgroupRepository; - this.scheduleGeneratorService = scheduleGeneratorService; + public ScheduleRuleAdminController(ScheduleRuleService scheduleRuleService) { + this.scheduleRuleService = scheduleRuleService; } @GetMapping - public List getAll(@RequestParam(required = false) Long semesterId, - @RequestParam(required = false) Long groupId) { - return scheduleRuleRepository.findAllWithDetails().stream() - .filter(rule -> semesterId == null || Objects.equals(rule.getSemester().getId(), semesterId)) - .filter(rule -> groupId == null || rule.getGroups().stream().anyMatch(group -> Objects.equals(group.getId(), groupId))) - .map(this::toDto) - .toList(); + public List getAll(@RequestParam(name = "semesterId", required = false) Long semesterId, + @RequestParam(name = "groupId", required = false) Long groupId) { + return scheduleRuleService.getAll(semesterId, groupId); } @GetMapping("/{id}") - public ResponseEntity getById(@PathVariable Long id) { - return scheduleRuleRepository.findByIdWithDetails(id) - .>map(rule -> ResponseEntity.ok(toDto(rule))) - .orElseGet(() -> ResponseEntity.notFound().build()); + public ResponseEntity getById(@PathVariable("id") Long id) { + return ResponseEntity.ok(scheduleRuleService.getById(id)); } @PostMapping - @Transactional public ResponseEntity create(@RequestBody ScheduleRuleDto request) { - String validationError = validateRule(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - try { - ScheduleRule rule = new ScheduleRule(); - applyRule(rule, request); - ScheduleRuleConflict conflict = findConflict(request, rule.getSlots(), null); - if (conflict != null) { - return conflictResponse(conflict); - } - ScheduleRule saved = scheduleRuleRepository.save(rule); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(toDto(saved)); - } catch (IllegalArgumentException e) { - return ResponseEntity.badRequest().body(Map.of("message", e.getMessage())); + return ResponseEntity.ok(scheduleRuleService.create(request)); + } catch (ScheduleRuleConflictException exception) { + return conflictResponse(exception); } } @PutMapping("/{id}") - @Transactional - public ResponseEntity update(@PathVariable Long id, @RequestBody ScheduleRuleDto request) { - ScheduleRule rule = scheduleRuleRepository.findByIdWithDetails(id).orElse(null); - if (rule == null) { - return ResponseEntity.notFound().build(); - } - - String validationError = validateRule(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - + public ResponseEntity update(@PathVariable("id") Long id, @RequestBody ScheduleRuleDto request) { try { - ScheduleRule candidate = new ScheduleRule(); - applyRule(candidate, request); - ScheduleRuleConflict conflict = findConflict(request, candidate.getSlots(), rule.getId()); - if (conflict != null) { - return conflictResponse(conflict); - } - applyRule(rule, request); - ScheduleRule saved = scheduleRuleRepository.save(rule); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(toDto(saved)); - } catch (IllegalArgumentException e) { - return ResponseEntity.badRequest().body(Map.of("message", e.getMessage())); + return ResponseEntity.ok(scheduleRuleService.update(id, request)); + } catch (ScheduleRuleConflictException exception) { + return conflictResponse(exception); } } @DeleteMapping("/{id}") - public ResponseEntity delete(@PathVariable Long id) { - ScheduleRule rule = scheduleRuleRepository.findById(id).orElse(null); - if (rule == null) { - return ResponseEntity.notFound().build(); - } - rule.setStatus(LifecycleEntity.STATUS_ARCHIVED); - scheduleRuleRepository.save(rule); - scheduleGeneratorService.clearCache(); + public ResponseEntity> delete(@PathVariable("id") Long id) { + scheduleRuleService.archive(id); return ResponseEntity.ok(Map.of("message", "Правило расписания архивировано")); } - private String validateRule(ScheduleRuleDto request) { - if (request.subjectId() == null) { - return "Дисциплина обязательна"; + private ResponseEntity> conflictResponse(ScheduleRuleConflictException exception) { + Map body = new LinkedHashMap<>(); + body.put("message", exception.getMessage()); + if (exception.getConflictRule() != null) { + body.put("conflictRule", exception.getConflictRule()); } - if (request.semesterId() == null) { - return "Семестр обязателен"; - } - String hoursValidationError = validateTypeHours(request); - if (hoursValidationError != null) { - return hoursValidationError; - } - if (request.groupIds() == null || request.groupIds().isEmpty()) { - return "Нужно выбрать хотя бы одну группу"; - } - if (request.slots() == null || request.slots().isEmpty()) { - return "Добавьте хотя бы один слот занятия"; - } - return null; - } - - private void applyRule(ScheduleRule rule, ScheduleRuleDto request) { - Subject subject = subjectRepository.findById(request.subjectId()) - .orElseThrow(() -> new IllegalArgumentException("Дисциплина не найдена")); - if (subject.isArchivedRecord()) { - throw new IllegalArgumentException("Архивную дисциплину нельзя использовать в новых правилах"); - } - Semester semester = semesterRepository.findById(request.semesterId()) - .orElseThrow(() -> new IllegalArgumentException("Семестр не найден")); - List groups = groupRepository.findAllById(request.groupIds()); - if (groups.size() != new HashSet<>(request.groupIds()).size()) { - throw new IllegalArgumentException("Одна или несколько групп не найдены"); - } - if (groups.stream().anyMatch(StudentGroup::isArchivedRecord)) { - throw new IllegalArgumentException("Архивные группы нельзя использовать в новых правилах"); - } - - rule.setSubject(subject); - rule.setSemester(semester); - rule.setLectureAcademicHours(request.lectureAcademicHours()); - rule.setLaboratoryAcademicHours(request.laboratoryAcademicHours()); - rule.setPracticeAcademicHours(request.practiceAcademicHours()); - rule.setLectureStartWeek(request.lectureStartWeek()); - rule.setLaboratoryStartWeek(request.laboratoryStartWeek()); - rule.setPracticeStartWeek(request.practiceStartWeek()); - rule.getGroups().clear(); - rule.getGroups().addAll(groups); - - List slots = new ArrayList<>(); - for (ScheduleRuleSlotDto slotDto : request.slots()) { - slots.add(buildSlot(rule, slotDto)); - } - validateTypeCoverage(rule, slots); - - rule.getSlots().clear(); - rule.getSlots().addAll(slots); - } - - private ResponseEntity conflictResponse(ScheduleRuleConflict conflict) { - return ResponseEntity.status(HttpStatus.CONFLICT).body(Map.of( - "message", "Невозможно сохранить правило: слот занят", - "conflictRule", toDto(conflict.rule()), - "conflictFields", conflict.fields().stream().toList(), - "conflictReasons", conflict.fields().stream().map(this::conflictFieldLabel).toList() - )); - } - - private String conflictFieldLabel(String field) { - return switch (field) { - case "teacher" -> "Преподаватель"; - case "classroom" -> "Аудитория"; - case "group" -> "Группа"; - default -> field; - }; - } - - private ScheduleRuleConflict findConflict(ScheduleRuleDto request, Collection newSlots, Long excludeRuleId) { - Map> newActiveWeeks = activeWeeksBySlot(newSlots); - return scheduleRuleRepository.findAllWithDetails().stream() - .filter(rule -> !Objects.equals(rule.getId(), excludeRuleId)) - .filter(rule -> rule.getSemester() != null && Objects.equals(rule.getSemester().getId(), request.semesterId())) - .map(rule -> toConflict(rule, newSlots, newActiveWeeks, rule.getSlots())) - .filter(Objects::nonNull) - .min(Comparator.comparing(conflict -> conflict.rule().getId())) - .orElse(null); - } - - private ScheduleRuleConflict toConflict(ScheduleRule existingRule, - Collection newSlots, - Map> newActiveWeeks, - Collection existingSlots) { - Map> existingActiveWeeks = activeWeeksBySlot(existingSlots); - LinkedHashSet fields = new LinkedHashSet<>(); - for (ScheduleRuleSlot newSlot : newSlots) { - for (ScheduleRuleSlot existingSlot : existingSlots) { - if (sameTimeSlot(newSlot, existingSlot) - && activeWeeksOverlap(newActiveWeeks.get(newSlot), existingActiveWeeks.get(existingSlot))) { - fields.addAll(conflictFields(newSlot, existingSlot)); - } - } - } - return fields.isEmpty() ? null : new ScheduleRuleConflict(existingRule, fields); - } - - private Set conflictFields(ScheduleRuleSlot first, ScheduleRuleSlot second) { - LinkedHashSet fields = new LinkedHashSet<>(); - if (Objects.equals(teacherId(first), teacherId(second))) { - fields.add("teacher"); - } - if (Objects.equals(classroomId(first), classroomId(second))) { - fields.add("classroom"); - } - if (sameAudience(first, second)) { - fields.add("group"); - } - return fields; - } - - private boolean sameTimeSlot(ScheduleRuleSlot first, ScheduleRuleSlot second) { - return Objects.equals(first.getDayOfWeek(), second.getDayOfWeek()) - && parityOverlaps(first.getParity(), second.getParity()) - && Objects.equals(timeSlotId(first), timeSlotId(second)); - } - - private Long teacherId(ScheduleRuleSlot slot) { - return slot.getTeacher() == null ? null : slot.getTeacher().getId(); - } - - private Long classroomId(ScheduleRuleSlot slot) { - return slot.getClassroom() == null ? null : slot.getClassroom().getId(); - } - - private Long timeSlotId(ScheduleRuleSlot slot) { - return slot.getTimeSlot() == null ? null : slot.getTimeSlot().getId(); - } - - private boolean parityOverlaps(ScheduleParity first, ScheduleParity second) { - if (Objects.equals(first, second)) { - return true; - } - return first == ScheduleParity.BOTH || second == ScheduleParity.BOTH; - } - - private boolean sameAudience(ScheduleRuleSlot first, ScheduleRuleSlot second) { - Set firstGroupIds = groupIds(first); - Set secondGroupIds = groupIds(second); - firstGroupIds.retainAll(secondGroupIds); - - for (Long groupId : firstGroupIds) { - if (slotAppliesToWholeGroup(first, groupId) || slotAppliesToWholeGroup(second, groupId)) { - return true; - } - Set firstSubgroupIds = subgroupIdsForGroup(first, groupId); - Set secondSubgroupIds = subgroupIdsForGroup(second, groupId); - firstSubgroupIds.retainAll(secondSubgroupIds); - if (!firstSubgroupIds.isEmpty()) { - return true; - } - } - return false; - } - - private Set groupIds(ScheduleRuleSlot slot) { - Set ids = new HashSet<>(); - if (slot.getScheduleRule() == null) { - return ids; - } - for (StudentGroup group : slot.getScheduleRule().getGroups()) { - ids.add(group.getId()); - } - return ids; - } - - private boolean slotAppliesToWholeGroup(ScheduleRuleSlot slot, Long groupId) { - return subgroupIdsForGroup(slot, groupId).isEmpty(); - } - - private Set subgroupIdsForGroup(ScheduleRuleSlot slot, Long groupId) { - Set ids = new HashSet<>(); - for (Subgroup subgroup : slot.getSubgroups()) { - if (subgroup.getStudentGroup() != null - && Objects.equals(subgroup.getStudentGroup().getId(), groupId)) { - ids.add(subgroup.getId()); - } - } - return ids; - } - - private Map> activeWeeksBySlot(Collection slots) { - Map> activeWeeks = new IdentityHashMap<>(); - slots.forEach(slot -> activeWeeks.put(slot, new HashSet<>())); - if (slots.isEmpty()) { - return activeWeeks; - } - - ScheduleRule rule = slots.iterator().next().getScheduleRule(); - if (rule == null || rule.getSemester() == null) { - return activeWeeks; - } - - int maxWeeks = maxWeeksForRule(rule); - for (ScheduleLessonCategory category : ScheduleLessonCategory.values()) { - int totalHours = rule.academicHoursFor(category); - if (totalHours <= 0) { - continue; - } - - List categorySlots = slots.stream() - .filter(slot -> ScheduleLessonCategory.fromLessonType(slot.getLessonType()) == category) - .sorted(this::compareSlotsForGeneration) - .toList(); - if (categorySlots.isEmpty()) { - continue; - } - - Map consumedHours = new HashMap<>(); - int startWeek = Math.max(1, rule.startWeekFor(category)); - for (int week = startWeek; week <= maxWeeks; week++) { - for (ScheduleRuleSlot slot : categorySlots) { - if (!slotAppliesToWeek(slot, week)) { - continue; - } - - for (String scopeKey : consumptionScopes(slot, category)) { - int consumed = consumedHours.getOrDefault(scopeKey, 0); - if (consumed >= totalHours) { - continue; - } - activeWeeks.get(slot).add(week); - consumedHours.put(scopeKey, consumed + ACADEMIC_HOURS_PER_SLOT); - } - } - } - } - return activeWeeks; - } - - private boolean activeWeeksOverlap(Set first, Set second) { - if (first == null || second == null || first.isEmpty() || second.isEmpty()) { - return false; - } - Set weeks = new HashSet<>(first); - weeks.retainAll(second); - return !weeks.isEmpty(); - } - - private int maxWeeksForRule(ScheduleRule rule) { - Semester semester = rule.getSemester(); - if (semester != null && semester.getStartDate() != null && semester.getEndDate() != null) { - long days = Math.max(1, ChronoUnit.DAYS.between(semester.getStartDate(), semester.getEndDate()) + 1); - return Math.max(1, (int) Math.ceil(days / 7.0)); - } - return 18; - } - - private int compareSlotsForGeneration(ScheduleRuleSlot first, ScheduleRuleSlot second) { - int dayCompare = Integer.compare( - first.getDayOfWeek() == null ? 0 : first.getDayOfWeek(), - second.getDayOfWeek() == null ? 0 : second.getDayOfWeek() - ); - if (dayCompare != 0) { - return dayCompare; - } - int orderCompare = Integer.compare( - first.getTimeSlot() == null || first.getTimeSlot().getOrderNumber() == null ? 0 : first.getTimeSlot().getOrderNumber(), - second.getTimeSlot() == null || second.getTimeSlot().getOrderNumber() == null ? 0 : second.getTimeSlot().getOrderNumber() - ); - if (orderCompare != 0) { - return orderCompare; - } - return Long.compare(first.getId() == null ? 0L : first.getId(), second.getId() == null ? 0L : second.getId()); - } - - private boolean slotAppliesToWeek(ScheduleRuleSlot slot, int week) { - ScheduleParity parity = slot.getParity(); - if (parity == null || parity == ScheduleParity.BOTH) { - return true; - } - ScheduleParity weekParity = week % 2 == 0 ? ScheduleParity.EVEN : ScheduleParity.ODD; - return parity == weekParity; - } - - private List consumptionScopes(ScheduleRuleSlot slot, ScheduleLessonCategory category) { - if (category == ScheduleLessonCategory.LABORATORY && !slot.getSubgroups().isEmpty()) { - return slot.getSubgroups().stream() - .map(subgroup -> "subgroup:" + subgroup.getId()) - .toList(); - } - if (slot.getScheduleRule() == null || slot.getScheduleRule().getGroups().isEmpty()) { - return List.of("rule"); - } - return slot.getScheduleRule().getGroups().stream() - .map(group -> "group:" + group.getId()) - .toList(); - } - - private ScheduleRuleSlot buildSlot(ScheduleRule rule, ScheduleRuleSlotDto slotDto) { - if (slotDto.dayOfWeek() == null || slotDto.dayOfWeek() < 1 || slotDto.dayOfWeek() > 7) { - throw new IllegalArgumentException("День недели должен быть от 1 до 7"); - } - if (slotDto.parity() == null || !VALID_SLOT_PARITIES.contains(slotDto.parity())) { - throw new IllegalArgumentException("Чётность недели должна быть: каждая, нечётная или чётная"); - } - TimeSlot timeSlot = timeSlotRepository.findById(slotDto.timeSlotId()) - .orElseThrow(() -> new IllegalArgumentException("Временной слот не найден")); - if (timeSlot.getTimeSlotScope() == null - || !APPLY_MODE_DEFAULT.equals(timeSlot.getTimeSlotScope().getApplyMode())) { - throw new IllegalArgumentException("В правилах расписания можно выбирать только базовые временные слоты"); - } - User teacher = userRepository.findById(slotDto.teacherId()) - .orElseThrow(() -> new IllegalArgumentException("Преподаватель не найден")); - if (teacher.isArchivedRecord()) { - throw new IllegalArgumentException("Архивного преподавателя нельзя назначать в расписание"); - } - Classroom classroom = classroomRepository.findById(slotDto.classroomId()) - .orElseThrow(() -> new IllegalArgumentException("Аудитория не найдена")); - if (classroom.isArchivedRecord() || Boolean.FALSE.equals(classroom.getIsAvailable())) { - throw new IllegalArgumentException("Аудитория недоступна для новых назначений"); - } - LessonType lessonType = lessonTypesRepository.findById(slotDto.lessonTypeId()) - .orElseThrow(() -> new IllegalArgumentException("Тип занятия не найден")); - ScheduleLessonCategory category = ScheduleLessonCategory.fromLessonType(lessonType); - Set subgroups = resolveSubgroups(rule, slotDto, category); - if (slotDto.lessonFormat() == null || slotDto.lessonFormat().isBlank()) { - throw new IllegalArgumentException("Формат занятия обязателен"); - } - - ScheduleRuleSlot slot = new ScheduleRuleSlot(); - slot.setScheduleRule(rule); - slot.setDayOfWeek(slotDto.dayOfWeek()); - slot.setParity(slotDto.parity()); - slot.setTimeSlot(timeSlot); - slot.setSubgroups(subgroups); - slot.setTeacher(teacher); - slot.setClassroom(classroom); - slot.setLessonType(lessonType); - slot.setLessonFormat(slotDto.lessonFormat().trim()); - return slot; - } - - private Set resolveSubgroups(ScheduleRule rule, ScheduleRuleSlotDto slotDto, ScheduleLessonCategory category) { - LinkedHashSet subgroupIds = new LinkedHashSet<>(); - if (slotDto.subgroupIds() != null) { - slotDto.subgroupIds().stream() - .filter(Objects::nonNull) - .forEach(subgroupIds::add); - } - if (slotDto.subgroupId() != null) { - subgroupIds.add(slotDto.subgroupId()); - } - if (subgroupIds.isEmpty()) { - return new LinkedHashSet<>(); - } - - if (category != ScheduleLessonCategory.LABORATORY) { - throw new IllegalArgumentException("Подгруппы можно выбирать только для лабораторных занятий"); - } - - Set ruleGroupIds = rule.getGroups().stream() - .map(StudentGroup::getId) - .collect(java.util.stream.Collectors.toSet()); - Set subgroupGroupIds = new HashSet<>(); - LinkedHashSet subgroups = new LinkedHashSet<>(); - - for (Long subgroupId : subgroupIds) { - Subgroup subgroup = subgroupRepository.findById(subgroupId) - .orElseThrow(() -> new IllegalArgumentException("Подгруппа не найдена")); - Long subgroupGroupId = subgroup.getStudentGroup().getId(); - if (!ruleGroupIds.contains(subgroupGroupId)) { - throw new IllegalArgumentException("Подгруппа должна относиться к одной из групп правила"); - } - if (!subgroupGroupIds.add(subgroupGroupId)) { - throw new IllegalArgumentException("В одном слоте можно выбрать не больше одной подгруппы каждой группы"); - } - subgroups.add(subgroup); - } - - return subgroups; - } - - private String validateTypeHours(ScheduleRuleDto request) { - if (isMissing(request.lectureAcademicHours()) - || isMissing(request.laboratoryAcademicHours()) - || isMissing(request.practiceAcademicHours())) { - return "Укажите количество часов для всех типов занятий"; - } - if (isNegative(request.lectureAcademicHours()) - || isNegative(request.laboratoryAcademicHours()) - || isNegative(request.practiceAcademicHours())) { - return "Количество часов по типам занятий не может быть отрицательным"; - } - if (isInvalidStartWeek(request.lectureStartWeek()) - || isInvalidStartWeek(request.laboratoryStartWeek()) - || isInvalidStartWeek(request.practiceStartWeek())) { - return "Неделя начала занятий должна быть больше нуля"; - } - int totalHours = valueOrZero(request.lectureAcademicHours()) - + valueOrZero(request.laboratoryAcademicHours()) - + valueOrZero(request.practiceAcademicHours()); - if (totalHours <= 0) { - return "Укажите часы хотя бы для одного типа занятий"; - } - return null; - } - - private void validateTypeCoverage(ScheduleRule rule, List slots) { - EnumSet categoriesWithSlots = EnumSet.noneOf(ScheduleLessonCategory.class); - for (ScheduleRuleSlot slot : slots) { - categoriesWithSlots.add(ScheduleLessonCategory.fromLessonType(slot.getLessonType())); - } - - for (ScheduleLessonCategory category : ScheduleLessonCategory.values()) { - int hours = rule.academicHoursFor(category); - boolean hasSlots = categoriesWithSlots.contains(category); - if (hours > 0 && !hasSlots) { - throw new IllegalArgumentException("Для типа \"" + category.getDisplayName() + "\" добавьте хотя бы один слот"); - } - if (hours == 0 && hasSlots) { - throw new IllegalArgumentException("Для типа \"" + category.getDisplayName() + "\" укажите часы или удалите слоты этого типа"); - } - } - } - - private boolean isMissing(Integer value) { - return value == null; - } - - private boolean isNegative(Integer value) { - return value < 0; - } - - private boolean isInvalidStartWeek(Integer value) { - return value == null || value <= 0; - } - - private int valueOrZero(Integer value) { - return value == null ? 0 : value; - } - - private ScheduleRuleDto toDto(ScheduleRule rule) { - List groups = rule.getGroups().stream() - .sorted(Comparator.comparing(StudentGroup::getName)) - .toList(); - List slots = rule.getSlots().stream() - .sorted(Comparator - .comparing(ScheduleRuleSlot::getDayOfWeek) - .thenComparing(slot -> slot.getTimeSlot().getOrderNumber()) - .thenComparing(ScheduleRuleSlot::getId)) - .map(this::toSlotDto) - .toList(); - - return new ScheduleRuleDto( - rule.getId(), - rule.getSubject().getId(), - rule.getSubject().getName(), - rule.getSemester().getId(), - rule.getSemester().getAcademicYear().getTitle(), - rule.getSemester().getSemesterType(), - rule.getLectureAcademicHours(), - rule.getLaboratoryAcademicHours(), - rule.getPracticeAcademicHours(), - rule.getLectureStartWeek(), - rule.getLaboratoryStartWeek(), - rule.getPracticeStartWeek(), - groups.stream().map(StudentGroup::getId).toList(), - groups.stream().map(StudentGroup::getName).toList(), - slots - ); - } - - private ScheduleRuleSlotDto toSlotDto(ScheduleRuleSlot slot) { - TimeSlot timeSlot = slot.getTimeSlot(); - List sortedSubgroups = sortedSubgroups(slot); - return new ScheduleRuleSlotDto( - slot.getId(), - slot.getDayOfWeek(), - dayName(slot.getDayOfWeek()), - slot.getParity(), - timeSlot.getId(), - timeSlot.getOrderNumber(), - formatTimeSlot(timeSlot), - sortedSubgroups.isEmpty() ? null : sortedSubgroups.get(0).getId(), - sortedSubgroups.isEmpty() ? null : formatSubgroup(sortedSubgroups.get(0)), - sortedSubgroups.stream().map(Subgroup::getId).toList(), - sortedSubgroups.stream().map(this::formatSubgroup).toList(), - slot.getTeacher().getId(), - ScheduleGeneratorService.displayUserName(slot.getTeacher()), - slot.getClassroom().getId(), - slot.getClassroom().getName(), - slot.getLessonType().getId(), - slot.getLessonType().getLessonType(), - slot.getLessonFormat() - ); - } - - private String dayName(Integer dayOfWeek) { - if (dayOfWeek == null || dayOfWeek < 1 || dayOfWeek > 7) { - return "Неизвестно"; - } - return ScheduleGeneratorService.dayName(DayOfWeek.of(dayOfWeek)); - } - - private String formatTimeSlot(TimeSlot timeSlot) { - return timeSlot.getStartTime() + " - " + timeSlot.getEndTime(); - } - - private String formatSubgroup(Subgroup subgroup) { - return subgroup.getStudentGroup().getName() + ": " + subgroup.getName(); - } - - private List sortedSubgroups(ScheduleRuleSlot slot) { - return slot.getSubgroups().stream() - .sorted(Comparator - .comparing((Subgroup subgroup) -> subgroup.getStudentGroup().getName()) - .thenComparing(Subgroup::getName)) - .toList(); - } - - private record ScheduleRuleConflict(ScheduleRule rule, LinkedHashSet fields) { + body.put("conflictFields", exception.getConflictFields()); + body.put("conflictReasons", exception.getConflictReasons()); + return ResponseEntity.status(HttpStatus.CONFLICT).body(body); } } diff --git a/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java b/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java index 5d9599b..828e474 100644 --- a/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java @@ -1,11 +1,24 @@ package com.magistr.app.repository; import com.magistr.app.model.AuthRefreshToken; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.Optional; public interface AuthRefreshTokenRepository extends JpaRepository { Optional findByTokenHash(String tokenHash); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query(""" + SELECT token + FROM AuthRefreshToken token + JOIN FETCH token.user + WHERE token.tokenHash = :tokenHash + """) + Optional findByTokenHashForUpdate(@Param("tokenHash") String tokenHash); } diff --git a/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java b/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java index 2b48bc0..4028ca2 100644 --- a/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java @@ -1,7 +1,9 @@ package com.magistr.app.repository; import com.magistr.app.model.ScheduleOverride; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -26,4 +28,23 @@ public interface ScheduleOverrideRepository extends JpaRepository findByBaseRuleSlotIdAndLessonDate(Long baseRuleSlotId, LocalDate lessonDate); + + @Query("select o.lessonDate from ScheduleOverride o where o.id = :id") + Optional findLessonDateById(@Param("id") Long id); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select o from ScheduleOverride o where o.id = :id") + Optional findByIdForUpdate(@Param("id") Long id); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query(""" + select o + from ScheduleOverride o + where o.baseRuleSlot.id = :baseRuleSlotId + and o.lessonDate = :lessonDate + """) + Optional findByBaseRuleSlotIdAndLessonDateForUpdate( + @Param("baseRuleSlotId") Long baseRuleSlotId, + @Param("lessonDate") LocalDate lessonDate + ); } diff --git a/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java b/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java index 94ca17a..f4fdfe3 100644 --- a/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java @@ -1,11 +1,14 @@ package com.magistr.app.repository; import com.magistr.app.model.ScheduleRule; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; +import java.util.Optional; public interface ScheduleRuleRepository extends JpaRepository { @@ -76,6 +79,34 @@ public interface ScheduleRuleRepository extends JpaRepository findAllWithDetails(); + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select rule from ScheduleRule rule where rule.id = :id") + Optional findByIdForUpdate(@Param("id") Long id); + + @Query(""" + select distinct rule + from ScheduleRule rule + left join fetch rule.subject + left join fetch rule.semester semester + left join fetch semester.academicYear + left join fetch rule.groups groups + left join fetch rule.slots slots + left join fetch slots.timeSlot + left join fetch slots.subgroups slotSubgroups + left join fetch slotSubgroups.studentGroup + left join fetch slots.teacher + left join fetch slots.classroom + left join fetch slots.lessonType + where semester.id = :semesterId + and rule.status <> 'ARCHIVED' + and (:excludeRuleId is null or rule.id <> :excludeRuleId) + order by rule.id + """) + List findActiveBySemesterIdWithDetails( + @Param("semesterId") Long semesterId, + @Param("excludeRuleId") Long excludeRuleId + ); + @Query(""" select distinct r from ScheduleRule r @@ -92,5 +123,5 @@ public interface ScheduleRuleRepository extends JpaRepository findByIdWithDetails(@Param("id") Long id); + Optional findByIdWithDetails(@Param("id") Long id); } diff --git a/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java b/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java index d347f61..0f27097 100644 --- a/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java @@ -2,9 +2,14 @@ package com.magistr.app.repository; import com.magistr.app.model.Semester; import com.magistr.app.model.SemesterType; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.time.LocalDate; +import java.util.Collection; import java.util.List; import java.util.Optional; @@ -15,4 +20,17 @@ public interface SemesterRepository extends JpaRepository { List findByAcademicYearIdOrderByStartDateAsc(Long academicYearId); Optional findByAcademicYearIdAndSemesterType(Long academicYearId, SemesterType semesterType); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select semester from Semester semester where semester.id = :id") + Optional findByIdForUpdate(@Param("id") Long id); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query(""" + select semester + from Semester semester + where semester.id in :ids + order by semester.id + """) + List findAllByIdForUpdateOrderById(@Param("ids") Collection ids); } diff --git a/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java b/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java index ec2a34e..a1524d9 100644 --- a/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/SubgroupRepository.java @@ -10,6 +10,12 @@ import java.util.Optional; public interface SubgroupRepository extends JpaRepository { + interface SubgroupGroupReference { + Long getSubgroupId(); + + Long getGroupId(); + } + @Query(""" select subgroup from Subgroup subgroup @@ -74,4 +80,11 @@ public interface SubgroupRepository extends JpaRepository { """) long countActiveByGroupIdExcludingId(@Param("groupId") Long groupId, @Param("excludedId") Long excludedId); + + @Query(""" + select subgroup.id as subgroupId, subgroup.studentGroup.id as groupId + from Subgroup subgroup + where subgroup.id in :subgroupIds + """) + List findGroupReferencesByIdIn(@Param("subgroupIds") List subgroupIds); } diff --git a/backend/src/main/java/com/magistr/app/service/AcademicCalendarGridService.java b/backend/src/main/java/com/magistr/app/service/AcademicCalendarGridService.java new file mode 100644 index 0000000..7489da0 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/AcademicCalendarGridService.java @@ -0,0 +1,157 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.AcademicCalendarGridDayDto; +import com.magistr.app.model.AcademicCalendar; +import com.magistr.app.model.AcademicCalendarActivityType; +import com.magistr.app.model.AcademicCalendarDay; +import com.magistr.app.model.AcademicYear; +import com.magistr.app.repository.AcademicCalendarActivityTypeRepository; +import com.magistr.app.repository.AcademicCalendarDayRepository; +import com.magistr.app.repository.AcademicCalendarRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionSynchronization; +import org.springframework.transaction.support.TransactionSynchronizationManager; + +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Set; + +@Service +public class AcademicCalendarGridService { + + private final AcademicCalendarRepository calendarRepository; + private final AcademicCalendarDayRepository calendarDayRepository; + private final AcademicCalendarActivityTypeRepository activityTypeRepository; + private final ScheduleGeneratorService scheduleGeneratorService; + + public AcademicCalendarGridService(AcademicCalendarRepository calendarRepository, + AcademicCalendarDayRepository calendarDayRepository, + AcademicCalendarActivityTypeRepository activityTypeRepository, + ScheduleGeneratorService scheduleGeneratorService) { + this.calendarRepository = calendarRepository; + this.calendarDayRepository = calendarDayRepository; + this.activityTypeRepository = activityTypeRepository; + this.scheduleGeneratorService = scheduleGeneratorService; + } + + @Transactional + public void replaceGrid(Long id, List rows) { + AcademicCalendar calendar = calendarRepository.findByIdWithDetails(id) + .orElseThrow(() -> new NoSuchElementException("Календарный график не найден")); + if (rows == null || rows.isEmpty()) { + throw new IllegalArgumentException("Передайте хотя бы одну ячейку графика"); + } + + List replacement = buildReplacement(calendar, rows); + + calendarDayRepository.deleteByCalendarId(id); + calendarDayRepository.flush(); + calendarDayRepository.saveAll(replacement); + calendarDayRepository.flush(); + clearScheduleCacheAfterCommit(); + } + + private List buildReplacement(AcademicCalendar calendar, + List rows) { + List replacement = new ArrayList<>(rows.size()); + Set uniqueRows = new HashSet<>(); + + for (AcademicCalendarGridDayDto row : rows) { + if (row == null) { + throw new IllegalArgumentException("Строка календарного графика не может быть пустой"); + } + validateRequiredFields(row); + validateCourse(calendar, row.courseNumber()); + validateDate(calendar.getAcademicYear(), row.date()); + validateWeek(calendar.getAcademicYear(), row.date(), row.weekNumber()); + validateDayOfWeek(row.date(), row.dayOfWeek()); + + GridBusinessKey businessKey = new GridBusinessKey(row.courseNumber(), row.date()); + if (!uniqueRows.add(businessKey)) { + throw new IllegalArgumentException("Для курса и даты можно указать только одну активность"); + } + + AcademicCalendarDay day = new AcademicCalendarDay(); + day.setAcademicCalendar(calendar); + day.setCourseNumber(row.courseNumber()); + day.setDate(row.date()); + day.setWeekNumber(row.weekNumber()); + day.setDayOfWeek(row.dayOfWeek()); + day.setActivityType(resolveActivityType(row)); + replacement.add(day); + } + return replacement; + } + + private void validateRequiredFields(AcademicCalendarGridDayDto row) { + if (row.courseNumber() == null + || row.date() == null + || row.weekNumber() == null + || row.weekNumber() <= 0 + || row.dayOfWeek() == null + || row.dayOfWeek() < 1 + || row.dayOfWeek() > 7) { + throw new IllegalArgumentException("Курс, дата, неделя и день недели обязательны"); + } + } + + private void validateCourse(AcademicCalendar calendar, Integer courseNumber) { + if (courseNumber < 1 || courseNumber > calendar.getCourseCount()) { + throw new IllegalArgumentException("Номер курса выходит за пределы графика"); + } + } + + private void validateDate(AcademicYear academicYear, LocalDate date) { + if (date.isBefore(academicYear.getStartDate()) || date.isAfter(academicYear.getEndDate())) { + throw new IllegalArgumentException("Дата выходит за пределы учебного года"); + } + } + + private void validateWeek(AcademicYear academicYear, LocalDate date, Integer weekNumber) { + long daysFromYearStart = ChronoUnit.DAYS.between(academicYear.getStartDate(), date); + int expectedWeek = Math.toIntExact(daysFromYearStart / 7 + 1); + if (weekNumber != expectedWeek) { + throw new IllegalArgumentException("Номер недели не соответствует дате учебного года"); + } + } + + private void validateDayOfWeek(LocalDate date, Integer dayOfWeek) { + if (dayOfWeek != date.getDayOfWeek().getValue()) { + throw new IllegalArgumentException("День недели не соответствует дате"); + } + } + + private AcademicCalendarActivityType resolveActivityType(AcademicCalendarGridDayDto row) { + if (row.activityTypeId() != null) { + return activityTypeRepository.findById(row.activityTypeId()) + .orElseThrow(() -> new IllegalArgumentException("Код активности не найден")); + } + if (row.activityCode() != null && !row.activityCode().isBlank()) { + return activityTypeRepository.findByCode(row.activityCode().trim()) + .orElseThrow(() -> new IllegalArgumentException("Код активности не найден")); + } + throw new IllegalArgumentException("Код активности обязателен"); + } + + private void clearScheduleCacheAfterCommit() { + if (!TransactionSynchronizationManager.isSynchronizationActive() + || !TransactionSynchronizationManager.isActualTransactionActive()) { + scheduleGeneratorService.clearCache(); + return; + } + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { + @Override + public void afterCommit() { + scheduleGeneratorService.clearCache(); + } + }); + } + + private record GridBusinessKey(Integer courseNumber, LocalDate date) { + } +} diff --git a/backend/src/main/java/com/magistr/app/service/PostgreSqlAdvisoryLock.java b/backend/src/main/java/com/magistr/app/service/PostgreSqlAdvisoryLock.java new file mode 100644 index 0000000..bc949c3 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/PostgreSqlAdvisoryLock.java @@ -0,0 +1,44 @@ +package com.magistr.app.service; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; + +@Component +public class PostgreSqlAdvisoryLock { + + private static final int SCHEDULE_OVERRIDE_DATE_NAMESPACE = 0x4D414744; + private static final long SCHEDULE_OVERRIDE_ID_NAMESPACE_MASK = Long.MIN_VALUE; + + @PersistenceContext + private EntityManager entityManager; + + public void lockScheduleOverrideDate(LocalDate date) { + if (date == null) { + throw new IllegalArgumentException("Дата блокировки расписания обязательна"); + } + int exactEpochDay; + try { + exactEpochDay = Math.toIntExact(date.toEpochDay()); + } catch (ArithmeticException exception) { + throw new IllegalArgumentException("Дата находится за пределами диапазона PostgreSQL", exception); + } + entityManager.createNativeQuery("select pg_advisory_xact_lock(?1, ?2)") + .setParameter(1, SCHEDULE_OVERRIDE_DATE_NAMESPACE) + .setParameter(2, exactEpochDay) + .getSingleResult(); + } + + public void lockScheduleOverrideId(Long overrideId) { + if (overrideId == null || overrideId <= 0) { + throw new IllegalArgumentException("Идентификатор точечного изменения должен быть положительным"); + } + // Одноаргументное пространство advisory-lock не пересекается с двухаргументным пространством дат. + long lockKey = overrideId ^ SCHEDULE_OVERRIDE_ID_NAMESPACE_MASK; + entityManager.createNativeQuery("select pg_advisory_xact_lock(?1)") + .setParameter(1, lockKey) + .getSingleResult(); + } +} diff --git a/backend/src/main/java/com/magistr/app/service/RetiredTenantPoolService.java b/backend/src/main/java/com/magistr/app/service/RetiredTenantPoolService.java new file mode 100644 index 0000000..e62e2cf --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/RetiredTenantPoolService.java @@ -0,0 +1,148 @@ +package com.magistr.app.service; + +import com.zaxxer.hikari.HikariDataSource; +import com.zaxxer.hikari.HikariPoolMXBean; +import jakarta.annotation.PreDestroy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.sql.DataSource; +import java.time.Duration; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * Отложенно закрывает пулы, исключённые из актуального снимка тенантов. + * Это даёт уже начатым запросам ограниченное время на завершение. + */ +@Service +public class RetiredTenantPoolService { + + private static final Logger log = LoggerFactory.getLogger(RetiredTenantPoolService.class); + + private final long graceTimeoutNanos; + private final long pollIntervalMillis; + private final ScheduledExecutorService scheduler; + private final Map retiredPools = new ConcurrentHashMap<>(); + private final AtomicBoolean shuttingDown = new AtomicBoolean(false); + + public RetiredTenantPoolService( + @Value("${app.tenants.pool-retirement.grace-timeout:30s}") Duration graceTimeout, + @Value("${app.tenants.pool-retirement.poll-interval:250ms}") Duration pollInterval) { + if (graceTimeout.isNegative()) { + throw new IllegalArgumentException("Период ожидания закрытия пула не может быть отрицательным"); + } + if (pollInterval.isZero() || pollInterval.isNegative()) { + throw new IllegalArgumentException("Интервал проверки закрытия пула должен быть положительным"); + } + + this.graceTimeoutNanos = graceTimeout.toNanos(); + this.pollIntervalMillis = Math.max(1L, pollInterval.toMillis()); + this.scheduler = Executors.newSingleThreadScheduledExecutor(task -> { + Thread thread = new Thread(task, "retired-tenant-pool-drain"); + thread.setDaemon(true); + return thread; + }); + this.scheduler.scheduleWithFixedDelay( + this::pollRetiredPools, + this.pollIntervalMillis, + this.pollIntervalMillis, + TimeUnit.MILLISECONDS + ); + } + + /** + * Передаёт выведенный из эксплуатации Hikari-пул на асинхронное закрытие. + * + * @param dataSource источник данных, ранее удалённый из активного снимка маршрутизации + */ + public void retire(DataSource dataSource) { + if (!(dataSource instanceof HikariDataSource hikariDataSource)) { + log.warn("Источник данных нельзя передать на отложенное закрытие: поддерживаются только Hikari-пулы"); + return; + } + if (hikariDataSource.isClosed()) { + return; + } + if (shuttingDown.get()) { + closePool(hikariDataSource, "остановка приложения"); + return; + } + + long deadlineNanos = System.nanoTime() + graceTimeoutNanos; + RetiredPool previous = retiredPools.putIfAbsent( + hikariDataSource, + new RetiredPool(deadlineNanos) + ); + if (previous == null) { + log.info("Пул подключений передан на отложенное закрытие: pool={}", + hikariDataSource.getPoolName()); + } + } + + private void pollRetiredPools() { + if (shuttingDown.get()) { + return; + } + + long nowNanos = System.nanoTime(); + retiredPools.forEach((pool, retiredPool) -> pollPool(pool, retiredPool, nowNanos)); + } + + private void pollPool(HikariDataSource pool, RetiredPool retiredPool, long nowNanos) { + if (pool.isClosed()) { + retiredPools.remove(pool, retiredPool); + return; + } + + boolean graceExpired = nowNanos - retiredPool.deadlineNanos() >= 0; + boolean drained = hasNoActiveConnections(pool); + if ((drained || graceExpired) && retiredPools.remove(pool, retiredPool)) { + closePool(pool, drained ? "активные подключения завершены" : "истёк период ожидания"); + } + } + + private boolean hasNoActiveConnections(HikariDataSource pool) { + try { + HikariPoolMXBean poolMxBean = pool.getHikariPoolMXBean(); + return poolMxBean != null && poolMxBean.getActiveConnections() == 0; + } catch (RuntimeException exception) { + log.warn("Не удалось проверить активные подключения выведенного пула: pool={}, errorType={}", + pool.getPoolName(), exception.getClass().getSimpleName()); + return false; + } + } + + private void closePool(HikariDataSource pool, String reason) { + try { + pool.close(); + log.info("Выведенный пул подключений закрыт: pool={}, reason={}", pool.getPoolName(), reason); + } catch (RuntimeException exception) { + log.error("Не удалось закрыть выведенный пул подключений: pool={}, errorType={}", + pool.getPoolName(), exception.getClass().getSimpleName()); + } + } + + @PreDestroy + public void shutdown() { + if (!shuttingDown.compareAndSet(false, true)) { + return; + } + + scheduler.shutdownNow(); + retiredPools.forEach((pool, retiredPool) -> { + if (retiredPools.remove(pool, retiredPool)) { + closePool(pool, "остановка приложения"); + } + }); + } + + private record RetiredPool(long deadlineNanos) { + } +} diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleConflictException.java b/backend/src/main/java/com/magistr/app/service/ScheduleConflictException.java new file mode 100644 index 0000000..a118ae3 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/ScheduleConflictException.java @@ -0,0 +1,8 @@ +package com.magistr.app.service; + +public class ScheduleConflictException extends RuntimeException { + + public ScheduleConflictException(String message) { + super(message); + } +} diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleOverrideService.java b/backend/src/main/java/com/magistr/app/service/ScheduleOverrideService.java new file mode 100644 index 0000000..e9a2f21 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/ScheduleOverrideService.java @@ -0,0 +1,532 @@ +package com.magistr.app.service; + +import com.magistr.app.config.auth.AuthContext; +import com.magistr.app.dto.RenderedLessonDto; +import com.magistr.app.dto.ScheduleOverrideDto; +import com.magistr.app.model.Classroom; +import com.magistr.app.model.Role; +import com.magistr.app.model.ScheduleOverride; +import com.magistr.app.model.ScheduleRuleSlot; +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.User; +import com.magistr.app.repository.ClassroomRepository; +import com.magistr.app.repository.ScheduleOverrideRepository; +import com.magistr.app.repository.ScheduleRuleSlotRepository; +import com.magistr.app.repository.SubgroupRepository; +import com.magistr.app.repository.TimeSlotRepository; +import com.magistr.app.repository.UserRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + +@Service +public class ScheduleOverrideService { + + private static final Set ACTIONS = Set.of("MOVE", "CANCEL", "REPLACE"); + private static final Set LESSON_FORMATS = Set.of("Очно", "Онлайн"); + + private final ScheduleOverrideRepository scheduleOverrideRepository; + private final ScheduleRuleSlotRepository scheduleRuleSlotRepository; + private final TimeSlotRepository timeSlotRepository; + private final ClassroomRepository classroomRepository; + private final UserRepository userRepository; + private final SubgroupRepository subgroupRepository; + private final ScheduleQueryService scheduleQueryService; + private final ScheduleGeneratorService scheduleGeneratorService; + private final PostgreSqlAdvisoryLock advisoryLock; + + public ScheduleOverrideService(ScheduleOverrideRepository scheduleOverrideRepository, + ScheduleRuleSlotRepository scheduleRuleSlotRepository, + TimeSlotRepository timeSlotRepository, + ClassroomRepository classroomRepository, + UserRepository userRepository, + SubgroupRepository subgroupRepository, + ScheduleQueryService scheduleQueryService, + ScheduleGeneratorService scheduleGeneratorService, + PostgreSqlAdvisoryLock advisoryLock) { + this.scheduleOverrideRepository = scheduleOverrideRepository; + this.scheduleRuleSlotRepository = scheduleRuleSlotRepository; + this.timeSlotRepository = timeSlotRepository; + this.classroomRepository = classroomRepository; + this.userRepository = userRepository; + this.subgroupRepository = subgroupRepository; + this.scheduleQueryService = scheduleQueryService; + this.scheduleGeneratorService = scheduleGeneratorService; + this.advisoryLock = advisoryLock; + } + + @Transactional(readOnly = true) + public List getAll() { + return scheduleOverrideRepository.findAll().stream() + .map(this::toDto) + .toList(); + } + + @Transactional + public ScheduleOverrideDto create(ScheduleOverrideDto request) { + OverrideCommand command = validateAndNormalize(request); + advisoryLock.lockScheduleOverrideDate(command.lessonDate()); + + ScheduleOverride current = scheduleOverrideRepository + .findByBaseRuleSlotIdAndLessonDateForUpdate(command.baseRuleSlotId(), command.lessonDate()) + .orElse(null); + return validateAndPersist(current, command); + } + + @Transactional + public ScheduleOverrideDto update(Long id, ScheduleOverrideDto request) { + OverrideCommand command = validateAndNormalize(request); + advisoryLock.lockScheduleOverrideId(id); + + LocalDate observedOldDate = scheduleOverrideRepository.findLessonDateById(id) + .orElseThrow(() -> notFound(id)); + lockDatesInStableOrder(observedOldDate, command.lessonDate()); + + ScheduleOverride current = scheduleOverrideRepository.findByIdForUpdate(id) + .orElseThrow(() -> notFound(id)); + if (!Objects.equals(observedOldDate, current.getLessonDate())) { + throw new ScheduleConflictException( + "Точечное изменение расписания было изменено параллельно. Повторите запрос" + ); + } + + scheduleOverrideRepository + .findByBaseRuleSlotIdAndLessonDateForUpdate(command.baseRuleSlotId(), command.lessonDate()) + .filter(other -> !Objects.equals(other.getId(), current.getId())) + .ifPresent(other -> { + throw new ScheduleConflictException( + "Для выбранной базовой пары и даты уже существует точечное изменение" + ); + }); + return validateAndPersist(current, command); + } + + @Transactional + public void delete(Long id) { + advisoryLock.lockScheduleOverrideId(id); + LocalDate observedDate = scheduleOverrideRepository.findLessonDateById(id) + .orElseThrow(() -> notFound(id)); + advisoryLock.lockScheduleOverrideDate(observedDate); + + ScheduleOverride current = scheduleOverrideRepository.findByIdForUpdate(id) + .orElseThrow(() -> notFound(id)); + if (!Objects.equals(observedDate, current.getLessonDate())) { + throw new ScheduleConflictException( + "Точечное изменение расписания было изменено параллельно. Повторите запрос" + ); + } + scheduleOverrideRepository.delete(current); + scheduleOverrideRepository.flush(); + scheduleGeneratorService.clearCache(); + } + + private ScheduleOverrideDto validateAndPersist(ScheduleOverride current, OverrideCommand command) { + ResolvedReferences references = resolveReferences(command); + List baseDay = scheduleQueryService.buildBaseDayForAllGroups(command.lessonDate()); + List sourceOccurrences = baseDay.stream() + .filter(lesson -> Objects.equals(lesson.scheduleRuleSlotId(), command.baseRuleSlotId())) + .filter(lesson -> Objects.equals(lesson.date(), command.lessonDate())) + .toList(); + if (sourceOccurrences.isEmpty()) { + throw new IllegalArgumentException( + "На выбранную дату базовая пара не формируется по правилам расписания" + ); + } + + ScheduleOverride candidate = buildCandidate(command, references); + if (!"CANCEL".equals(command.action())) { + validateEffectiveResult(current, command, candidate, baseDay, sourceOccurrences); + } + + ScheduleOverride target = current == null ? new ScheduleOverride() : current; + copyCandidate(candidate, target); + target.setComment(command.comment()); + target.setCreatedBy(AuthContext.currentUserId()); + + ScheduleOverride saved = scheduleOverrideRepository.saveAndFlush(target); + scheduleGeneratorService.clearCache(); + return toDto(saved); + } + + private void validateEffectiveResult(ScheduleOverride current, + OverrideCommand command, + ScheduleOverride candidate, + List baseDay, + List sourceOccurrences) { + Long currentId = current == null ? null : current.getId(); + List effectiveOverrides = scheduleOverrideRepository + .findByLessonDateBetweenWithDetails(command.lessonDate(), command.lessonDate()) + .stream() + .filter(override -> currentId == null || !Objects.equals(override.getId(), currentId)) + .filter(override -> !sameKey(override, command.baseRuleSlotId(), command.lessonDate())) + .collect(Collectors.toCollection(ArrayList::new)); + effectiveOverrides.add(candidate); + + List effectiveDay = scheduleQueryService.buildEffectiveDayForAllGroups( + baseDay, + command.lessonDate(), + effectiveOverrides + ); + List candidateOccurrences = effectiveDay.stream() + .filter(lesson -> Objects.equals(lesson.scheduleRuleSlotId(), command.baseRuleSlotId())) + .filter(lesson -> Objects.equals(lesson.date(), command.lessonDate())) + .toList(); + if (candidateOccurrences.isEmpty()) { + throw new IllegalArgumentException("Точечное изменение не формирует результирующую пару"); + } + + Set sourceTuples = sourceOccurrences.stream() + .map(EffectiveSourceTuple::from) + .collect(Collectors.toSet()); + Set candidateTuples = candidateOccurrences.stream() + .map(EffectiveSourceTuple::from) + .collect(Collectors.toSet()); + validateActionSpecificChange(command.action(), sourceOccurrences, candidateOccurrences); + if (sourceTuples.equals(candidateTuples)) { + throw new IllegalArgumentException( + "Точечное изменение должно фактически менять время, преподавателя, аудиторию или формат пары" + ); + } + + List otherOccurrences = effectiveDay.stream() + .filter(lesson -> !Objects.equals(lesson.scheduleRuleSlotId(), command.baseRuleSlotId())) + .toList(); + Map subgroupToGroup = loadSubgroupGroupMap(candidateOccurrences, otherOccurrences); + validateResourceConflicts(candidateOccurrences, otherOccurrences, subgroupToGroup); + } + + private void validateActionSpecificChange(String action, + List sourceOccurrences, + List candidateOccurrences) { + if ("MOVE".equals(action)) { + Set source = sourceOccurrences.stream() + .map(MoveTuple::from) + .collect(Collectors.toSet()); + Set candidate = candidateOccurrences.stream() + .map(MoveTuple::from) + .collect(Collectors.toSet()); + if (source.equals(candidate)) { + throw new IllegalArgumentException( + "Перенос должен фактически менять время пары или аудиторию" + ); + } + } + if ("REPLACE".equals(action)) { + Set source = sourceOccurrences.stream() + .map(ReplacementTuple::from) + .collect(Collectors.toSet()); + Set candidate = candidateOccurrences.stream() + .map(ReplacementTuple::from) + .collect(Collectors.toSet()); + if (source.equals(candidate)) { + throw new IllegalArgumentException( + "Замена должна фактически менять преподавателя, аудиторию или формат пары" + ); + } + } + } + + private void validateResourceConflicts(List candidates, + List others, + Map subgroupToGroup) { + for (RenderedLessonDto candidate : candidates) { + for (RenderedLessonDto other : others) { + if (!timeOverlaps(candidate, other)) { + continue; + } + if (candidate.teacherId() != null && Objects.equals(candidate.teacherId(), other.teacherId())) { + throw new ScheduleConflictException( + "Конфликт расписания: преподаватель уже занят в указанное время" + ); + } + if (candidate.classroomId() != null && Objects.equals(candidate.classroomId(), other.classroomId())) { + throw new ScheduleConflictException( + "Конфликт расписания: аудитория уже занята в указанное время" + ); + } + if (audiencesOverlap(candidate, other, subgroupToGroup)) { + throw new ScheduleConflictException( + "Конфликт расписания: группа или подгруппа уже занята в указанное время" + ); + } + } + } + } + + private boolean timeOverlaps(RenderedLessonDto first, RenderedLessonDto second) { + LocalTime firstStart = first.startTime(); + LocalTime firstEnd = first.endTime(); + LocalTime secondStart = second.startTime(); + LocalTime secondEnd = second.endTime(); + if (firstStart == null || firstEnd == null || secondStart == null || secondEnd == null) { + throw new IllegalStateException("Невозможно проверить конфликт: у пары не задано время"); + } + if (!firstStart.isBefore(firstEnd) || !secondStart.isBefore(secondEnd)) { + throw new IllegalStateException("Невозможно проверить конфликт: границы времени пары некорректны"); + } + return firstStart.isBefore(secondEnd) && secondStart.isBefore(firstEnd); + } + + private boolean audiencesOverlap(RenderedLessonDto first, + RenderedLessonDto second, + Map subgroupToGroup) { + Set commonGroupIds = new HashSet<>(safeIds(first.groupIds())); + commonGroupIds.retainAll(safeIds(second.groupIds())); + for (Long groupId : commonGroupIds) { + Set firstSubgroups = subgroupsForGroup(first, groupId, subgroupToGroup); + Set secondSubgroups = subgroupsForGroup(second, groupId, subgroupToGroup); + if (firstSubgroups.isEmpty() || secondSubgroups.isEmpty()) { + return true; + } + if (!java.util.Collections.disjoint(firstSubgroups, secondSubgroups)) { + return true; + } + } + return false; + } + + private Set subgroupsForGroup(RenderedLessonDto lesson, + Long groupId, + Map subgroupToGroup) { + return safeIds(lesson.subgroupIds()).stream() + .filter(subgroupId -> Objects.equals(subgroupToGroup.get(subgroupId), groupId)) + .collect(Collectors.toSet()); + } + + private Map loadSubgroupGroupMap(Collection first, + Collection second) { + LinkedHashSet subgroupIds = new LinkedHashSet<>(); + first.forEach(lesson -> subgroupIds.addAll(safeIds(lesson.subgroupIds()))); + second.forEach(lesson -> subgroupIds.addAll(safeIds(lesson.subgroupIds()))); + if (subgroupIds.isEmpty()) { + return Map.of(); + } + Map result = new HashMap<>(); + subgroupRepository.findGroupReferencesByIdIn(List.copyOf(subgroupIds)) + .forEach(reference -> result.put(reference.getSubgroupId(), reference.getGroupId())); + return result; + } + + private Set safeIds(List values) { + if (values == null || values.isEmpty()) { + return Set.of(); + } + return values.stream() + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + } + + private ResolvedReferences resolveReferences(OverrideCommand command) { + ScheduleRuleSlot baseRuleSlot = scheduleRuleSlotRepository.findById(command.baseRuleSlotId()) + .orElseThrow(() -> new IllegalArgumentException("Базовый слот расписания не найден")); + TimeSlot newTimeSlot = command.newTimeSlotId() == null + ? null + : timeSlotRepository.findById(command.newTimeSlotId()) + .orElseThrow(() -> new IllegalArgumentException("Временной слот не найден")); + Classroom newClassroom = command.newClassroomId() == null + ? null + : classroomRepository.findById(command.newClassroomId()) + .orElseThrow(() -> new IllegalArgumentException("Аудитория не найдена")); + User newTeacher = command.newTeacherId() == null + ? null + : userRepository.findById(command.newTeacherId()) + .orElseThrow(() -> new IllegalArgumentException("Преподаватель не найден")); + + if (newTeacher != null + && (newTeacher.getRole() != Role.TEACHER || !newTeacher.isActiveOn(command.lessonDate()))) { + throw new IllegalArgumentException("Активный преподаватель с ролью TEACHER не найден"); + } + if (newClassroom != null + && (!newClassroom.isActiveOn(command.lessonDate()) + || !Boolean.TRUE.equals(newClassroom.getIsAvailable()))) { + throw new IllegalArgumentException("Активная и доступная аудитория не найдена"); + } + return new ResolvedReferences(baseRuleSlot, newTimeSlot, newClassroom, newTeacher); + } + + private ScheduleOverride buildCandidate(OverrideCommand command, ResolvedReferences references) { + ScheduleOverride candidate = new ScheduleOverride(); + candidate.setBaseRuleSlot(references.baseRuleSlot()); + candidate.setLessonDate(command.lessonDate()); + candidate.setAction(command.action()); + candidate.setNewTimeSlot(references.newTimeSlot()); + candidate.setNewClassroom(references.newClassroom()); + candidate.setNewTeacher(references.newTeacher()); + candidate.setNewLessonFormat(command.newLessonFormat()); + return candidate; + } + + private void copyCandidate(ScheduleOverride source, ScheduleOverride target) { + target.setBaseRuleSlot(source.getBaseRuleSlot()); + target.setLessonDate(source.getLessonDate()); + target.setAction(source.getAction()); + target.setNewTimeSlot(source.getNewTimeSlot()); + target.setNewClassroom(source.getNewClassroom()); + target.setNewTeacher(source.getNewTeacher()); + target.setNewLessonFormat(source.getNewLessonFormat()); + } + + private OverrideCommand validateAndNormalize(ScheduleOverrideDto request) { + if (request == null) { + throw new IllegalArgumentException("Передайте данные изменения расписания"); + } + if (request.baseRuleSlotId() == null) { + throw new IllegalArgumentException("Базовый слот расписания обязателен"); + } + if (request.lessonDate() == null) { + throw new IllegalArgumentException("Дата пары обязательна"); + } + String action = clean(request.action()); + action = action == null ? null : action.toUpperCase(Locale.ROOT); + if (action == null || !ACTIONS.contains(action)) { + throw new IllegalArgumentException("Недопустимое действие изменения расписания"); + } + String lessonFormat = clean(request.newLessonFormat()); + if (lessonFormat != null && !LESSON_FORMATS.contains(lessonFormat)) { + throw new IllegalArgumentException("Формат пары должен быть «Очно» или «Онлайн»"); + } + + if ("CANCEL".equals(action) + && (request.newTimeSlotId() != null + || request.newClassroomId() != null + || request.newTeacherId() != null + || lessonFormat != null)) { + throw new IllegalArgumentException("Для отмены пары новые параметры должны быть пустыми"); + } + if ("MOVE".equals(action) + && request.newTimeSlotId() == null + && request.newClassroomId() == null) { + throw new IllegalArgumentException("Для переноса укажите новое время или аудиторию"); + } + if ("REPLACE".equals(action) + && request.newTeacherId() == null + && request.newClassroomId() == null + && lessonFormat == null) { + throw new IllegalArgumentException( + "Для замены укажите нового преподавателя, аудиторию или формат пары" + ); + } + return new OverrideCommand( + request.baseRuleSlotId(), + request.lessonDate(), + action, + request.newTimeSlotId(), + request.newClassroomId(), + request.newTeacherId(), + lessonFormat, + clean(request.comment()) + ); + } + + private void lockDatesInStableOrder(LocalDate first, LocalDate second) { + List.of(first, second).stream() + .distinct() + .sorted(Comparator.naturalOrder()) + .forEach(advisoryLock::lockScheduleOverrideDate); + } + + private boolean sameKey(ScheduleOverride override, Long baseRuleSlotId, LocalDate lessonDate) { + return override.getBaseRuleSlot() != null + && Objects.equals(override.getBaseRuleSlot().getId(), baseRuleSlotId) + && Objects.equals(override.getLessonDate(), lessonDate); + } + + private NoSuchElementException notFound(Long id) { + return new NoSuchElementException("Точечное изменение расписания с идентификатором " + id + " не найдено"); + } + + private ScheduleOverrideDto toDto(ScheduleOverride override) { + return new ScheduleOverrideDto( + override.getId(), + override.getBaseRuleSlot().getId(), + override.getLessonDate(), + override.getAction(), + override.getNewTimeSlot() == null ? null : override.getNewTimeSlot().getId(), + override.getNewClassroom() == null ? null : override.getNewClassroom().getId(), + override.getNewTeacher() == null ? null : override.getNewTeacher().getId(), + override.getNewLessonFormat(), + override.getComment(), + override.getCreatedBy(), + override.getCreatedAt() + ); + } + + private String clean(String value) { + return value == null || value.isBlank() ? null : value.trim(); + } + + private record OverrideCommand( + Long baseRuleSlotId, + LocalDate lessonDate, + String action, + Long newTimeSlotId, + Long newClassroomId, + Long newTeacherId, + String newLessonFormat, + String comment + ) { + } + + private record ResolvedReferences( + ScheduleRuleSlot baseRuleSlot, + TimeSlot newTimeSlot, + Classroom newClassroom, + User newTeacher + ) { + } + + private record EffectiveSourceTuple( + Long timeSlotId, + LocalTime startTime, + LocalTime endTime, + Long teacherId, + Long classroomId, + String lessonFormat + ) { + private static EffectiveSourceTuple from(RenderedLessonDto lesson) { + return new EffectiveSourceTuple( + lesson.timeSlotId(), + lesson.startTime(), + lesson.endTime(), + lesson.teacherId(), + lesson.classroomId(), + lesson.lessonFormat() + ); + } + } + + private record MoveTuple( + LocalTime startTime, + LocalTime endTime, + Long classroomId + ) { + private static MoveTuple from(RenderedLessonDto lesson) { + return new MoveTuple(lesson.startTime(), lesson.endTime(), lesson.classroomId()); + } + } + + private record ReplacementTuple( + Long teacherId, + Long classroomId, + String lessonFormat + ) { + private static ReplacementTuple from(RenderedLessonDto lesson) { + return new ReplacementTuple(lesson.teacherId(), lesson.classroomId(), lesson.lessonFormat()); + } + } +} diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java b/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java index 89ffb85..af5cc6a 100644 --- a/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java +++ b/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java @@ -33,6 +33,48 @@ public class ScheduleQueryService { this.groupLifecycleService = groupLifecycleService; } + /** + * Строит фактическое базовое расписание на дату для всех групп без UI-ограничения + * количества групп, применяемого к широким пользовательским поисковым запросам. + */ + public List buildBaseDayForAllGroups(LocalDate date) { + if (date == null) { + throw new IllegalArgumentException("Дата расписания обязательна"); + } + List generatedLessons = groupRepository.findAll().stream() + .filter(group -> groupLifecycleService.mayHaveScheduleInRange(group, date, date)) + .flatMap(group -> scheduleGeneratorService.buildScheduleForGroup(group.getId(), date, date).stream()) + .toList(); + return deduplicate(generatedLessons); + } + + /** + * Строит результирующее расписание дня с переданным снимком точечных изменений. + * Репозиторий точечных изменений здесь намеренно не читается: вызывающий код может атомарно + * проверить ещё не сохранённое изменение внутри своей транзакции. + */ + public List buildEffectiveDayForAllGroups( + LocalDate date, + Collection overrides + ) { + return buildEffectiveDayForAllGroups(buildBaseDayForAllGroups(date), date, overrides); + } + + /** + * Вариант без повторной генерации базового дня для транзакционных проверок. + */ + public List buildEffectiveDayForAllGroups( + List baseDay, + LocalDate date, + Collection overrides + ) { + if (date == null) { + throw new IllegalArgumentException("Дата расписания обязательна"); + } + List safeBaseDay = baseDay == null ? List.of() : baseDay; + return deduplicate(applyOverrides(safeBaseDay, date, overrides)); + } + public List search(Long groupId, Long teacherId, Long classroomId, @@ -45,7 +87,8 @@ public class ScheduleQueryService { LocalDate endDate) { validateRange(startDate, endDate); List generatedLessons; - if (groupId == null && departmentId == null && teacherId != null) { + boolean teacherOnlySearch = groupId == null && departmentId == null && teacherId != null; + if (teacherOnlySearch) { generatedLessons = scheduleGeneratorService.buildScheduleForTeacher(teacherId, startDate, endDate); } else { List groups = resolveGroups(groupId, departmentId, startDate, endDate); @@ -53,7 +96,16 @@ public class ScheduleQueryService { .flatMap(group -> scheduleGeneratorService.buildScheduleForGroup(group.getId(), startDate, endDate).stream()) .toList(); } - List lessons = applyOverrides(generatedLessons, startDate, endDate).stream() + List overrideSnapshot = scheduleOverrideRepository + .findByLessonDateBetweenWithDetails(startDate, endDate); + if (teacherOnlySearch) { + generatedLessons = addOverrideSourceOccurrencesForTeacher( + generatedLessons, + teacherId, + overrideSnapshot + ); + } + List lessons = applyOverrides(generatedLessons, null, overrideSnapshot).stream() .filter(lesson -> teacherId == null || Objects.equals(lesson.teacherId(), teacherId)) .filter(lesson -> classroomId == null || Objects.equals(lesson.classroomId(), classroomId)) .filter(lesson -> subjectId == null || Objects.equals(lesson.subjectId(), subjectId)) @@ -64,10 +116,50 @@ public class ScheduleQueryService { return deduplicate(lessons); } - private List applyOverrides(List lessons, LocalDate startDate, LocalDate endDate) { - Map overrides = scheduleOverrideRepository - .findByLessonDateBetweenWithDetails(startDate, endDate) + private List addOverrideSourceOccurrencesForTeacher( + List generatedLessons, + Long teacherId, + Collection overrideSnapshot + ) { + Map> relevantSlotsByDate = Optional.ofNullable(overrideSnapshot) + .orElseGet(List::of) .stream() + .filter(Objects::nonNull) + .filter(override -> override.getLessonDate() != null) + .filter(override -> override.getBaseRuleSlot() != null) + .filter(override -> override.getBaseRuleSlot().getId() != null) + .filter(override -> override.getNewTeacher() != null) + .filter(override -> Objects.equals(override.getNewTeacher().getId(), teacherId)) + .collect(Collectors.groupingBy( + ScheduleOverride::getLessonDate, + TreeMap::new, + Collectors.mapping( + override -> override.getBaseRuleSlot().getId(), + Collectors.toCollection(LinkedHashSet::new) + ) + )); + if (relevantSlotsByDate.isEmpty()) { + return generatedLessons; + } + + List supplementedLessons = new ArrayList<>(generatedLessons); + relevantSlotsByDate.forEach((date, baseRuleSlotIds) -> buildBaseDayForAllGroups(date).stream() + .filter(lesson -> date.equals(lesson.date())) + .filter(lesson -> baseRuleSlotIds.contains(lesson.scheduleRuleSlotId())) + .forEach(supplementedLessons::add)); + return supplementedLessons; + } + + private List applyOverrides(List lessons, + LocalDate exactDate, + Collection suppliedOverrides) { + Map overrides = Optional.ofNullable(suppliedOverrides) + .orElseGet(List::of) + .stream() + .filter(Objects::nonNull) + .filter(override -> override.getBaseRuleSlot() != null) + .filter(override -> override.getLessonDate() != null) + .filter(override -> exactDate == null || exactDate.equals(override.getLessonDate())) .collect(Collectors.toMap( override -> overrideKey(override.getBaseRuleSlot().getId(), override.getLessonDate()), override -> override, diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleRuleConflictException.java b/backend/src/main/java/com/magistr/app/service/ScheduleRuleConflictException.java new file mode 100644 index 0000000..791eacf --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/ScheduleRuleConflictException.java @@ -0,0 +1,34 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.ScheduleRuleDto; + +import java.util.List; + +public class ScheduleRuleConflictException extends RuntimeException { + + private final ScheduleRuleDto conflictRule; + private final List conflictFields; + private final List conflictReasons; + + public ScheduleRuleConflictException(String message, + ScheduleRuleDto conflictRule, + List conflictFields, + List conflictReasons) { + super(message); + this.conflictRule = conflictRule; + this.conflictFields = List.copyOf(conflictFields); + this.conflictReasons = List.copyOf(conflictReasons); + } + + public ScheduleRuleDto getConflictRule() { + return conflictRule; + } + + public List getConflictFields() { + return conflictFields; + } + + public List getConflictReasons() { + return conflictReasons; + } +} diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleRuleService.java b/backend/src/main/java/com/magistr/app/service/ScheduleRuleService.java new file mode 100644 index 0000000..2334fdb --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/ScheduleRuleService.java @@ -0,0 +1,850 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.ScheduleRuleDto; +import com.magistr.app.dto.ScheduleRuleSlotDto; +import com.magistr.app.model.Classroom; +import com.magistr.app.model.LessonType; +import com.magistr.app.model.LifecycleEntity; +import com.magistr.app.model.Role; +import com.magistr.app.model.ScheduleLessonCategory; +import com.magistr.app.model.ScheduleParity; +import com.magistr.app.model.ScheduleRule; +import com.magistr.app.model.ScheduleRuleSlot; +import com.magistr.app.model.Semester; +import com.magistr.app.model.StudentGroup; +import com.magistr.app.model.Subgroup; +import com.magistr.app.model.Subject; +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.User; +import com.magistr.app.repository.ClassroomRepository; +import com.magistr.app.repository.GroupRepository; +import com.magistr.app.repository.LessonTypesRepository; +import com.magistr.app.repository.ScheduleRuleRepository; +import com.magistr.app.repository.SemesterRepository; +import com.magistr.app.repository.SubjectRepository; +import com.magistr.app.repository.SubgroupRepository; +import com.magistr.app.repository.TimeSlotRepository; +import com.magistr.app.repository.UserRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.DayOfWeek; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.HashSet; +import java.util.IdentityHashMap; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.Set; +import java.util.TreeSet; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +public class ScheduleRuleService { + + private static final String APPLY_MODE_DEFAULT = "DEFAULT"; + private static final int ACADEMIC_HOURS_PER_SLOT = 2; + private static final Set VALID_LESSON_FORMATS = Set.of("Очно", "Онлайн"); + private static final Set VALID_SLOT_PARITIES = Set.of( + ScheduleParity.BOTH, + ScheduleParity.ODD, + ScheduleParity.EVEN + ); + + private final ScheduleRuleRepository scheduleRuleRepository; + private final SubjectRepository subjectRepository; + private final SemesterRepository semesterRepository; + private final GroupRepository groupRepository; + private final TimeSlotRepository timeSlotRepository; + private final UserRepository userRepository; + private final ClassroomRepository classroomRepository; + private final LessonTypesRepository lessonTypesRepository; + private final SubgroupRepository subgroupRepository; + private final ScheduleGeneratorService scheduleGeneratorService; + + public ScheduleRuleService(ScheduleRuleRepository scheduleRuleRepository, + SubjectRepository subjectRepository, + SemesterRepository semesterRepository, + GroupRepository groupRepository, + TimeSlotRepository timeSlotRepository, + UserRepository userRepository, + ClassroomRepository classroomRepository, + LessonTypesRepository lessonTypesRepository, + SubgroupRepository subgroupRepository, + ScheduleGeneratorService scheduleGeneratorService) { + this.scheduleRuleRepository = scheduleRuleRepository; + this.subjectRepository = subjectRepository; + this.semesterRepository = semesterRepository; + this.groupRepository = groupRepository; + this.timeSlotRepository = timeSlotRepository; + this.userRepository = userRepository; + this.classroomRepository = classroomRepository; + this.lessonTypesRepository = lessonTypesRepository; + this.subgroupRepository = subgroupRepository; + this.scheduleGeneratorService = scheduleGeneratorService; + } + + @Transactional(readOnly = true) + public List getAll(Long semesterId, Long groupId) { + return scheduleRuleRepository.findAllWithDetails().stream() + .filter(ScheduleRule::isActiveRecord) + .filter(rule -> semesterId == null || Objects.equals(rule.getSemester().getId(), semesterId)) + .filter(rule -> groupId == null || rule.getGroups().stream() + .anyMatch(group -> Objects.equals(group.getId(), groupId))) + .map(this::toDto) + .toList(); + } + + @Transactional(readOnly = true) + public ScheduleRuleDto getById(Long id) { + ScheduleRule rule = scheduleRuleRepository.findByIdWithDetails(id) + .orElseThrow(() -> new NoSuchElementException("Правило расписания не найдено")); + return toDto(rule); + } + + @Transactional + public ScheduleRuleDto create(ScheduleRuleDto request) { + validateBasic(request); + + // Это должна быть первая операция с БД: блокировка сериализует все записи + // правил одного семестра, включая запросы из разных экземпляров backend. + Semester semester = semesterRepository.findByIdForUpdate(request.semesterId()) + .orElseThrow(() -> new IllegalArgumentException("Семестр не найден")); + + ScheduleRule candidate = buildCandidate(request, semester); + validateCandidate(candidate); + validateAgainstSavedRules(candidate, null); + + ScheduleRule saved = scheduleRuleRepository.saveAndFlush(candidate); + scheduleGeneratorService.clearCache(); + return toDto(saved); + } + + @Transactional + public ScheduleRuleDto update(Long id, ScheduleRuleDto request) { + validateBasic(request); + + // Сначала блокируется сама строка правила. Это гарантирует, что old semester + // определён по актуальному состоянию и два update одного правила не расходятся. + ScheduleRule managedRule = scheduleRuleRepository.findByIdForUpdate(id) + .orElseThrow(() -> new NoSuchElementException("Правило расписания не найдено")); + Long oldSemesterId = managedRule.getSemester().getId(); + + Map lockedSemesters = lockSemestersInStableOrder( + List.of(oldSemesterId, request.semesterId()) + ); + Semester targetSemester = lockedSemesters.get(request.semesterId()); + if (targetSemester == null) { + throw new IllegalArgumentException("Семестр не найден"); + } + + ScheduleRule candidate = buildCandidate(request, targetSemester); + validateCandidate(candidate); + validateAgainstSavedRules(candidate, managedRule.getId()); + + applyCandidate(managedRule, candidate); + ScheduleRule saved = scheduleRuleRepository.saveAndFlush(managedRule); + scheduleGeneratorService.clearCache(); + return toDto(saved); + } + + @Transactional + public void archive(Long id) { + ScheduleRule rule = scheduleRuleRepository.findByIdForUpdate(id) + .orElseThrow(() -> new NoSuchElementException("Правило расписания не найдено")); + Long semesterId = rule.getSemester().getId(); + semesterRepository.findByIdForUpdate(semesterId) + .orElseThrow(() -> new NoSuchElementException("Семестр правила не найден")); + + rule.archive(); + scheduleRuleRepository.saveAndFlush(rule); + scheduleGeneratorService.clearCache(); + } + + private Map lockSemestersInStableOrder(Collection semesterIds) { + List orderedIds = new ArrayList<>(new TreeSet<>(semesterIds)); + return semesterRepository.findAllByIdForUpdateOrderById(orderedIds).stream() + .collect(Collectors.toMap( + Semester::getId, + Function.identity(), + (first, ignored) -> first, + LinkedHashMap::new + )); + } + + private void validateBasic(ScheduleRuleDto request) { + if (request == null) { + throw new IllegalArgumentException("Данные правила обязательны"); + } + if (request.subjectId() == null) { + throw new IllegalArgumentException("Дисциплина обязательна"); + } + if (request.semesterId() == null) { + throw new IllegalArgumentException("Семестр обязателен"); + } + + validateHours("лекций", request.lectureAcademicHours()); + validateHours("лабораторных занятий", request.laboratoryAcademicHours()); + validateHours("практических занятий", request.practiceAcademicHours()); + long totalHours = (long) request.lectureAcademicHours() + + request.laboratoryAcademicHours() + + request.practiceAcademicHours(); + if (totalHours <= 0) { + throw new IllegalArgumentException("Укажите часы хотя бы для одного типа занятий"); + } + + validateStartWeek("лекций", request.lectureStartWeek()); + validateStartWeek("лабораторных занятий", request.laboratoryStartWeek()); + validateStartWeek("практических занятий", request.practiceStartWeek()); + + if (request.groupIds() == null || request.groupIds().isEmpty()) { + throw new IllegalArgumentException("Нужно выбрать хотя бы одну группу"); + } + if (request.groupIds().stream().anyMatch(Objects::isNull)) { + throw new IllegalArgumentException("Идентификаторы групп не могут быть пустыми"); + } + if (new HashSet<>(request.groupIds()).size() != request.groupIds().size()) { + throw new IllegalArgumentException("Группы в правиле не должны повторяться"); + } + if (request.slots() == null || request.slots().isEmpty()) { + throw new IllegalArgumentException("Добавьте хотя бы один слот занятия"); + } + + for (ScheduleRuleSlotDto slot : request.slots()) { + validateBasicSlot(slot); + } + } + + private void validateHours(String typeName, Integer hours) { + if (hours == null) { + throw new IllegalArgumentException("Укажите количество часов для " + typeName); + } + if (hours < 0) { + throw new IllegalArgumentException("Количество часов для " + typeName + " не может быть отрицательным"); + } + if (hours % ACADEMIC_HOURS_PER_SLOT != 0) { + throw new IllegalArgumentException("Количество часов для " + typeName + " должно быть чётным"); + } + } + + private void validateStartWeek(String typeName, Integer startWeek) { + if (startWeek == null || startWeek <= 0) { + throw new IllegalArgumentException("Неделя начала для " + typeName + " должна быть больше нуля"); + } + } + + private void validateBasicSlot(ScheduleRuleSlotDto slot) { + if (slot == null) { + throw new IllegalArgumentException("Данные слота занятия обязательны"); + } + if (slot.dayOfWeek() == null || slot.dayOfWeek() < 1 || slot.dayOfWeek() > 7) { + throw new IllegalArgumentException("День недели должен быть от 1 до 7"); + } + if (slot.parity() == null || !VALID_SLOT_PARITIES.contains(slot.parity())) { + throw new IllegalArgumentException("Чётность недели должна быть: каждая, нечётная или чётная"); + } + if (slot.timeSlotId() == null) { + throw new IllegalArgumentException("Временной слот обязателен"); + } + if (slot.teacherId() == null) { + throw new IllegalArgumentException("Преподаватель обязателен"); + } + if (slot.classroomId() == null) { + throw new IllegalArgumentException("Аудитория обязательна"); + } + if (slot.lessonTypeId() == null) { + throw new IllegalArgumentException("Тип занятия обязателен"); + } + normalizeLessonFormat(slot.lessonFormat()); + } + + private ScheduleRule buildCandidate(ScheduleRuleDto request, Semester semester) { + Subject subject = subjectRepository.findById(request.subjectId()) + .orElseThrow(() -> new IllegalArgumentException("Дисциплина не найдена")); + if (subject.isArchivedRecord()) { + throw new IllegalArgumentException("Архивную дисциплину нельзя использовать в новых правилах"); + } + + List groups = new ArrayList<>(groupRepository.findAllById(request.groupIds())); + if (groups.size() != request.groupIds().size()) { + throw new IllegalArgumentException("Одна или несколько групп не найдены"); + } + if (groups.stream().anyMatch(StudentGroup::isArchivedRecord)) { + throw new IllegalArgumentException("Архивные группы нельзя использовать в новых правилах"); + } + groups.sort(Comparator.comparing(StudentGroup::getId)); + + ScheduleRule candidate = new ScheduleRule(); + candidate.setSubject(subject); + candidate.setSemester(semester); + candidate.setLectureAcademicHours(request.lectureAcademicHours()); + candidate.setLaboratoryAcademicHours(request.laboratoryAcademicHours()); + candidate.setPracticeAcademicHours(request.practiceAcademicHours()); + candidate.setLectureStartWeek(request.lectureStartWeek()); + candidate.setLaboratoryStartWeek(request.laboratoryStartWeek()); + candidate.setPracticeStartWeek(request.practiceStartWeek()); + candidate.setGroups(new LinkedHashSet<>(groups)); + + List slots = new ArrayList<>(); + for (ScheduleRuleSlotDto slotDto : request.slots()) { + slots.add(buildSlot(candidate, slotDto)); + } + candidate.setSlots(new LinkedHashSet<>(slots)); + validateTypeCoverage(candidate, slots); + return candidate; + } + + private ScheduleRuleSlot buildSlot(ScheduleRule rule, ScheduleRuleSlotDto slotDto) { + TimeSlot timeSlot = timeSlotRepository.findById(slotDto.timeSlotId()) + .orElseThrow(() -> new IllegalArgumentException("Временной слот не найден")); + if (timeSlot.getTimeSlotScope() == null + || !APPLY_MODE_DEFAULT.equals(timeSlot.getTimeSlotScope().getApplyMode())) { + throw new IllegalArgumentException("В правилах расписания можно выбирать только базовые временные слоты"); + } + + User teacher = userRepository.findById(slotDto.teacherId()) + .orElseThrow(() -> new IllegalArgumentException("Преподаватель не найден")); + if (teacher.isArchivedRecord()) { + throw new IllegalArgumentException("Архивного преподавателя нельзя назначать в расписание"); + } + if (teacher.getRole() != Role.TEACHER) { + throw new IllegalArgumentException("В слот расписания можно назначить только пользователя с ролью преподавателя"); + } + + Classroom classroom = classroomRepository.findById(slotDto.classroomId()) + .orElseThrow(() -> new IllegalArgumentException("Аудитория не найдена")); + if (classroom.isArchivedRecord() || Boolean.FALSE.equals(classroom.getIsAvailable())) { + throw new IllegalArgumentException("Аудитория недоступна для новых назначений"); + } + + LessonType lessonType = lessonTypesRepository.findById(slotDto.lessonTypeId()) + .orElseThrow(() -> new IllegalArgumentException("Тип занятия не найден")); + ScheduleLessonCategory category = ScheduleLessonCategory.fromLessonType(lessonType); + Set subgroups = resolveSubgroups(rule, slotDto, category); + + ScheduleRuleSlot slot = new ScheduleRuleSlot(); + slot.setScheduleRule(rule); + slot.setDayOfWeek(slotDto.dayOfWeek()); + slot.setParity(slotDto.parity()); + slot.setTimeSlot(timeSlot); + slot.setSubgroups(subgroups); + slot.setTeacher(teacher); + slot.setClassroom(classroom); + slot.setLessonType(lessonType); + slot.setLessonFormat(normalizeLessonFormat(slotDto.lessonFormat())); + return slot; + } + + private Set resolveSubgroups(ScheduleRule rule, + ScheduleRuleSlotDto slotDto, + ScheduleLessonCategory category) { + LinkedHashSet subgroupIds = new LinkedHashSet<>(); + if (slotDto.subgroupIds() != null) { + slotDto.subgroupIds().stream() + .filter(Objects::nonNull) + .forEach(subgroupIds::add); + } + if (slotDto.subgroupId() != null) { + subgroupIds.add(slotDto.subgroupId()); + } + if (subgroupIds.isEmpty()) { + return new LinkedHashSet<>(); + } + if (category != ScheduleLessonCategory.LABORATORY) { + throw new IllegalArgumentException("Подгруппы можно выбирать только для лабораторных занятий"); + } + + Set ruleGroupIds = rule.getGroups().stream() + .map(StudentGroup::getId) + .collect(Collectors.toSet()); + Set subgroupGroupIds = new HashSet<>(); + LinkedHashSet subgroups = new LinkedHashSet<>(); + + for (Long subgroupId : subgroupIds) { + Subgroup subgroup = subgroupRepository.findById(subgroupId) + .orElseThrow(() -> new IllegalArgumentException("Подгруппа не найдена")); + if (subgroup.isArchivedRecord()) { + throw new IllegalArgumentException("Архивную подгруппу нельзя использовать в расписании"); + } + Long subgroupGroupId = subgroup.getStudentGroup().getId(); + if (!ruleGroupIds.contains(subgroupGroupId)) { + throw new IllegalArgumentException("Подгруппа должна относиться к одной из групп правила"); + } + if (!subgroupGroupIds.add(subgroupGroupId)) { + throw new IllegalArgumentException("В одном слоте можно выбрать не больше одной подгруппы каждой группы"); + } + subgroups.add(subgroup); + } + return subgroups; + } + + private String normalizeLessonFormat(String lessonFormat) { + if (lessonFormat == null || lessonFormat.isBlank()) { + throw new IllegalArgumentException("Формат занятия обязателен"); + } + String normalized = lessonFormat.trim(); + if (!VALID_LESSON_FORMATS.contains(normalized)) { + throw new IllegalArgumentException("Формат занятия должен быть «Очно» или «Онлайн»"); + } + return normalized; + } + + private void validateTypeCoverage(ScheduleRule rule, List slots) { + EnumSet categoriesWithSlots = EnumSet.noneOf(ScheduleLessonCategory.class); + for (ScheduleRuleSlot slot : slots) { + categoriesWithSlots.add(ScheduleLessonCategory.fromLessonType(slot.getLessonType())); + } + + for (ScheduleLessonCategory category : ScheduleLessonCategory.values()) { + int hours = rule.academicHoursFor(category); + boolean hasSlots = categoriesWithSlots.contains(category); + if (hours > 0 && !hasSlots) { + throw new IllegalArgumentException( + "Для типа «" + category.getDisplayName() + "» добавьте хотя бы один слот" + ); + } + if (hours == 0 && hasSlots) { + throw new IllegalArgumentException( + "Для типа «" + category.getDisplayName() + "» укажите часы или удалите слоты этого типа" + ); + } + } + } + + private void validateCandidate(ScheduleRule candidate) { + List slots = new ArrayList<>(candidate.getSlots()); + validateExactDuplicates(slots); + validateInternalConflicts(slots); + } + + private void validateExactDuplicates(List slots) { + Set seen = new HashSet<>(); + for (ScheduleRuleSlot slot : slots) { + if (!seen.add(slotIdentity(slot))) { + throw new ScheduleRuleConflictException( + "Невозможно сохранить правило: в списке есть дублирующиеся слоты", + null, + List.of("slot"), + List.of("Дублирующийся слот") + ); + } + } + } + + private SlotIdentity slotIdentity(ScheduleRuleSlot slot) { + List subgroupIds = slot.getSubgroups().stream() + .map(Subgroup::getId) + .sorted() + .toList(); + return new SlotIdentity( + slot.getDayOfWeek(), + slot.getParity(), + timeSlotId(slot), + subgroupIds, + teacherId(slot), + classroomId(slot), + slot.getLessonType().getId(), + slot.getLessonFormat() + ); + } + + private void validateInternalConflicts(List slots) { + Map> activeWeeks = activeWeeksBySlot(slots); + for (int firstIndex = 0; firstIndex < slots.size(); firstIndex++) { + for (int secondIndex = firstIndex + 1; secondIndex < slots.size(); secondIndex++) { + ScheduleRuleSlot first = slots.get(firstIndex); + ScheduleRuleSlot second = slots.get(secondIndex); + if (!sameTimeSlot(first, second) + || !activeWeeksOverlap(activeWeeks.get(first), activeWeeks.get(second))) { + continue; + } + + List fields = new ArrayList<>(conflictFields(first, second)); + if (!fields.isEmpty()) { + throw new ScheduleRuleConflictException( + "Невозможно сохранить правило: слоты внутри правила конфликтуют", + null, + fields, + conflictReasons(fields) + ); + } + } + } + } + + private void validateAgainstSavedRules(ScheduleRule candidate, Long excludeRuleId) { + Map> candidateActiveWeeks = activeWeeksBySlot(candidate.getSlots()); + ScheduleRuleConflict conflict = scheduleRuleRepository + .findActiveBySemesterIdWithDetails(candidate.getSemester().getId(), excludeRuleId) + .stream() + .filter(ScheduleRule::isActiveRecord) + .filter(rule -> !Objects.equals(rule.getId(), excludeRuleId)) + .filter(rule -> rule.getSemester() != null + && Objects.equals(rule.getSemester().getId(), candidate.getSemester().getId())) + .map(rule -> toConflict(rule, candidate.getSlots(), candidateActiveWeeks, rule.getSlots())) + .filter(Objects::nonNull) + .min(Comparator.comparing(conflictResult -> conflictResult.rule().getId())) + .orElse(null); + if (conflict == null) { + return; + } + + List fields = new ArrayList<>(conflict.fields()); + throw new ScheduleRuleConflictException( + "Невозможно сохранить правило: слот занят", + toDto(conflict.rule()), + fields, + conflictReasons(fields) + ); + } + + private ScheduleRuleConflict toConflict(ScheduleRule existingRule, + Collection candidateSlots, + Map> candidateActiveWeeks, + Collection existingSlots) { + Map> existingActiveWeeks = activeWeeksBySlot(existingSlots); + LinkedHashSet fields = new LinkedHashSet<>(); + for (ScheduleRuleSlot candidateSlot : candidateSlots) { + for (ScheduleRuleSlot existingSlot : existingSlots) { + if (sameTimeSlot(candidateSlot, existingSlot) + && activeWeeksOverlap( + candidateActiveWeeks.get(candidateSlot), + existingActiveWeeks.get(existingSlot) + )) { + fields.addAll(conflictFields(candidateSlot, existingSlot)); + } + } + } + return fields.isEmpty() ? null : new ScheduleRuleConflict(existingRule, fields); + } + + private Set conflictFields(ScheduleRuleSlot first, ScheduleRuleSlot second) { + LinkedHashSet fields = new LinkedHashSet<>(); + if (Objects.equals(teacherId(first), teacherId(second))) { + fields.add("teacher"); + } + if (Objects.equals(classroomId(first), classroomId(second))) { + fields.add("classroom"); + } + if (sameAudience(first, second)) { + fields.add("group"); + } + return fields; + } + + private List conflictReasons(Collection fields) { + return fields.stream().map(this::conflictFieldLabel).toList(); + } + + private String conflictFieldLabel(String field) { + return switch (field) { + case "teacher" -> "Преподаватель"; + case "classroom" -> "Аудитория"; + case "group" -> "Группа"; + case "slot" -> "Дублирующийся слот"; + default -> field; + }; + } + + private boolean sameTimeSlot(ScheduleRuleSlot first, ScheduleRuleSlot second) { + return Objects.equals(first.getDayOfWeek(), second.getDayOfWeek()) + && parityOverlaps(first.getParity(), second.getParity()) + && Objects.equals(timeSlotId(first), timeSlotId(second)); + } + + private boolean parityOverlaps(ScheduleParity first, ScheduleParity second) { + if (Objects.equals(first, second)) { + return true; + } + return first == ScheduleParity.BOTH || second == ScheduleParity.BOTH; + } + + private Long teacherId(ScheduleRuleSlot slot) { + return slot.getTeacher() == null ? null : slot.getTeacher().getId(); + } + + private Long classroomId(ScheduleRuleSlot slot) { + return slot.getClassroom() == null ? null : slot.getClassroom().getId(); + } + + private Long timeSlotId(ScheduleRuleSlot slot) { + return slot.getTimeSlot() == null ? null : slot.getTimeSlot().getId(); + } + + private boolean sameAudience(ScheduleRuleSlot first, ScheduleRuleSlot second) { + Set commonGroupIds = groupIds(first); + commonGroupIds.retainAll(groupIds(second)); + + for (Long groupId : commonGroupIds) { + if (slotAppliesToWholeGroup(first, groupId) || slotAppliesToWholeGroup(second, groupId)) { + return true; + } + Set commonSubgroupIds = subgroupIdsForGroup(first, groupId); + commonSubgroupIds.retainAll(subgroupIdsForGroup(second, groupId)); + if (!commonSubgroupIds.isEmpty()) { + return true; + } + } + return false; + } + + private Set groupIds(ScheduleRuleSlot slot) { + if (!slot.getSubgroups().isEmpty()) { + return slot.getSubgroups().stream() + .filter(subgroup -> subgroup.getStudentGroup() != null) + .map(subgroup -> subgroup.getStudentGroup().getId()) + .collect(Collectors.toCollection(HashSet::new)); + } + if (slot.getScheduleRule() == null) { + return new HashSet<>(); + } + return slot.getScheduleRule().getGroups().stream() + .map(StudentGroup::getId) + .collect(Collectors.toCollection(HashSet::new)); + } + + private boolean slotAppliesToWholeGroup(ScheduleRuleSlot slot, Long groupId) { + return slot.getSubgroups().isEmpty() && groupIds(slot).contains(groupId); + } + + private Set subgroupIdsForGroup(ScheduleRuleSlot slot, Long groupId) { + return slot.getSubgroups().stream() + .filter(subgroup -> subgroup.getStudentGroup() != null) + .filter(subgroup -> Objects.equals(subgroup.getStudentGroup().getId(), groupId)) + .map(Subgroup::getId) + .collect(Collectors.toCollection(HashSet::new)); + } + + private Map> activeWeeksBySlot(Collection slots) { + Map> activeWeeks = new IdentityHashMap<>(); + slots.forEach(slot -> activeWeeks.put(slot, new HashSet<>())); + if (slots.isEmpty()) { + return activeWeeks; + } + + ScheduleRule rule = slots.iterator().next().getScheduleRule(); + if (rule == null || rule.getSemester() == null) { + return activeWeeks; + } + + int maxWeeks = maxWeeksForRule(rule); + for (ScheduleLessonCategory category : ScheduleLessonCategory.values()) { + int totalHours = rule.academicHoursFor(category); + if (totalHours <= 0) { + continue; + } + + List categorySlots = slots.stream() + .filter(slot -> ScheduleLessonCategory.fromLessonType(slot.getLessonType()) == category) + .sorted(this::compareSlotsForGeneration) + .toList(); + if (categorySlots.isEmpty()) { + continue; + } + + Map consumedHours = new HashMap<>(); + int startWeek = Math.max(1, rule.startWeekFor(category)); + for (int week = startWeek; week <= maxWeeks; week++) { + for (ScheduleRuleSlot slot : categorySlots) { + if (!slotAppliesToWeek(slot, week)) { + continue; + } + + for (String scopeKey : consumptionScopes(slot, category)) { + int consumed = consumedHours.getOrDefault(scopeKey, 0); + if (consumed >= totalHours) { + continue; + } + activeWeeks.get(slot).add(week); + consumedHours.put(scopeKey, consumed + ACADEMIC_HOURS_PER_SLOT); + } + } + } + } + return activeWeeks; + } + + private boolean activeWeeksOverlap(Set first, Set second) { + if (first == null || second == null || first.isEmpty() || second.isEmpty()) { + return false; + } + Set weeks = new HashSet<>(first); + weeks.retainAll(second); + return !weeks.isEmpty(); + } + + private int maxWeeksForRule(ScheduleRule rule) { + Semester semester = rule.getSemester(); + if (semester != null && semester.getStartDate() != null && semester.getEndDate() != null) { + long days = Math.max(1, ChronoUnit.DAYS.between(semester.getStartDate(), semester.getEndDate()) + 1); + return Math.max(1, (int) Math.ceil(days / 7.0)); + } + return 18; + } + + private int compareSlotsForGeneration(ScheduleRuleSlot first, ScheduleRuleSlot second) { + int dayCompare = Integer.compare( + first.getDayOfWeek() == null ? 0 : first.getDayOfWeek(), + second.getDayOfWeek() == null ? 0 : second.getDayOfWeek() + ); + if (dayCompare != 0) { + return dayCompare; + } + int orderCompare = Integer.compare( + first.getTimeSlot() == null || first.getTimeSlot().getOrderNumber() == null + ? 0 : first.getTimeSlot().getOrderNumber(), + second.getTimeSlot() == null || second.getTimeSlot().getOrderNumber() == null + ? 0 : second.getTimeSlot().getOrderNumber() + ); + if (orderCompare != 0) { + return orderCompare; + } + return Long.compare( + first.getId() == null ? 0L : first.getId(), + second.getId() == null ? 0L : second.getId() + ); + } + + private boolean slotAppliesToWeek(ScheduleRuleSlot slot, int week) { + ScheduleParity parity = slot.getParity(); + if (parity == null || parity == ScheduleParity.BOTH) { + return true; + } + ScheduleParity weekParity = week % 2 == 0 ? ScheduleParity.EVEN : ScheduleParity.ODD; + return parity == weekParity; + } + + private List consumptionScopes(ScheduleRuleSlot slot, ScheduleLessonCategory category) { + if (category == ScheduleLessonCategory.LABORATORY && !slot.getSubgroups().isEmpty()) { + return slot.getSubgroups().stream() + .map(subgroup -> "subgroup:" + subgroup.getId()) + .toList(); + } + if (slot.getScheduleRule() == null || slot.getScheduleRule().getGroups().isEmpty()) { + return List.of("rule"); + } + return slot.getScheduleRule().getGroups().stream() + .map(group -> "group:" + group.getId()) + .toList(); + } + + private void applyCandidate(ScheduleRule managedRule, ScheduleRule candidate) { + managedRule.setSubject(candidate.getSubject()); + managedRule.setSemester(candidate.getSemester()); + managedRule.setLectureAcademicHours(candidate.getLectureAcademicHours()); + managedRule.setLaboratoryAcademicHours(candidate.getLaboratoryAcademicHours()); + managedRule.setPracticeAcademicHours(candidate.getPracticeAcademicHours()); + managedRule.setLectureStartWeek(candidate.getLectureStartWeek()); + managedRule.setLaboratoryStartWeek(candidate.getLaboratoryStartWeek()); + managedRule.setPracticeStartWeek(candidate.getPracticeStartWeek()); + + managedRule.getGroups().clear(); + managedRule.getGroups().addAll(candidate.getGroups()); + managedRule.getSlots().clear(); + for (ScheduleRuleSlot slot : candidate.getSlots()) { + slot.setScheduleRule(managedRule); + managedRule.getSlots().add(slot); + } + } + + private ScheduleRuleDto toDto(ScheduleRule rule) { + List groups = rule.getGroups().stream() + .sorted(Comparator.comparing(StudentGroup::getName)) + .toList(); + List slots = rule.getSlots().stream() + .sorted(Comparator + .comparing(ScheduleRuleSlot::getDayOfWeek) + .thenComparing(slot -> slot.getTimeSlot().getOrderNumber()) + .thenComparing(ScheduleRuleSlot::getId, Comparator.nullsLast(Comparator.naturalOrder()))) + .map(this::toSlotDto) + .toList(); + + return new ScheduleRuleDto( + rule.getId(), + rule.getSubject().getId(), + rule.getSubject().getName(), + rule.getSemester().getId(), + rule.getSemester().getAcademicYear().getTitle(), + rule.getSemester().getSemesterType(), + rule.getLectureAcademicHours(), + rule.getLaboratoryAcademicHours(), + rule.getPracticeAcademicHours(), + rule.getLectureStartWeek(), + rule.getLaboratoryStartWeek(), + rule.getPracticeStartWeek(), + groups.stream().map(StudentGroup::getId).toList(), + groups.stream().map(StudentGroup::getName).toList(), + slots + ); + } + + private ScheduleRuleSlotDto toSlotDto(ScheduleRuleSlot slot) { + TimeSlot timeSlot = slot.getTimeSlot(); + List sortedSubgroups = sortedSubgroups(slot); + return new ScheduleRuleSlotDto( + slot.getId(), + slot.getDayOfWeek(), + dayName(slot.getDayOfWeek()), + slot.getParity(), + timeSlot.getId(), + timeSlot.getOrderNumber(), + formatTimeSlot(timeSlot), + sortedSubgroups.isEmpty() ? null : sortedSubgroups.get(0).getId(), + sortedSubgroups.isEmpty() ? null : formatSubgroup(sortedSubgroups.get(0)), + sortedSubgroups.stream().map(Subgroup::getId).toList(), + sortedSubgroups.stream().map(this::formatSubgroup).toList(), + slot.getTeacher().getId(), + ScheduleGeneratorService.displayUserName(slot.getTeacher()), + slot.getClassroom().getId(), + slot.getClassroom().getName(), + slot.getLessonType().getId(), + slot.getLessonType().getLessonType(), + slot.getLessonFormat() + ); + } + + private String dayName(Integer dayOfWeek) { + if (dayOfWeek == null || dayOfWeek < 1 || dayOfWeek > 7) { + return "Неизвестно"; + } + return ScheduleGeneratorService.dayName(DayOfWeek.of(dayOfWeek)); + } + + private String formatTimeSlot(TimeSlot timeSlot) { + return timeSlot.getStartTime() + " - " + timeSlot.getEndTime(); + } + + private String formatSubgroup(Subgroup subgroup) { + return subgroup.getStudentGroup().getName() + ": " + subgroup.getName(); + } + + private List sortedSubgroups(ScheduleRuleSlot slot) { + return slot.getSubgroups().stream() + .sorted(Comparator + .comparing((Subgroup subgroup) -> subgroup.getStudentGroup().getName()) + .thenComparing(Subgroup::getName)) + .toList(); + } + + private record SlotIdentity(Integer dayOfWeek, + ScheduleParity parity, + Long timeSlotId, + List subgroupIds, + Long teacherId, + Long classroomId, + Long lessonTypeId, + String lessonFormat) { + } + + private record ScheduleRuleConflict(ScheduleRule rule, LinkedHashSet fields) { + } +} diff --git a/backend/src/main/java/com/magistr/app/service/TenantDatabaseMigrationService.java b/backend/src/main/java/com/magistr/app/service/TenantDatabaseMigrationService.java new file mode 100644 index 0000000..f482a43 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/TenantDatabaseMigrationService.java @@ -0,0 +1,25 @@ +package com.magistr.app.service; + +import org.flywaydb.core.Flyway; +import org.springframework.stereotype.Service; + +import javax.sql.DataSource; +import java.util.Objects; + +@Service +public class TenantDatabaseMigrationService { + + /** + * Выполняет миграции указанной tenant-БД. Ошибка намеренно не перехватывается: + * вызывающий lifecycle обязан отменить активацию неподготовленного пула. + */ + public void migrate(DataSource dataSource) { + Objects.requireNonNull(dataSource, "DataSource для миграции обязателен"); + Flyway.configure() + .dataSource(dataSource) + .baselineOnMigrate(true) + .baselineVersion("1") + .load() + .migrate(); + } +} diff --git a/backend/src/main/java/com/magistr/app/service/TenantLifecycleException.java b/backend/src/main/java/com/magistr/app/service/TenantLifecycleException.java new file mode 100644 index 0000000..be5fc83 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/TenantLifecycleException.java @@ -0,0 +1,15 @@ +package com.magistr.app.service; + +/** + * Безопасная для HTTP-ответа ошибка изменения lifecycle тенанта. + */ +public class TenantLifecycleException extends RuntimeException { + + public TenantLifecycleException(String message) { + super(message); + } + + public TenantLifecycleException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java b/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java new file mode 100644 index 0000000..ed3c26f --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java @@ -0,0 +1,339 @@ +package com.magistr.app.service; + +import com.magistr.app.config.tenant.KubernetesTenantSecretUpdater; +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.zaxxer.hikari.HikariDataSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.regex.Pattern; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +@Service +public class TenantLifecycleService { + + private static final Logger log = LoggerFactory.getLogger(TenantLifecycleService.class); + private static final Pattern DOMAIN_PATTERN = Pattern.compile( + "[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?" + ); + + private final TenantRoutingDataSource routingDataSource; + private final KubernetesTenantSecretUpdater tenantSecretUpdater; + private final TenantDatabaseMigrationService migrationService; + private final RetiredTenantPoolService retiredPoolService; + + public TenantLifecycleService(TenantRoutingDataSource routingDataSource, + KubernetesTenantSecretUpdater tenantSecretUpdater, + TenantDatabaseMigrationService migrationService, + RetiredTenantPoolService retiredPoolService) { + this.routingDataSource = routingDataSource; + this.tenantSecretUpdater = tenantSecretUpdater; + this.migrationService = migrationService; + this.retiredPoolService = retiredPoolService; + } + + /** + * Выполняет составную lifecycle-операцию под общим reentrant monitor. + * Используется для сериализации внешних read/compare/apply последовательностей + * с add/update/remove, чтобы watcher не применял устаревший снимок. + */ + public synchronized T executeSerialized(Supplier action) { + return action.get(); + } + + /** + * Выполняет составную lifecycle-операцию без возвращаемого значения. + */ + public synchronized void executeSerialized(Runnable action) { + action.run(); + } + + /** + * Добавляет или обновляет tenant без разрыва действующего подключения. + */ + public synchronized TenantConfig addOrUpdateTenant(TenantConfig requestedConfig) { + TenantConfig config = validateAndNormalize(requestedConfig); + Map oldConfigs = routingDataSource.snapshotTenantConfigs(); + Map desiredConfigs = new LinkedHashMap<>(oldConfigs); + desiredConfigs.put(config.getDomain(), copyConfig(config)); + + HikariDataSource candidate = null; + boolean activated = false; + try { + candidate = prepareCandidate(config); + verifyConnection(candidate); + migrateCandidate(candidate); + persistDesiredWithCompensation(desiredConfigs, oldConfigs); + + TenantRoutingDataSource.TenantState previous; + try { + previous = routingDataSource.swapTenant(config, candidate); + } catch (RuntimeException activationFailure) { + throw activationFailureAfterCompensation(oldConfigs, activationFailure); + } + + activated = true; + retireDataSource(previous == null ? null : previous.dataSource()); + log.info("Lifecycle тенанта '{}' успешно применён", config.getDomain()); + return copyConfig(config); + } finally { + if (!activated) { + closeCandidateDataSource(candidate); + } + } + } + + /** + * Сначала сохраняет desired-конфигурацию, затем локально отключает tenant. + */ + public synchronized TenantConfig removeTenant(String requestedDomain) { + String domain = validateAndNormalizeDomain(requestedDomain); + Map oldConfigs = routingDataSource.snapshotTenantConfigs(); + TenantConfig existing = oldConfigs.get(domain); + if (existing == null) { + throw new NoSuchElementException("Тенант '" + domain + "' не найден"); + } + + Map desiredConfigs = new LinkedHashMap<>(oldConfigs); + desiredConfigs.remove(domain); + persistDesiredWithCompensation(desiredConfigs, oldConfigs); + + TenantRoutingDataSource.TenantState removed; + try { + removed = routingDataSource.removeTenantAtomically(domain); + if (removed == null) { + throw new IllegalStateException("Локальное состояние тенанта отсутствует"); + } + } catch (RuntimeException removalFailure) { + throw removalFailureAfterCompensation(oldConfigs, removalFailure); + } + + retireDataSource(removed.dataSource()); + log.info("Lifecycle тенанта '{}' удалён", domain); + return copyConfig(existing); + } + + /** + * Синхронизирует уже персистированный список из mounted Secret. Метод не пишет + * Secret повторно и использует тот же monitor, что ручные API add/update/remove. + * Обновление параметров существующего domain остаётся отдельной задачей watcher №13. + */ + public synchronized void synchronizeFromPersistedConfig(List requestedConfigs) { + if (requestedConfigs == null) { + throw new IllegalArgumentException("Список конфигураций тенантов обязателен"); + } + List configs = requestedConfigs.stream() + .map(this::validateAndNormalize) + .toList(); + Set desiredDomains = configs.stream() + .map(TenantConfig::getDomain) + .collect(Collectors.toSet()); + + for (TenantConfig config : configs) { + if (!routingDataSource.hasTenant(config.getDomain())) { + log.info("Активируем нового тенанта '{}' из persisted-конфигурации", config.getDomain()); + activatePersistedConfig(config); + } + } + + for (String existingDomain : new ArrayList<>(routingDataSource.snapshotTenantConfigs().keySet())) { + if (!desiredDomains.contains(existingDomain)) { + log.info("Отключаем тенанта '{}' — его нет в persisted-конфигурации", existingDomain); + TenantRoutingDataSource.TenantState removed = + routingDataSource.removeTenantAtomically(existingDomain); + retireDataSource(removed == null ? null : removed.dataSource()); + } + } + } + + private void activatePersistedConfig(TenantConfig config) { + HikariDataSource candidate = null; + boolean activated = false; + try { + candidate = prepareCandidate(config); + verifyConnection(candidate); + migrateCandidate(candidate); + TenantRoutingDataSource.TenantState previous = routingDataSource.swapTenant(config, candidate); + activated = true; + retireDataSource(previous == null ? null : previous.dataSource()); + } finally { + if (!activated) { + closeCandidateDataSource(candidate); + } + } + } + + private HikariDataSource prepareCandidate(TenantConfig config) { + try { + return routingDataSource.prepareTenantDataSource(config); + } catch (RuntimeException preparationFailure) { + logTechnicalFailure("Не удалось создать временный pool тенанта", preparationFailure); + throw new TenantLifecycleException("Не удалось подготовить подключение к базе данных тенанта", + preparationFailure); + } + } + + private void verifyConnection(HikariDataSource candidate) { + try (Connection connection = candidate.getConnection()) { + if (!connection.isValid(5)) { + throw new TenantLifecycleException("База данных тенанта не подтвердила готовность подключения"); + } + } catch (TenantLifecycleException e) { + throw e; + } catch (Exception connectionFailure) { + logTechnicalFailure("Не удалось проверить временное подключение тенанта", connectionFailure); + throw new TenantLifecycleException("Не удалось подключиться к базе данных тенанта", connectionFailure); + } + } + + private void migrateCandidate(DataSource candidate) { + try { + migrationService.migrate(candidate); + } catch (RuntimeException migrationFailure) { + logTechnicalFailure("Миграции временной tenant-БД завершились ошибкой", migrationFailure); + throw new TenantLifecycleException("Не удалось выполнить миграции базы данных тенанта", migrationFailure); + } + } + + private void persistDesired(Map desiredConfigs) { + boolean persisted; + try { + persisted = tenantSecretUpdater.updateTenantsConfig(sortedConfigs(desiredConfigs)); + } catch (RuntimeException persistenceFailure) { + logTechnicalFailure("Персистенция tenant Secret завершилась ошибкой", persistenceFailure); + throw new TenantLifecycleException("Не удалось сохранить конфигурацию тенантов", persistenceFailure); + } + if (!persisted) { + throw new TenantLifecycleException("Не удалось сохранить конфигурацию тенантов"); + } + } + + private void persistDesiredWithCompensation(Map desiredConfigs, + Map oldConfigs) { + try { + persistDesired(desiredConfigs); + } catch (TenantLifecycleException persistenceFailure) { + boolean restored = restorePersistedSnapshot(oldConfigs); + String message = restored + ? "Не удалось сохранить конфигурацию тенантов; прежняя конфигурация восстановлена" + : "Не удалось сохранить конфигурацию тенантов; требуется проверить tenant Secret"; + throw new TenantLifecycleException(message, persistenceFailure); + } + } + + private TenantLifecycleException activationFailureAfterCompensation(Map oldConfigs, + RuntimeException activationFailure) { + boolean restored = restorePersistedSnapshot(oldConfigs); + logTechnicalFailure("Активация подготовленного tenant pool завершилась ошибкой", activationFailure); + String message = restored + ? "Не удалось активировать подключение тенанта; сохранённая конфигурация восстановлена" + : "Не удалось активировать подключение тенанта; требуется проверить tenant Secret"; + return new TenantLifecycleException(message, activationFailure); + } + + private TenantLifecycleException removalFailureAfterCompensation(Map oldConfigs, + RuntimeException removalFailure) { + boolean restored = restorePersistedSnapshot(oldConfigs); + logTechnicalFailure("Локальное удаление тенанта завершилось ошибкой", removalFailure); + String message = restored + ? "Не удалось отключить тенанта; сохранённая конфигурация восстановлена" + : "Не удалось отключить тенанта; требуется проверить tenant Secret"; + return new TenantLifecycleException(message, removalFailure); + } + + private boolean restorePersistedSnapshot(Map oldConfigs) { + try { + boolean restored = tenantSecretUpdater.updateTenantsConfig(sortedConfigs(oldConfigs)); + if (!restored) { + log.error("Не удалось компенсирующе восстановить tenant Secret"); + } + return restored; + } catch (RuntimeException compensationFailure) { + logTechnicalFailure("Компенсирующее восстановление tenant Secret завершилось ошибкой", + compensationFailure); + return false; + } + } + + private List sortedConfigs(Map configs) { + List sorted = new ArrayList<>(); + configs.values().stream() + .map(this::copyConfig) + .sorted(Comparator.comparing(TenantConfig::getDomain)) + .forEach(sorted::add); + return sorted; + } + + private TenantConfig validateAndNormalize(TenantConfig config) { + if (config == null) { + throw new IllegalArgumentException("Конфигурация тенанта обязательна"); + } + String domain = validateAndNormalizeDomain(config.getDomain()); + if (config.getUrl() == null || config.getUrl().isBlank()) { + throw new IllegalArgumentException("URL базы данных не может быть пустым"); + } + String url = config.getUrl().trim(); + if (!url.startsWith("jdbc:")) { + throw new IllegalArgumentException("URL базы данных должен начинаться с jdbc:"); + } + String name = config.getName() == null || config.getName().isBlank() + ? domain + : config.getName().trim(); + return new TenantConfig(name, domain, url, config.getUsername(), config.getPassword()); + } + + private String validateAndNormalizeDomain(String domain) { + if (domain == null || domain.isBlank()) { + throw new IllegalArgumentException("Домен не может быть пустым"); + } + String normalized = domain.trim().toLowerCase(Locale.ROOT); + if (!DOMAIN_PATTERN.matcher(normalized).matches()) { + throw new IllegalArgumentException("Домен содержит недопустимые символы"); + } + return normalized; + } + + private TenantConfig copyConfig(TenantConfig config) { + return new TenantConfig( + config.getName(), + config.getDomain(), + config.getUrl(), + config.getUsername(), + config.getPassword() + ); + } + + private void retireDataSource(DataSource dataSource) { + if (dataSource != null) { + retiredPoolService.retire(dataSource); + } + } + + private void closeCandidateDataSource(DataSource dataSource) { + if (dataSource instanceof HikariDataSource hikariDataSource) { + try { + hikariDataSource.close(); + } catch (RuntimeException closeFailure) { + logTechnicalFailure("Не удалось штатно закрыть Hikari pool", closeFailure); + } + } + } + + private void logTechnicalFailure(String message, Throwable failure) { + log.error("{}: errorType={}", message, failure.getClass().getSimpleName()); + log.debug("Технические детали tenant lifecycle", failure); + } +} diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index ed1e51f..9ceec05 100755 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -15,7 +15,7 @@ spring.jpa.open-in-view=false app.tenants.config-path=${TENANTS_CONFIG_PATH:tenants.json} # JWT авторизация -app.jwt.secret=${JWT_SECRET:dev-only-change-this-jwt-secret-32-bytes-minimum} +app.jwt.secret=${JWT_SECRET:} app.jwt.access-ttl=${JWT_ACCESS_TOKEN_TTL:15m} app.jwt.refresh-ttl=${JWT_REFRESH_TOKEN_TTL:7d} app.jwt.refresh-cookie-name=${JWT_REFRESH_COOKIE_NAME:magistr_refresh} diff --git a/backend/src/main/resources/db/migration/V3__schedule_override_invariants.sql b/backend/src/main/resources/db/migration/V3__schedule_override_invariants.sql new file mode 100644 index 0000000..ca5b5e6 --- /dev/null +++ b/backend/src/main/resources/db/migration/V3__schedule_override_invariants.sql @@ -0,0 +1,94 @@ +DO $$ +DECLARE + cancel_violations BIGINT; + move_violations BIGINT; + replace_violations BIGINT; + format_violations BIGINT; +BEGIN + SELECT count(*) + INTO cancel_violations + FROM schedule_overrides + WHERE action = 'CANCEL' + AND (new_time_slot_id IS NOT NULL + OR new_classroom_id IS NOT NULL + OR new_teacher_id IS NOT NULL + OR new_lesson_format IS NOT NULL); + + SELECT count(*) + INTO move_violations + FROM schedule_overrides + WHERE action = 'MOVE' + AND new_time_slot_id IS NULL + AND new_classroom_id IS NULL; + + SELECT count(*) + INTO replace_violations + FROM schedule_overrides + WHERE action = 'REPLACE' + AND new_teacher_id IS NULL + AND new_classroom_id IS NULL + AND new_lesson_format IS NULL; + + SELECT count(*) + INTO format_violations + FROM schedule_overrides + WHERE new_lesson_format IS NOT NULL + AND new_lesson_format NOT IN ('Очно', 'Онлайн'); + + IF cancel_violations > 0 + OR move_violations > 0 + OR replace_violations > 0 + OR format_violations > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = format( + 'Невозможно применить инварианты точечных изменений: CANCEL=%s, MOVE=%s, REPLACE=%s, формат=%s. Исправьте данные tenant-БД и повторите миграцию.', + cancel_violations, + move_violations, + replace_violations, + format_violations + ); + END IF; +END $$; + +ALTER TABLE schedule_overrides + ADD CONSTRAINT chk_schedule_overrides_cancel_payload + CHECK ( + action <> 'CANCEL' + OR ( + new_time_slot_id IS NULL + AND new_classroom_id IS NULL + AND new_teacher_id IS NULL + AND new_lesson_format IS NULL + ) + ) NOT VALID, + ADD CONSTRAINT chk_schedule_overrides_move_payload + CHECK ( + action <> 'MOVE' + OR new_time_slot_id IS NOT NULL + OR new_classroom_id IS NOT NULL + ) NOT VALID, + ADD CONSTRAINT chk_schedule_overrides_replace_payload + CHECK ( + action <> 'REPLACE' + OR new_teacher_id IS NOT NULL + OR new_classroom_id IS NOT NULL + OR new_lesson_format IS NOT NULL + ) NOT VALID, + ADD CONSTRAINT chk_schedule_overrides_format + CHECK ( + new_lesson_format IS NULL + OR new_lesson_format IN ('Очно', 'Онлайн') + ) NOT VALID; + +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_cancel_payload; + +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_move_payload; + +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_replace_payload; + +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_format; diff --git a/backend/src/main/resources/db/migration/V4__schedule_rule_even_hours.sql b/backend/src/main/resources/db/migration/V4__schedule_rule_even_hours.sql new file mode 100644 index 0000000..ee2d767 --- /dev/null +++ b/backend/src/main/resources/db/migration/V4__schedule_rule_even_hours.sql @@ -0,0 +1,97 @@ +DO $$ +DECLARE + lecture_violations BIGINT; + laboratory_violations BIGINT; + practice_violations BIGINT; +BEGIN + SELECT count(*) + INTO lecture_violations + FROM schedule_rules + WHERE mod(lecture_academic_hours, 2) <> 0; + + SELECT count(*) + INTO laboratory_violations + FROM schedule_rules + WHERE mod(laboratory_academic_hours, 2) <> 0; + + SELECT count(*) + INTO practice_violations + FROM schedule_rules + WHERE mod(practice_academic_hours, 2) <> 0; + + IF lecture_violations > 0 + OR laboratory_violations > 0 + OR practice_violations > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = format( + 'Невозможно применить инвариант чётности академических часов правил расписания: лекции=%s, лабораторные=%s, практики=%s. Исправьте данные tenant-БД и повторите миграцию.', + lecture_violations, + laboratory_violations, + practice_violations + ); + END IF; +END $$; + +DO $$ +DECLARE + duplicate_slot_groups BIGINT; +BEGIN + SELECT count(*) + INTO duplicate_slot_groups + FROM ( + SELECT + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + FROM schedule_rule_slots + GROUP BY + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + HAVING count(*) > 1 + ) duplicates; + + IF duplicate_slot_groups > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23505', + MESSAGE = format( + 'Невозможно применить инвариант уникальности слотов правил расписания: найдено групп точных дублей=%s. Исправьте данные tenant-БД и повторите миграцию.', + duplicate_slot_groups + ); + END IF; +END $$; + +ALTER TABLE schedule_rules + ADD CONSTRAINT chk_schedule_rules_academic_hours_even + CHECK ( + mod(lecture_academic_hours, 2) = 0 + AND mod(laboratory_academic_hours, 2) = 0 + AND mod(practice_academic_hours, 2) = 0 + ) NOT VALID; + +ALTER TABLE schedule_rules + VALIDATE CONSTRAINT chk_schedule_rules_academic_hours_even; + +ALTER TABLE schedule_rule_slots + ADD CONSTRAINT uq_schedule_rule_slots_exact_payload + UNIQUE ( + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + ); diff --git a/backend/src/test/java/com/magistr/app/config/auth/AuthorizationInterceptorTest.java b/backend/src/test/java/com/magistr/app/config/auth/AuthorizationInterceptorTest.java new file mode 100644 index 0000000..50dae7c --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/auth/AuthorizationInterceptorTest.java @@ -0,0 +1,137 @@ +package com.magistr.app.config.auth; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.magistr.app.config.tenant.TenantContext; +import com.magistr.app.model.Role; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +class AuthorizationInterceptorTest { + + private static final String TENANT = "tenant-a"; + private static final String TEACHER_TOKEN = "teacher-token"; + + private JwtTokenService jwtTokenService; + private ContextProbeController controller; + private MockMvc mockMvc; + + @BeforeEach + void setUp() { + AuthContext.clear(); + TenantContext.clear(); + TenantContext.setCurrentTenant(TENANT); + + jwtTokenService = mock(JwtTokenService.class); + controller = new ContextProbeController(); + mockMvc = MockMvcBuilders + .standaloneSetup(controller) + .addInterceptors(new AuthorizationInterceptor(jwtTokenService, new ObjectMapper())) + .build(); + } + + @AfterEach + void clearThreadLocalContexts() { + AuthContext.clear(); + TenantContext.clear(); + } + + @Test + @DisplayName("Отказ по роли не оставляет пользователя в следующих запросах того же потока") + void forbiddenRequestDoesNotLeakAuthContextToFollowingRequestsOnSameThread() throws Exception { + AuthenticatedUser teacher = new AuthenticatedUser(7L, "преподаватель", Role.TEACHER, 3L); + when(jwtTokenService.authenticate(TEACHER_TOKEN, TENANT)).thenReturn(Optional.of(teacher)); + long junitThreadId = Thread.currentThread().getId(); + + mockMvc.perform(get("/api/test/admin") + .header("Authorization", "Bearer " + TEACHER_TOKEN)) + .andExpect(status().isForbidden()) + .andExpect(jsonPath("$.message").value("Недостаточно прав для выполнения операции")); + + assertThat(AuthContext.getCurrentUser()) + .as("Контекст должен быть пуст после отказа по роли") + .isNull(); + + mockMvc.perform(post("/api/auth/refresh")) + .andExpect(status().isOk()); + + assertThat(controller.publicHandlerCalled) + .as("Публичный обработчик должен быть вызван") + .isTrue(); + assertThat(controller.publicHandlerUser) + .as("Публичный обработчик не должен видеть пользователя предыдущего запроса") + .isNull(); + assertThat(controller.publicHandlerThreadId) + .as("Публичный запрос должен выполняться в потоке JUnit") + .isEqualTo(junitThreadId); + + mockMvc.perform(get("/api/test/teacher") + .header("Authorization", "Bearer " + TEACHER_TOKEN)) + .andExpect(status().isOk()); + + assertThat(controller.protectedHandlerUser) + .as("Разрешённый обработчик должен видеть аутентифицированного пользователя") + .isEqualTo(teacher); + assertThat(controller.protectedHandlerThreadId) + .as("Разрешённый запрос должен выполняться в том же потоке JUnit") + .isEqualTo(junitThreadId); + assertThat(controller.protectedHandlerThreadId) + .as("Последовательные обработчики должны выполняться в одном потоке") + .isEqualTo(controller.publicHandlerThreadId); + assertThat(AuthContext.getCurrentUser()) + .as("После завершения разрешённого запроса контекст должен быть очищен") + .isNull(); + + verify(jwtTokenService, times(2)).authenticate(TEACHER_TOKEN, TENANT); + } + + @RestController + static class ContextProbeController { + + private boolean publicHandlerCalled; + private AuthenticatedUser publicHandlerUser; + private long publicHandlerThreadId; + private AuthenticatedUser protectedHandlerUser; + private long protectedHandlerThreadId; + + @PostMapping("/api/auth/refresh") + String publicRefresh() { + publicHandlerCalled = true; + publicHandlerUser = AuthContext.getCurrentUser(); + publicHandlerThreadId = Thread.currentThread().getId(); + return publicHandlerUser == null ? "Контекст пуст" : "Контекст содержит пользователя"; + } + + @GetMapping("/api/test/admin") + @RequireRoles(Role.ADMIN) + String adminOnly() { + return "Администратор"; + } + + @GetMapping("/api/test/teacher") + @RequireRoles(Role.TEACHER) + String teacherOnly() { + protectedHandlerUser = AuthContext.getCurrentUser(); + protectedHandlerThreadId = Thread.currentThread().getId(); + return protectedHandlerUser.username(); + } + } +} diff --git a/backend/src/test/java/com/magistr/app/config/auth/JwtPropertiesTest.java b/backend/src/test/java/com/magistr/app/config/auth/JwtPropertiesTest.java new file mode 100644 index 0000000..510cb7d --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/auth/JwtPropertiesTest.java @@ -0,0 +1,71 @@ +package com.magistr.app.config.auth; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class JwtPropertiesTest { + + @Test + void rejectsMissingSecret() { + JwtProperties properties = new JwtProperties(); + + assertThatThrownBy(properties::secretBytes) + .isInstanceOf(IllegalStateException.class) + .hasMessage("JWT_SECRET обязателен и не может быть пустым"); + } + + @Test + void rejectsShortSecret() { + JwtProperties properties = properties("short-value", true); + + assertThatThrownBy(properties::secretBytes) + .isInstanceOf(IllegalStateException.class) + .hasMessage("JWT_SECRET должен быть не короче 32 байт"); + } + + @Test + void rejectsPlaceholderSecret() { + String placeholder = String.join("-", "replace", "with", "production", "value") + "x".repeat(32); + JwtProperties properties = properties(placeholder, true); + + assertThatThrownBy(properties::secretBytes) + .isInstanceOf(IllegalStateException.class) + .hasMessage("JWT_SECRET содержит известное небезопасное или шаблонное значение"); + } + + @Test + void rejectsInsecureRefreshCookieInProduction() { + JwtProperties properties = properties(testSecret(), false); + + assertThatThrownBy(() -> properties.validateForEnvironment(true)) + .isInstanceOf(IllegalStateException.class) + .hasMessage("В production-профиле JWT_REFRESH_COOKIE_SECURE должен иметь значение true"); + } + + @Test + void allowsInsecureRefreshCookieOutsideProduction() { + JwtProperties properties = properties(testSecret(), false); + + assertThatCode(() -> properties.validateForEnvironment(false)).doesNotThrowAnyException(); + } + + @Test + void acceptsSecureProductionConfiguration() { + JwtProperties properties = properties(testSecret(), true); + + assertThatCode(() -> properties.validateForEnvironment(true)).doesNotThrowAnyException(); + } + + private JwtProperties properties(String secret, boolean secureCookie) { + JwtProperties properties = new JwtProperties(); + properties.setSecret(secret); + properties.setRefreshCookieSecure(secureCookie); + return properties; + } + + private String testSecret() { + return "A1b2C3d4".repeat(6); + } +} diff --git a/backend/src/test/java/com/magistr/app/config/auth/JwtSecurityStartupValidatorTest.java b/backend/src/test/java/com/magistr/app/config/auth/JwtSecurityStartupValidatorTest.java new file mode 100644 index 0000000..74b1aaa --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/auth/JwtSecurityStartupValidatorTest.java @@ -0,0 +1,101 @@ +package com.magistr.app.config.auth; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.mock.env.MockEnvironment; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class JwtSecurityStartupValidatorTest { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withUserConfiguration(JwtValidationTestConfiguration.class) + .withPropertyValues("spring.profiles.active=production"); + + @Test + void productionContextDoesNotStartWithoutSecret() { + contextRunner + .withPropertyValues("app.jwt.refresh-cookie-secure=true") + .run(context -> { + assertThat(context).hasFailed(); + assertThat(context.getStartupFailure()) + .hasRootCauseMessage("JWT_SECRET обязателен и не может быть пустым"); + }); + } + + @Test + void productionContextDoesNotStartWithPlaceholderSecret() { + String placeholder = String.join("-", "change", "this", "production", "value") + "x".repeat(32); + + contextRunner + .withPropertyValues( + "app.jwt.secret=" + placeholder, + "app.jwt.refresh-cookie-secure=true" + ) + .run(context -> { + assertThat(context).hasFailed(); + assertThat(context.getStartupFailure()) + .hasRootCauseMessage( + "JWT_SECRET содержит известное небезопасное или шаблонное значение" + ); + }); + } + + @Test + void productionContextStartsWithSecureConfiguration() { + contextRunner + .withPropertyValues( + "app.jwt.secret=" + "A1b2C3d4".repeat(6), + "app.jwt.refresh-cookie-secure=true" + ) + .run(context -> assertThat(context).hasNotFailed()); + } + + @Test + void stopsStartupForInsecureProductionCookie() { + JwtProperties properties = properties(false); + MockEnvironment environment = new MockEnvironment(); + environment.setActiveProfiles("production"); + + JwtSecurityStartupValidator validator = new JwtSecurityStartupValidator(properties, environment); + + assertThatThrownBy(validator::validate) + .isInstanceOf(IllegalStateException.class) + .hasMessage("В production-профиле JWT_REFRESH_COOKIE_SECURE должен иметь значение true"); + } + + @Test + void acceptsSecureProductionConfiguration() { + JwtProperties properties = properties(true); + MockEnvironment environment = new MockEnvironment(); + environment.setActiveProfiles("production"); + + JwtSecurityStartupValidator validator = new JwtSecurityStartupValidator(properties, environment); + + assertThatCode(validator::validate).doesNotThrowAnyException(); + } + + private JwtProperties properties(boolean secureCookie) { + JwtProperties properties = new JwtProperties(); + properties.setSecret("A1b2C3d4".repeat(6)); + properties.setRefreshCookieSecure(secureCookie); + return properties; + } + + @Configuration(proxyBeanMethods = false) + @EnableConfigurationProperties(JwtProperties.class) + static class JwtValidationTestConfiguration { + + @Bean + JwtSecurityStartupValidator jwtSecurityStartupValidator(JwtProperties properties, + Environment environment) { + return new JwtSecurityStartupValidator(properties, environment); + } + } +} diff --git a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java new file mode 100644 index 0000000..039b53c --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java @@ -0,0 +1,205 @@ +package com.magistr.app.config.auth; + +import com.magistr.app.model.AuthRefreshToken; +import com.magistr.app.model.Role; +import com.magistr.app.model.User; +import com.magistr.app.repository.AuthRefreshTokenRepository; +import com.magistr.app.repository.UserRepository; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.springframework.aop.support.AopUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Import; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.transaction.support.TransactionTemplate; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +@Testcontainers +@SpringBootTest( + classes = RefreshTokenServiceConcurrencyIntegrationTest.TestApplication.class, + properties = "app.jwt.refresh-ttl=7d" +) +class RefreshTokenServiceConcurrencyIntegrationTest { + + private static final String TENANT = "test-tenant"; + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @DynamicPropertySource + static void databaseProperties(DynamicPropertyRegistry registry) { + registry.add("spring.datasource.url", POSTGRES::getJdbcUrl); + registry.add("spring.datasource.username", POSTGRES::getUsername); + registry.add("spring.datasource.password", POSTGRES::getPassword); + } + + @Autowired + private RefreshTokenService service; + + @Autowired + private AuthRefreshTokenRepository tokenRepository; + + @Autowired + private UserRepository userRepository; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private TransactionTemplate transactionTemplate; + + private ExecutorService executor; + + @AfterEach + void stopExecutor() throws InterruptedException { + if (executor == null) { + return; + } + executor.shutdownNow(); + assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); + } + + @Test + void onlyOneConcurrentRotationCreatesNextSession() throws Exception { + assertThat(AopUtils.isAopProxy(service)).isTrue(); + + User user = createTestUser(); + String rawToken = service.createSession(user, TENANT, "Исходный браузер", "127.0.0.1"); + + executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + List>> futures = new ArrayList<>(); + + transactionTemplate.executeWithoutResult(status -> { + Long lockedTokenId = jdbcTemplate.queryForObject( + "SELECT id FROM auth_refresh_tokens WHERE token_hash = ? FOR UPDATE", + Long.class, + service.hashToken(rawToken) + ); + assertThat(lockedTokenId).isNotNull(); + jdbcTemplate.execute("LOCK TABLE auth_refresh_tokens IN ACCESS EXCLUSIVE MODE"); + + futures.add(executor.submit( + () -> rotateAfterSignal(rawToken, ready, start, "Первый браузер") + )); + futures.add(executor.submit( + () -> rotateAfterSignal(rawToken, ready, start, "Второй браузер") + )); + + awaitReady(ready); + start.countDown(); + awaitBlockedRotations(); + }); + + List> results = List.of( + futures.get(0).get(10, TimeUnit.SECONDS), + futures.get(1).get(10, TimeUnit.SECONDS) + ); + + assertThat(results).filteredOn(Optional::isPresent).hasSize(1); + assertThat(results).filteredOn(Optional::isEmpty).hasSize(1); + + List storedTokens = tokenRepository.findAll(); + assertThat(storedTokens).hasSize(2); + assertThat(storedTokens).filteredOn(token -> token.getRevokedAt() == null).hasSize(1); + assertThat(storedTokens).filteredOn(token -> token.getRotatedToTokenHash() != null).hasSize(1); + } + + private Optional rotateAfterSignal( + String rawToken, + CountDownLatch ready, + CountDownLatch start, + String userAgent + ) throws InterruptedException { + ready.countDown(); + if (!start.await(5, TimeUnit.SECONDS)) { + throw new IllegalStateException("Не удалось синхронно запустить конкурентную ротацию"); + } + return service.rotate(rawToken, TENANT, userAgent, "127.0.0.1"); + } + + private void awaitReady(CountDownLatch ready) { + try { + if (!ready.await(5, TimeUnit.SECONDS)) { + throw new IllegalStateException("Конкурентные потоки не успели подготовиться к ротации"); + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Ожидание конкурентных потоков прервано", e); + } + } + + private void awaitBlockedRotations() { + long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(5); + do { + Integer blockedQueries = jdbcTemplate.queryForObject(""" + SELECT COUNT(*) + FROM pg_stat_activity + WHERE datname = current_database() + AND pid <> pg_backend_pid() + AND wait_event_type = 'Lock' + """, Integer.class); + if (blockedQueries != null && blockedQueries >= 2) { + return; + } + try { + Thread.sleep(25); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Ожидание блокировки ротации прервано", e); + } + } while (System.nanoTime() < deadline); + + throw new IllegalStateException("Оба запроса ротации не заблокировались на исходном токене"); + } + + private User createTestUser() { + Long departmentId = jdbcTemplate.queryForObject( + "INSERT INTO departments (name, code) VALUES (?, ?) RETURNING id", + Long.class, + "Тестовая кафедра ротации " + UUID.randomUUID(), + System.nanoTime() + ); + + User user = new User(); + user.setUsername("rt-" + UUID.randomUUID()); + user.setPassword("тестовый-хэш"); + user.setRole(Role.ADMIN); + user.setFullName("Тест конкурентной ротации"); + user.setJobTitle("Тестовый пользователь"); + user.setDepartmentId(departmentId); + return userRepository.saveAndFlush(user); + } + + @SpringBootConfiguration + @EnableAutoConfiguration + @EntityScan(basePackageClasses = AuthRefreshToken.class) + @EnableJpaRepositories(basePackageClasses = AuthRefreshTokenRepository.class) + @EnableConfigurationProperties(JwtProperties.class) + @Import(RefreshTokenService.class) + static class TestApplication { + } +} diff --git a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java index 068f1db..439b23a 100644 --- a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java +++ b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java @@ -45,7 +45,7 @@ class RefreshTokenServiceTest { RefreshTokenService service = new RefreshTokenService(repository, properties()); String rawToken = "raw-refresh-token"; AuthRefreshToken stored = activeToken(service.hashToken(rawToken)); - when(repository.findByTokenHash(service.hashToken(rawToken))).thenReturn(Optional.of(stored)); + when(repository.findByTokenHashForUpdate(service.hashToken(rawToken))).thenReturn(Optional.of(stored)); Optional rotation = service.rotate(rawToken, "magistr", "Browser", "127.0.0.1"); @@ -64,7 +64,7 @@ class RefreshTokenServiceTest { AuthRefreshTokenRepository repository = mock(AuthRefreshTokenRepository.class); RefreshTokenService service = new RefreshTokenService(repository, properties()); String rawToken = "raw-refresh-token"; - when(repository.findByTokenHash(service.hashToken(rawToken))) + when(repository.findByTokenHashForUpdate(service.hashToken(rawToken))) .thenReturn(Optional.of(activeToken(service.hashToken(rawToken)))); assertThat(service.rotate(rawToken, "n8n", "Browser", "127.0.0.1")).isEmpty(); diff --git a/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java b/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java new file mode 100644 index 0000000..afea29b --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java @@ -0,0 +1,154 @@ +package com.magistr.app.config.tenant; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; +import okhttp3.tls.HandshakeCertificates; +import okhttp3.tls.HeldCertificate; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Base64; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +class KubernetesTenantSecretUpdaterTest { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @TempDir + Path tempDirectory; + + @Test + void updatesSecretThroughTrustedCaWithoutSendingPlainTenantJson() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + HeldCertificate serverCertificate = serverCertificate(ca, "localhost"); + + try (MockWebServer server = httpsServer(serverCertificate)) { + server.enqueue(new MockResponse().setResponseCode(200)); + TestFiles files = testFiles(ca); + String rawPassword = UUID.randomUUID().toString(); + TenantConfig tenant = new TenantConfig("Университет", "test", "jdbc:test", "user", rawPassword); + KubernetesTenantSecretUpdater updater = updater(files, server); + + boolean updated = updater.updateTenantsConfig(List.of(tenant)); + + assertThat(updated).isTrue(); + RecordedRequest request = server.takeRequest(2, TimeUnit.SECONDS); + assertThat(request).isNotNull(); + assertThat(request.getPath()).isEqualTo("/api/v1/namespaces/magistr/secrets/tenants-secret"); + String body = request.getBody().readUtf8(); + assertThat(body).doesNotContain(rawPassword); + + JsonNode patch = objectMapper.readTree(body); + String decoded = new String( + Base64.getDecoder().decode(patch.path("data").path("tenants.json").asText()), + StandardCharsets.UTF_8 + ); + assertThat(decoded).contains("\"domain\" : \"test\""); + } + } + + @Test + void rejectsServerSignedByDifferentCa() throws Exception { + HeldCertificate trustedCa = certificateAuthority("Доверенный тестовый CA"); + HeldCertificate untrustedCa = certificateAuthority("Недоверенный тестовый CA"); + HeldCertificate serverCertificate = serverCertificate(untrustedCa, "localhost"); + + try (MockWebServer server = httpsServer(serverCertificate)) { + server.enqueue(new MockResponse().setResponseCode(200)); + KubernetesTenantSecretUpdater updater = updater(testFiles(trustedCa), server); + + assertThat(updater.updateTenantsConfig(List.of())).isFalse(); + } + } + + @Test + void rejectsCertificateForDifferentHostname() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + HeldCertificate serverCertificate = serverCertificate(ca, "not-localhost.invalid"); + + try (MockWebServer server = httpsServer(serverCertificate)) { + server.enqueue(new MockResponse().setResponseCode(200)); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server); + + assertThat(updater.updateTenantsConfig(List.of())).isFalse(); + } + } + + @Test + void failsClosedWhenServiceAccountCaIsMissing() throws Exception { + TestFiles files = testFiles(certificateAuthority("Доверенный тестовый CA")); + Files.delete(files.caPath()); + KubernetesTenantSecretUpdater updater = new KubernetesTenantSecretUpdater( + files.tokenPath(), + files.namespacePath(), + files.caPath(), + "https://localhost:1", + "tenants-secret", + objectMapper + ); + + assertThat(updater.updateTenantsConfig(List.of())).isFalse(); + } + + private KubernetesTenantSecretUpdater updater(TestFiles files, MockWebServer server) { + String apiBase = server.url("/").toString(); + return new KubernetesTenantSecretUpdater( + files.tokenPath(), + files.namespacePath(), + files.caPath(), + apiBase, + "tenants-secret", + objectMapper + ); + } + + private TestFiles testFiles(HeldCertificate ca) throws Exception { + Path tokenPath = tempDirectory.resolve(UUID.randomUUID() + "-token"); + Path namespacePath = tempDirectory.resolve(UUID.randomUUID() + "-namespace"); + Path caPath = tempDirectory.resolve(UUID.randomUUID() + "-ca.crt"); + Files.writeString(tokenPath, "test-service-account-token"); + Files.writeString(namespacePath, "magistr"); + Files.writeString(caPath, ca.certificatePem()); + return new TestFiles(tokenPath, namespacePath, caPath); + } + + private HeldCertificate certificateAuthority(String commonName) { + return new HeldCertificate.Builder() + .certificateAuthority(1) + .commonName(commonName) + .duration(1, TimeUnit.DAYS) + .build(); + } + + private HeldCertificate serverCertificate(HeldCertificate ca, String hostname) { + return new HeldCertificate.Builder() + .commonName(hostname) + .addSubjectAlternativeName(hostname) + .duration(1, TimeUnit.DAYS) + .signedBy(ca) + .build(); + } + + private MockWebServer httpsServer(HeldCertificate serverCertificate) throws Exception { + HandshakeCertificates certificates = new HandshakeCertificates.Builder() + .heldCertificate(serverCertificate) + .build(); + MockWebServer server = new MockWebServer(); + server.useHttps(certificates.sslSocketFactory(), false); + server.start(); + return server; + } + + private record TestFiles(Path tokenPath, Path namespacePath, Path caPath) { + } +} diff --git a/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java b/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java index 3820475..7c9409f 100644 --- a/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java +++ b/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java @@ -1,11 +1,37 @@ package com.magistr.app.config.tenant; +import com.magistr.app.service.RetiredTenantPoolService; +import com.magistr.app.service.TenantDatabaseMigrationService; +import com.magistr.app.service.TenantLifecycleService; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.springframework.test.util.ReflectionTestUtils; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.never; class TenantConfigWatcherTest { + @TempDir + Path tempDirectory; + @Test void configHashUsesSha256Hex() { String hash = TenantConfigWatcher.configHash("{\"domain\":\"localhost\"}"); @@ -20,4 +46,138 @@ class TenantConfigWatcherTest { assertThat(TenantConfigWatcher.configHash("tenant-a")) .isNotEqualTo(TenantConfigWatcher.configHash("tenant-b")); } + + @Test + void advancesHashOnlyAfterSuccessfulLifecycleSynchronization() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + String content = """ + [{ + "name": "Тестовый tenant", + "domain": "alpha", + "url": "jdbc:postgresql://db/alpha", + "username": "alpha", + "password": "тестовый-пароль" + }] + """; + Files.writeString(configPath, content); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + doThrow(new IllegalStateException("тестовая ошибка синхронизации")) + .doNothing() + .when(lifecycleService).synchronizeFromPersistedConfig(anyList()); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + + watcher.watchForChanges(); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")).isEqualTo(""); + + watcher.watchForChanges(); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) + .isEqualTo(TenantConfigWatcher.configHash(content)); + verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(anyList()); + + watcher.watchForChanges(); + verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(anyList()); + } + + @Test + void successfulHashPreventsRepeatedSynchronizationOfSameContent() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + String content = "[]"; + Files.writeString(configPath, content); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + doNothing().when(lifecycleService).synchronizeFromPersistedConfig(anyList()); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + + watcher.watchForChanges(); + watcher.watchForChanges(); + + verify(lifecycleService).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) + .isEqualTo(TenantConfigWatcher.configHash(content)); + } + + @Test + void watcherCannotReadBetweenSerializedApiMutationAndRefreshHash() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + String content = "[]"; + Files.writeString(configPath, content); + TenantRoutingDataSource routingDataSource = mock(TenantRoutingDataSource.class); + TenantLifecycleService lifecycleService = new TenantLifecycleService( + routingDataSource, + mock(KubernetesTenantSecretUpdater.class), + mock(TenantDatabaseMigrationService.class), + mock(RetiredTenantPoolService.class) + ); + TenantConfigWatcher watcher = new TenantConfigWatcher(lifecycleService); + ReflectionTestUtils.setField(watcher, "tenantsConfigPath", configPath.toString()); + CountDownLatch apiMutationReachedRefreshWindow = new CountDownLatch(1); + CountDownLatch allowApiRefresh = new CountDownLatch(1); + AtomicReference watcherThread = new AtomicReference<>(); + ExecutorService executor = Executors.newFixedThreadPool(2); + + try { + Future api = executor.submit(() -> lifecycleService.executeSerialized(() -> { + apiMutationReachedRefreshWindow.countDown(); + await(allowApiRefresh, "Ожидание разрешения refreshHash прервано"); + watcher.refreshHash(); + })); + assertThat(apiMutationReachedRefreshWindow.await(5, TimeUnit.SECONDS)).isTrue(); + + Future concurrentWatcher = executor.submit(() -> { + watcherThread.set(Thread.currentThread()); + watcher.watchForChanges(); + }); + awaitBlocked(watcherThread); + assertThat(concurrentWatcher).isNotDone(); + + allowApiRefresh.countDown(); + api.get(5, TimeUnit.SECONDS); + concurrentWatcher.get(5, TimeUnit.SECONDS); + + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) + .isEqualTo(TenantConfigWatcher.configHash(content)); + verify(routingDataSource, never()).snapshotTenantConfigs(); + } finally { + allowApiRefresh.countDown(); + executor.shutdownNow(); + assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); + } + } + + private TenantConfigWatcher watcher(TenantLifecycleService lifecycleService, Path configPath) { + doAnswer(invocation -> { + invocation.getArgument(0).run(); + return null; + }).when(lifecycleService).executeSerialized(any(Runnable.class)); + TenantConfigWatcher watcher = new TenantConfigWatcher(lifecycleService); + ReflectionTestUtils.setField(watcher, "tenantsConfigPath", configPath.toString()); + return watcher; + } + + private void await(CountDownLatch latch, String message) { + try { + if (!latch.await(5, TimeUnit.SECONDS)) { + throw new IllegalStateException(message); + } + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException(message, exception); + } + } + + private void awaitBlocked(AtomicReference threadReference) { + long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(5); + while (System.nanoTime() < deadline) { + Thread thread = threadReference.get(); + if (thread != null && thread.getState() == Thread.State.BLOCKED) { + return; + } + try { + Thread.sleep(10); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Ожидание блокировки watcher прервано", exception); + } + } + throw new IllegalStateException("Watcher не заблокировался на общем lifecycle coordinator"); + } } diff --git a/backend/src/test/java/com/magistr/app/config/tenant/TenantRoutingDataSourceTest.java b/backend/src/test/java/com/magistr/app/config/tenant/TenantRoutingDataSourceTest.java new file mode 100644 index 0000000..11b4e90 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/tenant/TenantRoutingDataSourceTest.java @@ -0,0 +1,76 @@ +package com.magistr.app.config.tenant; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +class TenantRoutingDataSourceTest { + + @AfterEach + void clearTenantContext() { + TenantContext.clear(); + } + + @Test + void atomicallyPublishesOneImmutableStateAndKeepsObtainedConnectionUsable() throws Exception { + TenantRoutingDataSource routing = new TenantRoutingDataSource(); + DataSource oldDataSource = mock(DataSource.class); + DataSource newDataSource = mock(DataSource.class); + Connection oldConnection = mock(Connection.class); + Connection newConnection = mock(Connection.class); + when(oldDataSource.getConnection()).thenReturn(oldConnection); + when(newDataSource.getConnection()).thenReturn(newConnection); + when(oldConnection.isValid(1)).thenReturn(true); + TenantConfig oldConfig = config("Старый", "ALPHA", "jdbc:old"); + TenantConfig newConfig = config("Новый", "alpha", "jdbc:new"); + + assertThat(routing.swapTenant(oldConfig, oldDataSource)).isNull(); + oldConfig.setUrl("jdbc:mutated-request"); + TenantContext.setCurrentTenant("alpha"); + Connection inFlight = routing.getConnection(); + assertThat(inFlight).isSameAs(oldConnection); + + TenantRoutingDataSource.TenantState previous = routing.swapTenant(newConfig, newDataSource); + + assertThat(previous).isNotNull(); + assertThat(previous.dataSource()).isSameAs(oldDataSource); + assertThat(previous.config().getUrl()).isEqualTo("jdbc:old"); + assertThat(routing.getConnection()).isSameAs(newConnection); + assertThat(inFlight.isValid(1)).isTrue(); + verify(oldConnection).isValid(1); + assertThat(routing.snapshotTenantConfigs().get("alpha").getUrl()).isEqualTo("jdbc:new"); + } + + @Test + void snapshotsAreDetachedAndUnmodifiableAndRemovalReturnsRetiredState() { + TenantRoutingDataSource routing = new TenantRoutingDataSource(); + DataSource dataSource = mock(DataSource.class); + TenantConfig config = config("Alpha", "alpha", "jdbc:alpha"); + routing.swapTenant(config, dataSource); + + Map snapshot = routing.snapshotTenantConfigs(); + snapshot.get("alpha").setUrl("jdbc:changed-copy"); + + assertThat(routing.snapshotTenantConfigs().get("alpha").getUrl()).isEqualTo("jdbc:alpha"); + assertThatThrownBy(() -> snapshot.put("beta", config("Beta", "beta", "jdbc:beta"))) + .isInstanceOf(UnsupportedOperationException.class); + TenantRoutingDataSource.TenantState removed = routing.removeTenantAtomically(" ALPHA "); + assertThat(removed).isNotNull(); + assertThat(removed.dataSource()).isSameAs(dataSource); + assertThat(routing.snapshotTenant("alpha")).isEmpty(); + assertThat(routing.getTenantDataSource("alpha")).isEmpty(); + } + + private TenantConfig config(String name, String domain, String url) { + return new TenantConfig(name, domain, url, "user", "password"); + } +} diff --git a/backend/src/test/java/com/magistr/app/controller/ScheduleOverrideControllerTest.java b/backend/src/test/java/com/magistr/app/controller/ScheduleOverrideControllerTest.java new file mode 100644 index 0000000..13c169c --- /dev/null +++ b/backend/src/test/java/com/magistr/app/controller/ScheduleOverrideControllerTest.java @@ -0,0 +1,54 @@ +package com.magistr.app.controller; + +import com.magistr.app.dto.ScheduleOverrideDto; +import com.magistr.app.service.ScheduleConflictException; +import com.magistr.app.service.ScheduleOverrideService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup; + +class ScheduleOverrideControllerTest { + + private ScheduleOverrideService service; + private MockMvc mockMvc; + + @BeforeEach + void setUp() { + service = mock(ScheduleOverrideService.class); + mockMvc = standaloneSetup(new ScheduleOverrideController(service)) + .setControllerAdvice(new GlobalExceptionHandler()) + .build(); + } + + @Test + void returnsConflictWithRussianMessageForScheduleConflict() throws Exception { + when(service.create(any(ScheduleOverrideDto.class))).thenThrow(new ScheduleConflictException( + "Конфликт расписания: преподаватель уже занят в указанное время" + )); + + mockMvc.perform(post("/api/edu-office/schedule/overrides") + .contentType(MediaType.APPLICATION_JSON) + .content(""" + { + "baseRuleSlotId": 101, + "lessonDate": "2026-09-01", + "action": "MOVE", + "newTimeSlotId": 2 + } + """)) + .andExpect(status().isConflict()) + .andExpect(jsonPath("$.status").value(409)) + .andExpect(jsonPath("$.error").value("Конфликт")) + .andExpect(jsonPath("$.message") + .value("Конфликт расписания: преподаватель уже занят в указанное время")); + } +} diff --git a/backend/src/test/java/com/magistr/app/controller/ScheduleRuleAdminControllerTest.java b/backend/src/test/java/com/magistr/app/controller/ScheduleRuleAdminControllerTest.java new file mode 100644 index 0000000..600e772 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/controller/ScheduleRuleAdminControllerTest.java @@ -0,0 +1,151 @@ +package com.magistr.app.controller; + +import com.magistr.app.dto.ScheduleRuleDto; +import com.magistr.app.service.ScheduleRuleConflictException; +import com.magistr.app.service.ScheduleRuleService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +import java.util.List; +import java.util.NoSuchElementException; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup; + +class ScheduleRuleAdminControllerTest { + + private ScheduleRuleService service; + private MockMvc mockMvc; + + @BeforeEach + void setUp() { + service = mock(ScheduleRuleService.class); + mockMvc = standaloneSetup(new ScheduleRuleAdminController(service)) + .setControllerAdvice(new GlobalExceptionHandler()) + .build(); + } + + @Test + void returnsBadRequestWithRussianValidationMessage() throws Exception { + when(service.create(any(ScheduleRuleDto.class))).thenThrow(new IllegalArgumentException( + "Количество часов для лекций должно быть чётным" + )); + + mockMvc.perform(post("/api/admin/schedule-rules") + .contentType(MediaType.APPLICATION_JSON) + .content(validRequestJson())) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.status").value(400)) + .andExpect(jsonPath("$.error").value("Некорректный запрос")) + .andExpect(jsonPath("$.message") + .value("Количество часов для лекций должно быть чётным")); + } + + @Test + void returnsInternalConflictWithoutArtificialConflictRule() throws Exception { + when(service.create(any(ScheduleRuleDto.class))).thenThrow(new ScheduleRuleConflictException( + "Невозможно сохранить правило: слоты внутри правила конфликтуют", + null, + List.of("teacher", "group"), + List.of("Преподаватель", "Группа") + )); + + mockMvc.perform(post("/api/admin/schedule-rules") + .contentType(MediaType.APPLICATION_JSON) + .content(validRequestJson())) + .andExpect(status().isConflict()) + .andExpect(jsonPath("$.message") + .value("Невозможно сохранить правило: слоты внутри правила конфликтуют")) + .andExpect(jsonPath("$.conflictRule").doesNotExist()) + .andExpect(jsonPath("$.conflictFields[0]").value("teacher")) + .andExpect(jsonPath("$.conflictFields[1]").value("group")) + .andExpect(jsonPath("$.conflictReasons[0]").value("Преподаватель")) + .andExpect(jsonPath("$.conflictReasons[1]").value("Группа")); + } + + @Test + void returnsPersistedConflictWithConflictingRuleDto() throws Exception { + ScheduleRuleDto conflictingRule = dto(321L); + when(service.create(any(ScheduleRuleDto.class))).thenThrow(new ScheduleRuleConflictException( + "Невозможно сохранить правило: слот занят", + conflictingRule, + List.of("classroom"), + List.of("Аудитория") + )); + + mockMvc.perform(post("/api/admin/schedule-rules") + .contentType(MediaType.APPLICATION_JSON) + .content(validRequestJson())) + .andExpect(status().isConflict()) + .andExpect(jsonPath("$.message").value("Невозможно сохранить правило: слот занят")) + .andExpect(jsonPath("$.conflictRule.id").value(321)) + .andExpect(jsonPath("$.conflictFields[0]").value("classroom")) + .andExpect(jsonPath("$.conflictReasons[0]").value("Аудитория")); + } + + @Test + void returnsNotFoundWhenRuleDoesNotExist() throws Exception { + when(service.getById(404L)).thenThrow(new NoSuchElementException("Правило расписания не найдено")); + + mockMvc.perform(get("/api/admin/schedule-rules/404")) + .andExpect(status().isNotFound()) + .andExpect(jsonPath("$.status").value(404)) + .andExpect(jsonPath("$.error").value("Не найдено")) + .andExpect(jsonPath("$.message").value("Правило расписания не найдено")); + } + + private ScheduleRuleDto dto(Long id) { + return new ScheduleRuleDto( + id, + 1L, + "Дисциплина", + 2L, + "2026-2027", + null, + 2, + 0, + 0, + 1, + 1, + 1, + List.of(3L), + List.of("Группа"), + List.of() + ); + } + + private String validRequestJson() { + return """ + { + "subjectId": 1, + "semesterId": 2, + "lectureAcademicHours": 2, + "laboratoryAcademicHours": 0, + "practiceAcademicHours": 0, + "lectureStartWeek": 1, + "laboratoryStartWeek": 1, + "practiceStartWeek": 1, + "groupIds": [3], + "slots": [ + { + "dayOfWeek": 1, + "parity": "BOTH", + "timeSlotId": 4, + "teacherId": 5, + "classroomId": 6, + "lessonTypeId": 7, + "lessonFormat": "Очно" + } + ] + } + """; + } +} diff --git a/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java new file mode 100644 index 0000000..05e5f89 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java @@ -0,0 +1,294 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.Collections; +import java.util.IdentityHashMap; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +@Testcontainers +@DisplayName("Миграция инвариантов точечных изменений расписания") +class ScheduleOverrideMigrationIntegrationTest { + + private static final String[] OVERRIDE_CONSTRAINTS = { + "chk_schedule_overrides_cancel_payload", + "chk_schedule_overrides_move_payload", + "chk_schedule_overrides_replace_payload", + "chk_schedule_overrides_format" + }; + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @Test + @DisplayName("V3 принимает допустимые варианты и отклоняет недопустимые данные") + void migrationEnforcesScheduleOverrideInvariants() throws SQLException { + Flyway flyway = targetThreeFlyway(); + flyway.clean(); + flyway.migrate(); + + assertThat(flyway.info().current()) + .as("После полной миграции должна существовать текущая версия") + .isNotNull(); + assertThat(flyway.info().current().getVersion().getVersion()) + .as("Последней успешно применённой миграцией должна быть V3") + .isEqualTo("3"); + + try (Connection connection = POSTGRES.createConnection("")) { + SeedIds seedIds = loadSeedIds(connection); + LocalDate validDate = LocalDate.of(2026, 3, 2); + + insertOverride(connection, seedIds, validDate, "CANCEL", null, null, null); + insertOverride(connection, seedIds, validDate.plusDays(1), "MOVE", seedIds.classroomId(), null, null); + insertOverride(connection, seedIds, validDate.plusDays(2), "REPLACE", null, seedIds.teacherId(), null); + insertOverride(connection, seedIds, validDate.plusDays(3), "REPLACE", null, null, "Онлайн"); + + assertThat(queryLong(connection, "SELECT count(*) FROM schedule_overrides")) + .as("Все допустимые варианты точечного изменения должны сохраниться") + .isEqualTo(4L); + + LocalDate invalidDate = LocalDate.of(2026, 4, 6); + assertCheckViolation( + connection, + seedIds, + invalidDate, + "CANCEL", + seedIds.classroomId(), + null, + null, + "chk_schedule_overrides_cancel_payload" + ); + assertCheckViolation( + connection, + seedIds, + invalidDate.plusDays(1), + "MOVE", + null, + null, + null, + "chk_schedule_overrides_move_payload" + ); + assertCheckViolation( + connection, + seedIds, + invalidDate.plusDays(2), + "REPLACE", + null, + null, + null, + "chk_schedule_overrides_replace_payload" + ); + assertCheckViolation( + connection, + seedIds, + invalidDate.plusDays(3), + "REPLACE", + null, + seedIds.teacherId(), + "Смешанный", + "chk_schedule_overrides_format" + ); + } + } + + @Test + @DisplayName("V3 останавливается на legacy-данных до добавления ограничений") + void migrationFailsPreflightWithoutPartialConstraints() throws SQLException { + Flyway targetTwo = targetTwoFlyway(); + targetTwo.clean(); + targetTwo.migrate(); + + try (Connection connection = POSTGRES.createConnection("")) { + SeedIds seedIds = loadSeedIds(connection); + insertOverride( + connection, + seedIds, + LocalDate.of(2026, 5, 4), + "REPLACE", + null, + null, + null + ); + } + + Flyway targetThree = targetThreeFlyway(); + Throwable migrationFailure = catchThrowable(targetThree::migrate); + + assertThat(migrationFailure) + .as("V3 должна остановить миграцию при пустом legacy-изменении REPLACE") + .isNotNull(); + assertThat(collectMessages(migrationFailure)) + .as("Ошибка preflight должна объяснять проблему на русском языке") + .contains("Невозможно применить инварианты точечных изменений") + .contains("REPLACE=1") + .contains("Исправьте данные tenant-БД и повторите миграцию"); + + assertThat(targetThree.info().current()) + .as("После отката V3 должна остаться текущая успешная версия") + .isNotNull(); + assertThat(targetThree.info().current().getVersion().getVersion()) + .as("Последней успешно применённой миграцией должна остаться V2") + .isEqualTo("2"); + + try (Connection connection = POSTGRES.createConnection("")) { + assertThat(queryLong( + connection, + "SELECT count(*) FROM flyway_schema_history WHERE success AND version = '3'" + )) + .as("V3 не должна отмечаться как успешно применённая") + .isZero(); + assertThat(queryLong( + connection, + """ + SELECT count(*) + FROM pg_constraint + WHERE conrelid = 'schedule_overrides'::regclass + AND conname::text = ANY (?) + """, + connection.createArrayOf("text", OVERRIDE_CONSTRAINTS) + )) + .as("Ни одно ограничение V3 не должно остаться после неуспешного preflight") + .isZero(); + } + } + + private Flyway targetThreeFlyway() { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion("3")) + .cleanDisabled(false) + .load(); + } + + private Flyway targetTwoFlyway() { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion("2")) + .cleanDisabled(false) + .load(); + } + + private SeedIds loadSeedIds(Connection connection) throws SQLException { + return new SeedIds( + queryLong(connection, "SELECT id FROM schedule_rule_slots ORDER BY id LIMIT 1"), + queryLong(connection, "SELECT id FROM classrooms ORDER BY id LIMIT 1"), + queryLong(connection, "SELECT id FROM users WHERE role = 'TEACHER' ORDER BY id LIMIT 1") + ); + } + + private void insertOverride( + Connection connection, + SeedIds seedIds, + LocalDate lessonDate, + String action, + Long classroomId, + Long teacherId, + String lessonFormat + ) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO schedule_overrides ( + base_rule_slot_id, + lesson_date, + action, + new_classroom_id, + new_teacher_id, + new_lesson_format + ) VALUES (?, ?, ?, ?, ?, ?) + """)) { + statement.setLong(1, seedIds.baseRuleSlotId()); + statement.setDate(2, Date.valueOf(lessonDate)); + statement.setString(3, action); + setNullableLong(statement, 4, classroomId); + setNullableLong(statement, 5, teacherId); + statement.setString(6, lessonFormat); + statement.executeUpdate(); + } + } + + private void assertCheckViolation( + Connection connection, + SeedIds seedIds, + LocalDate lessonDate, + String action, + Long classroomId, + Long teacherId, + String lessonFormat, + String expectedConstraint + ) { + Throwable failure = catchThrowable(() -> insertOverride( + connection, + seedIds, + lessonDate, + action, + classroomId, + teacherId, + lessonFormat + )); + + assertThat(failure) + .as("Недопустимые данные должны быть отклонены ограничением %s", expectedConstraint) + .isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()) + .as("Ограничение %s должно вернуть SQLSTATE нарушения CHECK", expectedConstraint) + .isEqualTo("23514"); + assertThat(sqlFailure.getMessage()) + .as("Ошибка должна содержать имя сработавшего ограничения") + .contains(expectedConstraint); + } + + private void setNullableLong(PreparedStatement statement, int index, Long value) throws SQLException { + if (value == null) { + statement.setObject(index, null); + } else { + statement.setLong(index, value); + } + } + + private long queryLong(Connection connection, String sql, Object... parameters) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + for (int index = 0; index < parameters.length; index++) { + statement.setObject(index + 1, parameters[index]); + } + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()) + .as("SQL-запрос должен вернуть одну строку: %s", sql) + .isTrue(); + return resultSet.getLong(1); + } + } + } + + private String collectMessages(Throwable failure) { + StringBuilder messages = new StringBuilder(); + Set visited = Collections.newSetFromMap(new IdentityHashMap<>()); + Throwable current = failure; + while (current != null && visited.add(current)) { + if (current.getMessage() != null) { + messages.append(current.getMessage()).append('\n'); + } + current = current.getCause(); + } + return messages.toString(); + } + + private record SeedIds(long baseRuleSlotId, long classroomId, long teacherId) { + } +} diff --git a/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java new file mode 100644 index 0000000..2ac8f1e --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java @@ -0,0 +1,337 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collections; +import java.util.IdentityHashMap; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +@Testcontainers +@DisplayName("Миграция чётности академических часов правил расписания") +class ScheduleRuleHoursMigrationIntegrationTest { + + private static final String HOURS_CONSTRAINT = "chk_schedule_rules_academic_hours_even"; + private static final String EXACT_SLOT_CONSTRAINT = "uq_schedule_rule_slots_exact_payload"; + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @Test + @DisplayName("V4 принимает чётные часы и отклоняет нечётное значение каждого вида занятий") + void migrationEnforcesEvenAcademicHours() throws SQLException { + Flyway flyway = targetFourFlyway(); + flyway.clean(); + flyway.migrate(); + + assertThat(flyway.info().current()) + .as("После полной миграции должна существовать текущая версия") + .isNotNull(); + assertThat(flyway.info().current().getVersion().getVersion()) + .as("Последней успешно применённой миграцией должна быть V4") + .isEqualTo("4"); + + try (Connection connection = POSTGRES.createConnection("")) { + SeedIds seedIds = loadSeedIds(connection); + long rulesBeforeInsert = queryLong(connection, "SELECT count(*) FROM schedule_rules"); + + insertScheduleRule(connection, seedIds, 2, 4, 6); + + assertThat(queryLong(connection, "SELECT count(*) FROM schedule_rules")) + .as("Правило с чётными академическими часами должно сохраниться") + .isEqualTo(rulesBeforeInsert + 1); + assertThat(queryLong( + connection, + """ + SELECT count(*) + FROM pg_constraint + WHERE conrelid = 'schedule_rules'::regclass + AND conname = ? + AND convalidated + """, + HOURS_CONSTRAINT + )) + .as("Ограничение чётности V4 должно быть провалидировано") + .isOne(); + + assertOddHoursRejected(connection, seedIds, 1, 2, 2, "лекций"); + assertOddHoursRejected(connection, seedIds, 2, 1, 2, "лабораторных работ"); + assertOddHoursRejected(connection, seedIds, 2, 2, 1, "практик"); + assertExactSlotDuplicateRejected(connection); + } + } + + @Test + @DisplayName("V4 останавливается на legacy-правиле с нечётными часами до добавления ограничения") + void migrationFailsPreflightWithoutPartialConstraint() throws SQLException { + Flyway targetThree = targetThreeFlyway(); + targetThree.clean(); + targetThree.migrate(); + + try (Connection connection = POSTGRES.createConnection("")) { + SeedIds seedIds = loadSeedIds(connection); + insertScheduleRule(connection, seedIds, 1, 3, 5); + } + + Flyway targetFour = targetFourFlyway(); + Throwable migrationFailure = catchThrowable(targetFour::migrate); + + assertThat(migrationFailure) + .as("V4 должна остановить миграцию при нечётных часах legacy-правила") + .isNotNull(); + assertThat(collectMessages(migrationFailure)) + .as("Ошибка preflight должна объяснять проблему на русском языке") + .contains("Невозможно применить инвариант чётности академических часов правил расписания") + .contains("лекции=1") + .contains("лабораторные=1") + .contains("практики=1") + .contains("Исправьте данные tenant-БД и повторите миграцию"); + + assertThat(targetFour.info().current()) + .as("После отката V4 должна остаться текущая успешная версия") + .isNotNull(); + assertThat(targetFour.info().current().getVersion().getVersion()) + .as("Последней успешно применённой миграцией должна остаться V3") + .isEqualTo("3"); + + try (Connection connection = POSTGRES.createConnection("")) { + assertThat(queryLong( + connection, + "SELECT count(*) FROM flyway_schema_history WHERE success AND version = '4'" + )) + .as("V4 не должна отмечаться как успешно применённая") + .isZero(); + assertThat(queryLong( + connection, + """ + SELECT count(*) + FROM pg_constraint + WHERE conrelid = 'schedule_rules'::regclass + AND conname = ? + """, + HOURS_CONSTRAINT + )) + .as("Ограничение V4 не должно частично остаться после неуспешного preflight") + .isZero(); + } + } + + @Test + @DisplayName("V4 останавливается на legacy-дубле слота до добавления ограничений") + void migrationFailsOnLegacyExactSlotDuplicate() throws SQLException { + Flyway targetThree = targetThreeFlyway(); + targetThree.clean(); + targetThree.migrate(); + + try (Connection connection = POSTGRES.createConnection("")) { + duplicateExistingSlot(connection); + } + + Flyway targetFour = targetFourFlyway(); + Throwable migrationFailure = catchThrowable(targetFour::migrate); + + assertThat(migrationFailure) + .as("V4 должна остановить миграцию при точном legacy-дубле слота") + .isNotNull(); + assertThat(collectMessages(migrationFailure)) + .as("Ошибка preflight должна объяснять проблему уникальности на русском языке") + .contains("Невозможно применить инвариант уникальности слотов правил расписания") + .contains("групп точных дублей=1") + .contains("Исправьте данные tenant-БД и повторите миграцию"); + + assertThat(targetFour.info().current()) + .as("После отката V4 должна остаться текущая успешная версия") + .isNotNull(); + assertThat(targetFour.info().current().getVersion().getVersion()).isEqualTo("3"); + + try (Connection connection = POSTGRES.createConnection("")) { + assertThat(queryLong( + connection, + "SELECT count(*) FROM flyway_schema_history WHERE success AND version = '4'" + )).isZero(); + assertConstraintAbsent(connection, HOURS_CONSTRAINT); + assertConstraintAbsent(connection, EXACT_SLOT_CONSTRAINT); + } + } + + private Flyway targetFourFlyway() { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion("4")) + .cleanDisabled(false) + .load(); + } + + private Flyway targetThreeFlyway() { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion("3")) + .cleanDisabled(false) + .load(); + } + + private SeedIds loadSeedIds(Connection connection) throws SQLException { + return new SeedIds( + queryLong(connection, "SELECT id FROM subjects ORDER BY id LIMIT 1"), + queryLong(connection, "SELECT id FROM semesters ORDER BY id LIMIT 1") + ); + } + + private void insertScheduleRule( + Connection connection, + SeedIds seedIds, + int lectureHours, + int laboratoryHours, + int practiceHours + ) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO schedule_rules ( + subject_id, + semester_id, + lecture_academic_hours, + laboratory_academic_hours, + practice_academic_hours, + lecture_start_week, + laboratory_start_week, + practice_start_week + ) VALUES (?, ?, ?, ?, ?, 1, 1, 1) + """)) { + statement.setLong(1, seedIds.subjectId()); + statement.setLong(2, seedIds.semesterId()); + statement.setInt(3, lectureHours); + statement.setInt(4, laboratoryHours); + statement.setInt(5, practiceHours); + statement.executeUpdate(); + } + } + + private void assertOddHoursRejected( + Connection connection, + SeedIds seedIds, + int lectureHours, + int laboratoryHours, + int practiceHours, + String lessonKind + ) { + Throwable failure = catchThrowable(() -> insertScheduleRule( + connection, + seedIds, + lectureHours, + laboratoryHours, + practiceHours + )); + + assertThat(failure) + .as("Нечётное количество часов %s должно быть отклонено", lessonKind) + .isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()) + .as("Ограничение чётности для %s должно вернуть SQLSTATE нарушения CHECK", lessonKind) + .isEqualTo("23514"); + assertThat(sqlFailure.getMessage()) + .as("Ошибка должна содержать имя ограничения чётности") + .contains(HOURS_CONSTRAINT); + } + + private void assertExactSlotDuplicateRejected(Connection connection) { + Throwable failure = catchThrowable(() -> duplicateExistingSlot(connection)); + + assertThat(failure) + .as("Точный дубль слота одного правила должен быть отклонён") + .isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()) + .as("Ограничение уникальности слота должно вернуть SQLSTATE unique violation") + .isEqualTo("23505"); + assertThat(sqlFailure.getMessage()).contains(EXACT_SLOT_CONSTRAINT); + } + + private void duplicateExistingSlot(Connection connection) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO schedule_rule_slots ( + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + ) + SELECT + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + FROM schedule_rule_slots + ORDER BY id + LIMIT 1 + """)) { + assertThat(statement.executeUpdate()) + .as("Для проверки должен быть скопирован один seed-слот") + .isEqualTo(1); + } + } + + private void assertConstraintAbsent(Connection connection, String constraintName) throws SQLException { + assertThat(queryLong( + connection, + """ + SELECT count(*) + FROM pg_constraint + WHERE conrelid IN ('schedule_rules'::regclass, 'schedule_rule_slots'::regclass) + AND conname = ? + """, + constraintName + )).as("Ограничение %s не должно частично остаться после неуспешной V4", constraintName) + .isZero(); + } + + private long queryLong(Connection connection, String sql, Object... parameters) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + for (int index = 0; index < parameters.length; index++) { + statement.setObject(index + 1, parameters[index]); + } + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()) + .as("SQL-запрос должен вернуть одну строку: %s", sql) + .isTrue(); + return resultSet.getLong(1); + } + } + } + + private String collectMessages(Throwable failure) { + StringBuilder messages = new StringBuilder(); + Set visited = Collections.newSetFromMap(new IdentityHashMap<>()); + Throwable current = failure; + while (current != null && visited.add(current)) { + if (current.getMessage() != null) { + messages.append(current.getMessage()).append('\n'); + } + current = current.getCause(); + } + return messages.toString(); + } + + private record SeedIds(long subjectId, long semesterId) { + } +} diff --git a/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java new file mode 100644 index 0000000..e287f24 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java @@ -0,0 +1,212 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.AcademicCalendarGridDayDto; +import com.magistr.app.model.AcademicCalendarDay; +import com.magistr.app.repository.AcademicCalendarDayRepository; +import org.junit.jupiter.api.Test; +import org.springframework.aop.support.AopUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.transaction.support.TransactionTemplate; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.time.LocalDate; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +@Testcontainers +@SpringBootTest( + classes = AcademicCalendarGridServiceIntegrationTest.TestApplication.class, + properties = "spring.jpa.open-in-view=false" +) +class AcademicCalendarGridServiceIntegrationTest { + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @DynamicPropertySource + static void databaseProperties(DynamicPropertyRegistry registry) { + registry.add("spring.datasource.url", POSTGRES::getJdbcUrl); + registry.add("spring.datasource.username", POSTGRES::getUsername); + registry.add("spring.datasource.password", POSTGRES::getPassword); + } + + @Autowired + private AcademicCalendarGridService service; + + @Autowired + private ScheduleGeneratorService scheduleGeneratorService; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Test + void invalidSecondRowKeepsOldGridAndSuccessfulReplacementIsAtomic() { + assertThat(AopUtils.isAopProxy(service)).isTrue(); + + long calendarId = queryLong(""" + SELECT calendar.id + FROM academic_calendars calendar + JOIN academic_years year ON year.id = calendar.academic_year_id + WHERE year.title = '2025-2026' + ORDER BY calendar.id + LIMIT 1 + """); + long theoryActivityId = queryLong( + "SELECT id FROM academic_calendar_activity_types WHERE code = 'Т'" + ); + long holidayActivityId = queryLong( + "SELECT id FROM academic_calendar_activity_types WHERE code = 'К'" + ); + LocalDate yearStart = jdbcTemplate.queryForObject(""" + SELECT year.start_date + FROM academic_calendars calendar + JOIN academic_years year ON year.id = calendar.academic_year_id + WHERE calendar.id = ? + """, LocalDate.class, calendarId); + assertThat(yearStart).isEqualTo(LocalDate.of(2025, 9, 1)); + + GridFingerprint before = fingerprint(calendarId); + assertThat(before.rowCount()).isPositive(); + AcademicCalendarGridDayDto firstValid = row( + calendarId, 1, yearStart, 1, 1, holidayActivityId, "К" + ); + AcademicCalendarGridDayDto secondInvalid = row( + calendarId, 1, yearStart.plusDays(1), 1, 7, theoryActivityId, "Т" + ); + + assertThatThrownBy(() -> service.replaceGrid( + calendarId, + List.of(firstValid, secondInvalid) + )) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("День недели не соответствует дате"); + + assertThat(fingerprint(calendarId)).isEqualTo(before); + assertThat(queryLong(""" + SELECT count(*) + FROM academic_calendar_days day + WHERE day.calendar_id = ? + AND day.course_number = 1 + AND day.date = ? + AND day.activity_type_id = ? + """, calendarId, yearStart, holidayActivityId)).isZero(); + verify(scheduleGeneratorService, never()).clearCache(); + + AcademicCalendarGridDayDto secondValid = row( + calendarId, 1, yearStart.plusDays(1), 1, 2, theoryActivityId, "Т" + ); + transactionTemplate.executeWithoutResult(status -> { + service.replaceGrid(calendarId, List.of(firstValid, secondValid)); + verify(scheduleGeneratorService, never()).clearCache(); + }); + + GridFingerprint after = fingerprint(calendarId); + assertThat(after.rowCount()).isEqualTo(2L); + assertThat(after).isNotEqualTo(before); + assertThat(queryLong(""" + SELECT count(*) + FROM academic_calendar_days day + WHERE day.calendar_id = ? + AND ( + (day.course_number = 1 AND day.date = ? AND day.activity_type_id = ?) + OR + (day.course_number = 1 AND day.date = ? AND day.activity_type_id = ?) + ) + """, calendarId, yearStart, holidayActivityId, + yearStart.plusDays(1), theoryActivityId)).isEqualTo(2L); + verify(scheduleGeneratorService, times(1)).clearCache(); + } + + private GridFingerprint fingerprint(long calendarId) { + GridFingerprint fingerprint = jdbcTemplate.queryForObject(""" + SELECT + count(*) AS row_count, + md5(string_agg( + concat_ws('|', + day.course_number::text, + day.date::text, + day.week_number::text, + day.day_of_week::text, + day.activity_type_id::text + ), + E'\\n' ORDER BY day.course_number, day.date, day.id + )) AS content_hash + FROM academic_calendar_days day + WHERE day.calendar_id = ? + """, (result, rowNumber) -> new GridFingerprint( + result.getLong("row_count"), + result.getString("content_hash") + ), calendarId); + assertThat(fingerprint).isNotNull(); + return fingerprint; + } + + private long queryLong(String sql, Object... arguments) { + Long value = jdbcTemplate.queryForObject(sql, Long.class, arguments); + assertThat(value).isNotNull(); + return value; + } + + private AcademicCalendarGridDayDto row(long calendarId, + int course, + LocalDate date, + int week, + int dayOfWeek, + long activityTypeId, + String activityCode) { + return new AcademicCalendarGridDayDto( + null, + calendarId, + course, + date, + week, + dayOfWeek, + activityTypeId, + activityCode, + null, + null + ); + } + + @SpringBootConfiguration + @EnableAutoConfiguration + @EntityScan(basePackageClasses = AcademicCalendarDay.class) + @EnableJpaRepositories(basePackageClasses = AcademicCalendarDayRepository.class) + @Import({AcademicCalendarGridService.class, TestDependencies.class}) + static class TestApplication { + } + + @TestConfiguration(proxyBeanMethods = false) + static class TestDependencies { + + @Bean + ScheduleGeneratorService scheduleGeneratorService() { + return mock(ScheduleGeneratorService.class); + } + } + + private record GridFingerprint(long rowCount, String contentHash) { + } +} diff --git a/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceTest.java b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceTest.java new file mode 100644 index 0000000..b996c66 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceTest.java @@ -0,0 +1,229 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.AcademicCalendarGridDayDto; +import com.magistr.app.model.AcademicCalendar; +import com.magistr.app.model.AcademicCalendarActivityType; +import com.magistr.app.model.AcademicCalendarDay; +import com.magistr.app.model.AcademicYear; +import com.magistr.app.repository.AcademicCalendarActivityTypeRepository; +import com.magistr.app.repository.AcademicCalendarDayRepository; +import com.magistr.app.repository.AcademicCalendarRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InOrder; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class AcademicCalendarGridServiceTest { + + private static final long CALENDAR_ID = 10L; + private static final long ACTIVITY_TYPE_ID = 20L; + private static final LocalDate YEAR_START = LocalDate.of(2025, 9, 1); + + @Mock + private AcademicCalendarRepository calendarRepository; + @Mock + private AcademicCalendarDayRepository calendarDayRepository; + @Mock + private AcademicCalendarActivityTypeRepository activityTypeRepository; + @Mock + private ScheduleGeneratorService scheduleGeneratorService; + + private AcademicCalendarGridService service; + private AcademicCalendarActivityType activityType; + + @BeforeEach + void setUp() { + AcademicYear academicYear = new AcademicYear(); + academicYear.setId(1L); + academicYear.setTitle("2025-2026"); + academicYear.setStartDate(YEAR_START); + academicYear.setEndDate(LocalDate.of(2026, 6, 30)); + + AcademicCalendar calendar = new AcademicCalendar(); + calendar.setId(CALENDAR_ID); + calendar.setTitle("Тестовый календарный график"); + calendar.setAcademicYear(academicYear); + calendar.setCourseCount(4); + + activityType = new AcademicCalendarActivityType(); + activityType.setId(ACTIVITY_TYPE_ID); + activityType.setCode("Т"); + activityType.setName("Теоретическое обучение"); + activityType.setAllowSchedule(true); + + service = new AcademicCalendarGridService( + calendarRepository, + calendarDayRepository, + activityTypeRepository, + scheduleGeneratorService + ); + + when(calendarRepository.findByIdWithDetails(CALENDAR_ID)).thenReturn(Optional.of(calendar)); + lenient().when(activityTypeRepository.findById(ACTIVITY_TYPE_ID)).thenReturn(Optional.of(activityType)); + } + + @Test + void rejectsDuplicateCourseAndDateBeforeMutation() { + AcademicCalendarGridDayDto first = validRow(YEAR_START, 1, 1); + AcademicCalendarGridDayDto duplicate = validRow(YEAR_START, 1, 1); + + assertThatThrownBy(() -> service.replaceGrid(CALENDAR_ID, List.of(first, duplicate))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Для курса и даты можно указать только одну активность"); + + verifyNoMutation(); + } + + @Test + void rejectsNullSecondRowBeforeMutation() { + List rows = Arrays.asList( + validRow(YEAR_START, 1, 1), + null + ); + + assertThatThrownBy(() -> service.replaceGrid(CALENDAR_ID, rows)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Строка календарного графика не может быть пустой"); + + verifyNoMutation(); + } + + @Test + void rejectsDayOfWeekThatDoesNotMatchDateBeforeMutation() { + AcademicCalendarGridDayDto validFirst = validRow(YEAR_START, 1, 1); + AcademicCalendarGridDayDto invalidSecond = validRow(YEAR_START.plusDays(1), 1, 7); + + assertThatThrownBy(() -> service.replaceGrid(CALENDAR_ID, List.of(validFirst, invalidSecond))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("День недели не соответствует дате"); + + verifyNoMutation(); + } + + @Test + void rejectsWeekThatDoesNotMatchDateBeforeMutation() { + AcademicCalendarGridDayDto validFirst = validRow(YEAR_START, 1, 1); + AcademicCalendarGridDayDto invalidSecond = validRow(YEAR_START.plusDays(7), 1, 1); + + assertThatThrownBy(() -> service.replaceGrid(CALENDAR_ID, List.of(validFirst, invalidSecond))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Номер недели не соответствует дате учебного года"); + + verifyNoMutation(); + } + + @Test + void rejectsDateOutsideAcademicYearBeforeMutation() { + AcademicCalendarGridDayDto validFirst = validRow(YEAR_START, 1, 1); + AcademicCalendarGridDayDto outsideYear = validRow(LocalDate.of(2026, 7, 1), 44, 3); + + assertThatThrownBy(() -> service.replaceGrid(CALENDAR_ID, List.of(validFirst, outsideYear))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Дата выходит за пределы учебного года"); + + verifyNoMutation(); + } + + @Test + void rejectsUnknownActivityInLastRowBeforeMutation() { + AcademicCalendarGridDayDto validFirst = validRow(YEAR_START, 1, 1); + AcademicCalendarGridDayDto unknownActivity = row( + YEAR_START.plusDays(1), 1, 2, 999L + ); + + assertThatThrownBy(() -> service.replaceGrid(CALENDAR_ID, List.of(validFirst, unknownActivity))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Код активности не найден"); + + verifyNoMutation(); + } + + @Test + void reportsMissingCalendarWithoutMutation() { + when(calendarRepository.findByIdWithDetails(CALENDAR_ID)).thenReturn(Optional.empty()); + + assertThatThrownBy(() -> service.replaceGrid( + CALENDAR_ID, + List.of(validRow(YEAR_START, 1, 1)) + )) + .isInstanceOf(NoSuchElementException.class) + .hasMessage("Календарный график не найден"); + + verifyNoMutation(); + } + + @Test + void replacesOnlyAfterWholePayloadIsValid() { + AcademicCalendarGridDayDto first = validRow(YEAR_START, 1, 1); + AcademicCalendarGridDayDto second = validRow(YEAR_START.plusDays(1), 1, 2); + + service.replaceGrid(CALENDAR_ID, List.of(first, second)); + + @SuppressWarnings("unchecked") + ArgumentCaptor> replacementCaptor = ArgumentCaptor.forClass(List.class); + InOrder mutationOrder = inOrder(calendarDayRepository, scheduleGeneratorService); + mutationOrder.verify(calendarDayRepository).deleteByCalendarId(CALENDAR_ID); + mutationOrder.verify(calendarDayRepository).flush(); + mutationOrder.verify(calendarDayRepository).saveAll(replacementCaptor.capture()); + mutationOrder.verify(calendarDayRepository).flush(); + mutationOrder.verify(scheduleGeneratorService).clearCache(); + + assertThat(replacementCaptor.getValue()) + .extracting(AcademicCalendarDay::getDate) + .containsExactly(YEAR_START, YEAR_START.plusDays(1)); + assertThat(replacementCaptor.getValue()) + .allSatisfy(day -> { + assertThat(day.getAcademicCalendar().getId()).isEqualTo(CALENDAR_ID); + assertThat(day.getActivityType()).isSameAs(activityType); + }); + } + + private AcademicCalendarGridDayDto validRow(LocalDate date, int weekNumber, int dayOfWeek) { + return row(date, weekNumber, dayOfWeek, ACTIVITY_TYPE_ID); + } + + private AcademicCalendarGridDayDto row(LocalDate date, + int weekNumber, + int dayOfWeek, + long activityTypeId) { + return new AcademicCalendarGridDayDto( + null, + CALENDAR_ID, + 1, + date, + weekNumber, + dayOfWeek, + activityTypeId, + null, + null, + null + ); + } + + private void verifyNoMutation() { + verify(calendarDayRepository, never()).deleteByCalendarId(any()); + verify(calendarDayRepository, never()).flush(); + verify(calendarDayRepository, never()).save(any()); + verify(calendarDayRepository, never()).saveAll(any()); + verify(scheduleGeneratorService, never()).clearCache(); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java new file mode 100644 index 0000000..56f58c4 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java @@ -0,0 +1,142 @@ +package com.magistr.app.service; + +import com.magistr.app.model.ScheduleOverride; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.transaction.support.TransactionTemplate; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.time.LocalDate; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.assertj.core.api.Assertions.assertThat; + +@Testcontainers +@SpringBootTest( + classes = PostgreSqlAdvisoryLockIntegrationTest.TestApplication.class, + properties = { + "spring.flyway.enabled=false", + "spring.jpa.hibernate.ddl-auto=none" + } +) +class PostgreSqlAdvisoryLockIntegrationTest { + + private static final LocalDate TEST_DATE = LocalDate.of(2026, 9, 1); + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @DynamicPropertySource + static void databaseProperties(DynamicPropertyRegistry registry) { + registry.add("spring.datasource.url", POSTGRES::getJdbcUrl); + registry.add("spring.datasource.username", POSTGRES::getUsername); + registry.add("spring.datasource.password", POSTGRES::getPassword); + } + + @Autowired + private PostgreSqlAdvisoryLock advisoryLock; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private JdbcTemplate jdbcTemplate; + + private ExecutorService executor; + + @AfterEach + void stopExecutor() throws InterruptedException { + if (executor == null) { + return; + } + executor.shutdownNow(); + assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); + } + + @Test + void serializesTwoSpringTransactionsForSameDate() throws Exception { + executor = Executors.newFixedThreadPool(2); + CountDownLatch firstHasLock = new CountDownLatch(1); + CountDownLatch releaseFirst = new CountDownLatch(1); + CountDownLatch secondReachedLock = new CountDownLatch(1); + AtomicInteger secondBackendPid = new AtomicInteger(); + + Future first = executor.submit(() -> transactionTemplate.executeWithoutResult(status -> { + advisoryLock.lockScheduleOverrideDate(TEST_DATE); + firstHasLock.countDown(); + await(releaseFirst, "Ожидание освобождения первой advisory-блокировки прервано"); + })); + + assertThat(firstHasLock.await(5, TimeUnit.SECONDS)).isTrue(); + + Future second = executor.submit(() -> transactionTemplate.executeWithoutResult(status -> { + secondBackendPid.set(jdbcTemplate.queryForObject("select pg_backend_pid()", Integer.class)); + secondReachedLock.countDown(); + advisoryLock.lockScheduleOverrideDate(TEST_DATE); + })); + + assertThat(secondReachedLock.await(5, TimeUnit.SECONDS)).isTrue(); + awaitAdvisoryLockWait(secondBackendPid.get()); + assertThat(second).as("вторая транзакция должна ждать ту же дату").isNotDone(); + + releaseFirst.countDown(); + first.get(5, TimeUnit.SECONDS); + second.get(5, TimeUnit.SECONDS); + } + + private void awaitAdvisoryLockWait(int backendPid) { + long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(5); + do { + Boolean waiting = jdbcTemplate.queryForObject(""" + select wait_event_type = 'Lock' and wait_event = 'advisory' + from pg_stat_activity + where pid = ? + """, Boolean.class, backendPid); + if (Boolean.TRUE.equals(waiting)) { + return; + } + try { + Thread.sleep(25); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Ожидание PostgreSQL advisory-блокировки прервано", exception); + } + } while (System.nanoTime() < deadline); + + throw new IllegalStateException("Вторая транзакция не перешла в ожидание advisory-блокировки"); + } + + private void await(CountDownLatch latch, String message) { + try { + if (!latch.await(5, TimeUnit.SECONDS)) { + throw new IllegalStateException(message); + } + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException(message, exception); + } + } + + @SpringBootConfiguration + @EnableAutoConfiguration + @EntityScan(basePackageClasses = ScheduleOverride.class) + @Import(PostgreSqlAdvisoryLock.class) + static class TestApplication { + } +} diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleOverrideServiceTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleOverrideServiceTest.java new file mode 100644 index 0000000..cdd8440 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/ScheduleOverrideServiceTest.java @@ -0,0 +1,671 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.RenderedLessonDto; +import com.magistr.app.dto.ScheduleOverrideDto; +import com.magistr.app.model.Classroom; +import com.magistr.app.model.Role; +import com.magistr.app.model.ScheduleOverride; +import com.magistr.app.model.ScheduleParity; +import com.magistr.app.model.ScheduleRuleSlot; +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.User; +import com.magistr.app.repository.ClassroomRepository; +import com.magistr.app.repository.ScheduleOverrideRepository; +import com.magistr.app.repository.ScheduleRuleSlotRepository; +import com.magistr.app.repository.SubgroupRepository; +import com.magistr.app.repository.TimeSlotRepository; +import com.magistr.app.repository.UserRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; +import org.springframework.test.util.ReflectionTestUtils; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.Collection; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class ScheduleOverrideServiceTest { + + private static final LocalDate DATE = LocalDate.of(2026, 9, 1); + private static final Long BASE_SLOT_ID = 101L; + private static final Long OTHER_SLOT_ID = 202L; + private static final Long SOURCE_TIME_SLOT_ID = 1L; + private static final Long NEW_TIME_SLOT_ID = 2L; + private static final Long SOURCE_TEACHER_ID = 11L; + private static final Long NEW_TEACHER_ID = 12L; + private static final Long SOURCE_CLASSROOM_ID = 21L; + private static final Long NEW_CLASSROOM_ID = 22L; + private static final Long GROUP_ID = 31L; + private static final Long OTHER_GROUP_ID = 32L; + private static final Long SUBGROUP_A_ID = 41L; + private static final Long SUBGROUP_B_ID = 42L; + + @Mock + private ScheduleOverrideRepository scheduleOverrideRepository; + @Mock + private ScheduleRuleSlotRepository scheduleRuleSlotRepository; + @Mock + private TimeSlotRepository timeSlotRepository; + @Mock + private ClassroomRepository classroomRepository; + @Mock + private UserRepository userRepository; + @Mock + private SubgroupRepository subgroupRepository; + @Mock + private ScheduleQueryService scheduleQueryService; + @Mock + private ScheduleGeneratorService scheduleGeneratorService; + @Mock + private PostgreSqlAdvisoryLock advisoryLock; + + private ScheduleOverrideService service; + private ScheduleRuleSlot baseSlot; + private TimeSlot sourceTimeSlot; + private TimeSlot newTimeSlot; + private Classroom sourceClassroom; + private Classroom newClassroom; + private User sourceTeacher; + private User newTeacher; + private RenderedLessonDto sourceLesson; + + @BeforeEach + void setUp() { + baseSlot = ruleSlot(BASE_SLOT_ID); + sourceTimeSlot = timeSlot(SOURCE_TIME_SLOT_ID, 1, "09:00", "10:30"); + newTimeSlot = timeSlot(NEW_TIME_SLOT_ID, 2, "10:40", "12:10"); + sourceClassroom = classroom(SOURCE_CLASSROOM_ID, "А-101"); + newClassroom = classroom(NEW_CLASSROOM_ID, "Б-202"); + sourceTeacher = teacher(SOURCE_TEACHER_ID, "Исходный преподаватель"); + newTeacher = teacher(NEW_TEACHER_ID, "Новый преподаватель"); + sourceLesson = lesson( + BASE_SLOT_ID, + SOURCE_TIME_SLOT_ID, + "09:00", + "10:30", + SOURCE_TEACHER_ID, + SOURCE_CLASSROOM_ID, + List.of(GROUP_ID), + List.of(), + "Очно" + ); + + service = new ScheduleOverrideService( + scheduleOverrideRepository, + scheduleRuleSlotRepository, + timeSlotRepository, + classroomRepository, + userRepository, + subgroupRepository, + scheduleQueryService, + scheduleGeneratorService, + advisoryLock + ); + + when(scheduleRuleSlotRepository.findById(BASE_SLOT_ID)).thenReturn(Optional.of(baseSlot)); + when(timeSlotRepository.findById(SOURCE_TIME_SLOT_ID)).thenReturn(Optional.of(sourceTimeSlot)); + when(timeSlotRepository.findById(NEW_TIME_SLOT_ID)).thenReturn(Optional.of(newTimeSlot)); + when(classroomRepository.findById(SOURCE_CLASSROOM_ID)).thenReturn(Optional.of(sourceClassroom)); + when(classroomRepository.findById(NEW_CLASSROOM_ID)).thenReturn(Optional.of(newClassroom)); + when(userRepository.findById(SOURCE_TEACHER_ID)).thenReturn(Optional.of(sourceTeacher)); + when(userRepository.findById(NEW_TEACHER_ID)).thenReturn(Optional.of(newTeacher)); + when(scheduleOverrideRepository.findByBaseRuleSlotIdAndLessonDateForUpdate(BASE_SLOT_ID, DATE)) + .thenReturn(Optional.empty()); + when(scheduleOverrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)).thenReturn(List.of()); + when(scheduleOverrideRepository.saveAndFlush(any(ScheduleOverride.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + when(scheduleQueryService.buildBaseDayForAllGroups(DATE)).thenReturn(List.of(sourceLesson)); + when(subgroupRepository.findGroupReferencesByIdIn(anyList())).thenAnswer(invocation -> { + List subgroupIds = invocation.getArgument(0); + return subgroupIds.stream() + .map(id -> subgroupReference(id, GROUP_ID)) + .toList(); + }); + } + + @Test + void rejectsNullRequestWithRussianMessage() { + assertThatThrownBy(() -> service.create(null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Передайте данные изменения расписания"); + } + + @Test + void rejectsMissingRequiredRequestReferences() { + assertThatThrownBy(() -> service.create(request(null, DATE, "CANCEL", null, null, null, null))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Базовый слот расписания обязателен"); + + assertThatThrownBy(() -> service.create(request(BASE_SLOT_ID, null, "CANCEL", null, null, null, null))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Дата пары обязательна"); + } + + @Test + void rejectsMissingDatabaseReferencesWithRussianMessages() { + when(scheduleRuleSlotRepository.findById(BASE_SLOT_ID)).thenReturn(Optional.empty()); + assertThatThrownBy(() -> service.create(cancelRequest())) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Базовый слот расписания не найден"); + + when(scheduleRuleSlotRepository.findById(BASE_SLOT_ID)).thenReturn(Optional.of(baseSlot)); + when(timeSlotRepository.findById(NEW_TIME_SLOT_ID)).thenReturn(Optional.empty()); + assertThatThrownBy(() -> service.create(moveRequest())) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Временной слот не найден"); + + when(timeSlotRepository.findById(NEW_TIME_SLOT_ID)).thenReturn(Optional.of(newTimeSlot)); + when(classroomRepository.findById(NEW_CLASSROOM_ID)).thenReturn(Optional.empty()); + assertThatThrownBy(() -> service.create(replaceRequest())) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Аудитория не найдена"); + + when(classroomRepository.findById(NEW_CLASSROOM_ID)).thenReturn(Optional.of(newClassroom)); + when(userRepository.findById(NEW_TEACHER_ID)).thenReturn(Optional.empty()); + assertThatThrownBy(() -> service.create(replaceRequest())) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Преподаватель не найден"); + } + + @Test + void enforcesCancelMoveReplaceActionMatrix() { + assertThatThrownBy(() -> service.create(request( + BASE_SLOT_ID, DATE, "SKIP", null, null, null, null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Недопустимое действие изменения расписания"); + + assertThatThrownBy(() -> service.create(request( + BASE_SLOT_ID, DATE, "CANCEL", NEW_TIME_SLOT_ID, null, null, null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Для отмены пары новые параметры должны быть пустыми"); + + assertThatThrownBy(() -> service.create(request( + BASE_SLOT_ID, DATE, "MOVE", null, null, NEW_TEACHER_ID, null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Для переноса укажите новое время или аудиторию"); + + assertThatThrownBy(() -> service.create(request( + BASE_SLOT_ID, DATE, "REPLACE", null, null, null, null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Для замены укажите нового преподавателя, аудиторию или формат пары"); + } + + @Test + void rejectsUnsupportedLessonFormat() { + assertThatThrownBy(() -> service.create(request( + BASE_SLOT_ID, DATE, "REPLACE", null, NEW_CLASSROOM_ID, NEW_TEACHER_ID, "Гибрид" + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Формат пары должен быть «Очно» или «Онлайн»"); + } + + @Test + void acceptsCancelMoveAndReplaceAndNormalizesText() { + ScheduleOverrideDto cancelled = service.create(cancelRequest()); + assertThat(cancelled.action()).isEqualTo("CANCEL"); + + stubEffectiveDay(movedLesson()); + ScheduleOverrideDto moved = service.create(request( + BASE_SLOT_ID, DATE, " move ", NEW_TIME_SLOT_ID, null, null, null + )); + assertThat(moved.action()).isEqualTo("MOVE"); + assertThat(moved.newTimeSlotId()).isEqualTo(NEW_TIME_SLOT_ID); + + stubEffectiveDay(replacedLesson()); + ScheduleOverrideDto replaced = service.create(request( + BASE_SLOT_ID, DATE, " replace ", null, NEW_CLASSROOM_ID, NEW_TEACHER_ID, " Онлайн " + )); + assertThat(replaced.action()).isEqualTo("REPLACE"); + assertThat(replaced.newTeacherId()).isEqualTo(NEW_TEACHER_ID); + assertThat(replaced.newClassroomId()).isEqualTo(NEW_CLASSROOM_ID); + assertThat(replaced.newLessonFormat()).isEqualTo("Онлайн"); + + verify(scheduleGeneratorService, org.mockito.Mockito.times(3)).clearCache(); + } + + @Test + void acceptsReplaceWithOnlyOneReplacementField() { + RenderedLessonDto teacherOnlyReplacement = lesson( + BASE_SLOT_ID, + SOURCE_TIME_SLOT_ID, + "09:00", + "10:30", + NEW_TEACHER_ID, + SOURCE_CLASSROOM_ID, + List.of(GROUP_ID), + List.of(), + "Очно" + ); + stubEffectiveDay(teacherOnlyReplacement); + + ScheduleOverrideDto replaced = service.create(request( + BASE_SLOT_ID, DATE, "REPLACE", null, null, NEW_TEACHER_ID, null + )); + + assertThat(replaced.action()).isEqualTo("REPLACE"); + assertThat(replaced.newTeacherId()).isEqualTo(NEW_TEACHER_ID); + assertThat(replaced.newClassroomId()).isNull(); + assertThat(replaced.newLessonFormat()).isNull(); + } + + @Test + void rejectsOverrideWhenActualSourceLessonDoesNotExist() { + when(scheduleQueryService.buildBaseDayForAllGroups(DATE)).thenReturn(List.of( + lesson(OTHER_SLOT_ID, SOURCE_TIME_SLOT_ID, "09:00", "10:30", + SOURCE_TEACHER_ID, SOURCE_CLASSROOM_ID, List.of(GROUP_ID), List.of(), "Очно") + )); + + assertThatThrownBy(() -> service.create(moveRequest())) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("На выбранную дату базовая пара не формируется по правилам расписания"); + + verify(scheduleOverrideRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsActualNoOpMove() { + stubEffectiveDay(sourceLesson); + + assertThatThrownBy(() -> service.create(request( + BASE_SLOT_ID, DATE, "MOVE", null, SOURCE_CLASSROOM_ID, null, null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Перенос должен фактически менять время пары или аудиторию"); + } + + @Test + void rejectsDifferentTimeSlotIdWithSameActualInterval() { + TimeSlot sameIntervalSlot = timeSlot(3L, 3, "09:00", "10:30"); + when(timeSlotRepository.findById(3L)).thenReturn(Optional.of(sameIntervalSlot)); + stubEffectiveDay(lesson( + BASE_SLOT_ID, + 3L, + "09:00", + "10:30", + SOURCE_TEACHER_ID, + SOURCE_CLASSROOM_ID, + List.of(GROUP_ID), + List.of(), + "Очно" + )); + + assertThatThrownBy(() -> service.create(request( + BASE_SLOT_ID, DATE, "MOVE", 3L, null, null, null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Перенос должен фактически менять время пары или аудиторию"); + } + + @Test + void rejectsActualNoOpReplace() { + stubEffectiveDay(sourceLesson); + + assertThatThrownBy(() -> service.create(request( + BASE_SLOT_ID, DATE, "REPLACE", null, + SOURCE_CLASSROOM_ID, SOURCE_TEACHER_ID, "Очно" + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Замена должна фактически менять преподавателя, аудиторию или формат пары"); + } + + @Test + void rejectsTeacherConflictFromEffectiveDay() { + RenderedLessonDto candidate = movedLesson(); + RenderedLessonDto occupied = lesson( + OTHER_SLOT_ID, 8L, "11:00", "12:30", + SOURCE_TEACHER_ID, NEW_CLASSROOM_ID, + List.of(OTHER_GROUP_ID), List.of(), "Очно" + ); + stubEffectiveDay(candidate, occupied); + + assertThatThrownBy(() -> service.create(moveRequest())) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Конфликт расписания: преподаватель уже занят в указанное время"); + } + + @Test + void rejectsClassroomConflictFromEffectiveDay() { + RenderedLessonDto candidate = movedLesson(); + RenderedLessonDto occupied = lesson( + OTHER_SLOT_ID, 8L, "11:00", "12:30", + NEW_TEACHER_ID, SOURCE_CLASSROOM_ID, + List.of(OTHER_GROUP_ID), List.of(), "Очно" + ); + stubEffectiveDay(candidate, occupied); + + assertThatThrownBy(() -> service.create(moveRequest())) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Конфликт расписания: аудитория уже занята в указанное время"); + } + + @Test + void rejectsWholeGroupConflictWithSubgroupLesson() { + RenderedLessonDto candidate = movedLesson(List.of(GROUP_ID), List.of()); + RenderedLessonDto occupied = lesson( + OTHER_SLOT_ID, 8L, "11:00", "12:30", + NEW_TEACHER_ID, NEW_CLASSROOM_ID, + List.of(GROUP_ID), List.of(SUBGROUP_A_ID), "Очно" + ); + stubEffectiveDay(candidate, occupied); + + assertThatThrownBy(() -> service.create(moveRequest())) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Конфликт расписания: группа или подгруппа уже занята в указанное время"); + } + + @Test + void rejectsConflictOfSameSubgroup() { + RenderedLessonDto candidate = movedLesson(List.of(GROUP_ID), List.of(SUBGROUP_A_ID)); + RenderedLessonDto occupied = lesson( + OTHER_SLOT_ID, 8L, "11:00", "12:30", + NEW_TEACHER_ID, NEW_CLASSROOM_ID, + List.of(GROUP_ID), List.of(SUBGROUP_A_ID), "Очно" + ); + stubEffectiveDay(candidate, occupied); + + assertThatThrownBy(() -> service.create(moveRequest())) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Конфликт расписания: группа или подгруппа уже занята в указанное время"); + } + + @Test + void allowsDifferentSubgroupsOfSameGroup() { + RenderedLessonDto candidate = movedLesson(List.of(GROUP_ID), List.of(SUBGROUP_A_ID)); + RenderedLessonDto occupied = lesson( + OTHER_SLOT_ID, 8L, "11:00", "12:30", + NEW_TEACHER_ID, NEW_CLASSROOM_ID, + List.of(GROUP_ID), List.of(SUBGROUP_B_ID), "Очно" + ); + stubEffectiveDay(candidate, occupied); + + ScheduleOverrideDto saved = service.create(moveRequest()); + + assertThat(saved.action()).isEqualTo("MOVE"); + verify(scheduleOverrideRepository).saveAndFlush(any(ScheduleOverride.class)); + } + + @Test + void allowsAdjacentIntervalsForSameResources() { + RenderedLessonDto candidate = movedLesson(); + RenderedLessonDto adjacent = lesson( + OTHER_SLOT_ID, 9L, "12:10", "13:40", + SOURCE_TEACHER_ID, SOURCE_CLASSROOM_ID, + List.of(GROUP_ID), List.of(), "Очно" + ); + stubEffectiveDay(candidate, adjacent); + + ScheduleOverrideDto saved = service.create(moveRequest()); + + assertThat(saved.action()).isEqualTo("MOVE"); + } + + @Test + void ignoresExistingCancellationBecauseConflictIsCalculatedFromEffectiveDay() { + ScheduleOverride cancelledOtherLesson = override(700L, ruleSlot(OTHER_SLOT_ID), "CANCEL", null); + when(scheduleOverrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) + .thenReturn(List.of(cancelledOtherLesson)); + stubEffectiveDay(movedLesson()); + + service.create(moveRequest()); + + ArgumentCaptor> captor = collectionCaptor(); + verify(scheduleQueryService).buildEffectiveDayForAllGroups(eq(List.of(sourceLesson)), eq(DATE), captor.capture()); + assertThat(captor.getValue()) + .extracting(ScheduleOverride::getAction) + .containsExactlyInAnyOrder("CANCEL", "MOVE"); + } + + @Test + void updateExcludesItselfAndDoesNotMutateStoredEntityOnConflict() { + ScheduleOverride stored = override(500L, baseSlot, "CANCEL", null); + when(scheduleOverrideRepository.findLessonDateById(500L)).thenReturn(Optional.of(DATE)); + when(scheduleOverrideRepository.findByIdForUpdate(500L)).thenReturn(Optional.of(stored)); + when(scheduleOverrideRepository.findByBaseRuleSlotIdAndLessonDateForUpdate(BASE_SLOT_ID, DATE)) + .thenReturn(Optional.of(stored)); + when(scheduleOverrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) + .thenReturn(List.of(stored)); + RenderedLessonDto occupied = lesson( + OTHER_SLOT_ID, 8L, "11:00", "12:30", + SOURCE_TEACHER_ID, NEW_CLASSROOM_ID, + List.of(OTHER_GROUP_ID), List.of(), "Очно" + ); + stubEffectiveDay(movedLesson(), occupied); + + assertThatThrownBy(() -> service.update(500L, moveRequest())) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Конфликт расписания: преподаватель уже занят в указанное время"); + + ArgumentCaptor> captor = collectionCaptor(); + verify(scheduleQueryService).buildEffectiveDayForAllGroups(eq(List.of(sourceLesson)), eq(DATE), captor.capture()); + assertThat(captor.getValue()).hasSize(1); + assertThat(captor.getValue().iterator().next()).isNotSameAs(stored); + assertThat(stored.getAction()).isEqualTo("CANCEL"); + assertThat(stored.getNewTimeSlot()).isNull(); + verify(scheduleOverrideRepository, never()).saveAndFlush(stored); + verify(scheduleGeneratorService, never()).clearCache(); + } + + @Test + void idempotentUpdateExcludesStoredOverrideFromConflictCheck() { + ScheduleOverride stored = override(501L, baseSlot, "MOVE", newTimeSlot); + when(scheduleOverrideRepository.findLessonDateById(501L)).thenReturn(Optional.of(DATE)); + when(scheduleOverrideRepository.findByIdForUpdate(501L)).thenReturn(Optional.of(stored)); + when(scheduleOverrideRepository.findByBaseRuleSlotIdAndLessonDateForUpdate(BASE_SLOT_ID, DATE)) + .thenReturn(Optional.of(stored)); + when(scheduleOverrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) + .thenReturn(List.of(stored)); + stubEffectiveDay(movedLesson()); + + ScheduleOverrideDto result = service.update(501L, moveRequest()); + + assertThat(result.id()).isEqualTo(501L); + assertThat(result.action()).isEqualTo("MOVE"); + assertThat(result.newTimeSlotId()).isEqualTo(NEW_TIME_SLOT_ID); + ArgumentCaptor> captor = collectionCaptor(); + verify(scheduleQueryService).buildEffectiveDayForAllGroups(eq(List.of(sourceLesson)), eq(DATE), captor.capture()); + assertThat(captor.getValue()).singleElement().isNotSameAs(stored); + verify(scheduleOverrideRepository).saveAndFlush(stored); + } + + private void stubEffectiveDay(RenderedLessonDto... lessons) { + when(scheduleQueryService.buildEffectiveDayForAllGroups( + eq(List.of(sourceLesson)), + eq(DATE), + any(Collection.class) + )).thenReturn(List.of(lessons)); + } + + private ScheduleOverrideDto cancelRequest() { + return request(BASE_SLOT_ID, DATE, "CANCEL", null, null, null, null); + } + + private ScheduleOverrideDto moveRequest() { + return request(BASE_SLOT_ID, DATE, "MOVE", NEW_TIME_SLOT_ID, null, null, null); + } + + private ScheduleOverrideDto replaceRequest() { + return request( + BASE_SLOT_ID, DATE, "REPLACE", null, + NEW_CLASSROOM_ID, NEW_TEACHER_ID, "Онлайн" + ); + } + + private ScheduleOverrideDto request(Long baseRuleSlotId, + LocalDate date, + String action, + Long newTimeSlotId, + Long newClassroomId, + Long newTeacherId, + String format) { + return new ScheduleOverrideDto( + null, + baseRuleSlotId, + date, + action, + newTimeSlotId, + newClassroomId, + newTeacherId, + format, + " Тестовый комментарий ", + null, + null + ); + } + + private RenderedLessonDto movedLesson() { + return movedLesson(List.of(GROUP_ID), List.of()); + } + + private RenderedLessonDto movedLesson(List groupIds, List subgroupIds) { + return lesson( + BASE_SLOT_ID, + NEW_TIME_SLOT_ID, + "10:40", + "12:10", + SOURCE_TEACHER_ID, + SOURCE_CLASSROOM_ID, + groupIds, + subgroupIds, + "Очно" + ); + } + + private RenderedLessonDto replacedLesson() { + return lesson( + BASE_SLOT_ID, + SOURCE_TIME_SLOT_ID, + "09:00", + "10:30", + NEW_TEACHER_ID, + NEW_CLASSROOM_ID, + List.of(GROUP_ID), + List.of(), + "Онлайн" + ); + } + + private RenderedLessonDto lesson(Long ruleSlotId, + Long timeSlotId, + String start, + String end, + Long teacherId, + Long classroomId, + List groupIds, + List subgroupIds, + String format) { + return new RenderedLessonDto( + 900L, + ruleSlotId, + DATE, + 2, + "Вторник", + 1, + ScheduleParity.BOTH, + timeSlotId, + 1, + LocalTime.parse(start), + LocalTime.parse(end), + 501L, + "Тестовая дисциплина", + teacherId, + "Тестовый преподаватель", + classroomId, + "Тестовая аудитория", + 601L, + "Лекция", + format, + subgroupIds.size() == 1 ? subgroupIds.get(0) : null, + subgroupIds.size() == 1 ? "Подгруппа" : null, + subgroupIds, + subgroupIds.stream().map(id -> "Подгруппа " + id).toList(), + groupIds, + groupIds.stream().map(id -> "Группа " + id).toList(), + "Лекция", + 2, + 0, + 0, + ScheduleParity.BOTH + ); + } + + private ScheduleRuleSlot ruleSlot(Long id) { + ScheduleRuleSlot slot = new ScheduleRuleSlot(); + slot.setId(id); + return slot; + } + + private TimeSlot timeSlot(Long id, int order, String start, String end) { + TimeSlot slot = new TimeSlot(); + slot.setId(id); + slot.setOrderNumber(order); + slot.setStartTime(LocalTime.parse(start)); + slot.setEndTime(LocalTime.parse(end)); + slot.setDurationMinutes((int) java.time.Duration.between(slot.getStartTime(), slot.getEndTime()).toMinutes()); + return slot; + } + + private Classroom classroom(Long id, String name) { + Classroom classroom = new Classroom(); + classroom.setId(id); + classroom.setName(name); + classroom.setIsAvailable(true); + return classroom; + } + + private User teacher(Long id, String name) { + User teacher = new User(); + teacher.setId(id); + teacher.setRole(Role.TEACHER); + teacher.setFullName(name); + return teacher; + } + + private ScheduleOverride override(Long id, + ScheduleRuleSlot slot, + String action, + TimeSlot replacementTimeSlot) { + ScheduleOverride override = new ScheduleOverride(); + ReflectionTestUtils.setField(override, "id", id); + override.setBaseRuleSlot(slot); + override.setLessonDate(DATE); + override.setAction(action); + override.setNewTimeSlot(replacementTimeSlot); + return override; + } + + private SubgroupRepository.SubgroupGroupReference subgroupReference(Long subgroupId, Long groupId) { + SubgroupRepository.SubgroupGroupReference reference = org.mockito.Mockito.mock( + SubgroupRepository.SubgroupGroupReference.class + ); + when(reference.getSubgroupId()).thenReturn(subgroupId); + when(reference.getGroupId()).thenReturn(groupId); + return reference; + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + private ArgumentCaptor> collectionCaptor() { + return ArgumentCaptor.forClass((Class) Collection.class); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceOverrideTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceOverrideTest.java new file mode 100644 index 0000000..b414e49 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceOverrideTest.java @@ -0,0 +1,152 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.RenderedLessonDto; +import com.magistr.app.model.Classroom; +import com.magistr.app.model.Role; +import com.magistr.app.model.ScheduleOverride; +import com.magistr.app.model.ScheduleParity; +import com.magistr.app.model.ScheduleRuleSlot; +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.User; +import com.magistr.app.repository.GroupRepository; +import com.magistr.app.repository.ScheduleOverrideRepository; +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +class ScheduleQueryServiceOverrideTest { + + private static final LocalDate DATE = LocalDate.of(2026, 9, 1); + + @Test + void appliesAllReplacementFieldsToProvidedDaySnapshot() { + ScheduleQueryService service = service(); + RenderedLessonDto base = lesson(); + ScheduleOverride override = override("MOVE"); + + TimeSlot newTimeSlot = new TimeSlot(); + newTimeSlot.setId(2L); + newTimeSlot.setOrderNumber(2); + newTimeSlot.setStartTime(LocalTime.of(10, 40)); + newTimeSlot.setEndTime(LocalTime.of(12, 10)); + override.setNewTimeSlot(newTimeSlot); + + Classroom newClassroom = new Classroom(); + newClassroom.setId(22L); + newClassroom.setName("Б-202"); + override.setNewClassroom(newClassroom); + + User newTeacher = new User(); + newTeacher.setId(12L); + newTeacher.setRole(Role.TEACHER); + newTeacher.setFullName("Новый преподаватель"); + override.setNewTeacher(newTeacher); + override.setNewLessonFormat("Онлайн"); + + List result = service.buildEffectiveDayForAllGroups( + List.of(base), + DATE, + List.of(override) + ); + + assertThat(result).singleElement().satisfies(lesson -> { + assertThat(lesson.timeSlotId()).isEqualTo(2L); + assertThat(lesson.startTime()).isEqualTo(LocalTime.of(10, 40)); + assertThat(lesson.endTime()).isEqualTo(LocalTime.of(12, 10)); + assertThat(lesson.teacherId()).isEqualTo(12L); + assertThat(lesson.teacherName()).isEqualTo("Новый преподаватель"); + assertThat(lesson.classroomId()).isEqualTo(22L); + assertThat(lesson.classroomName()).isEqualTo("Б-202"); + assertThat(lesson.lessonFormat()).isEqualTo("Онлайн"); + assertThat(lesson.groupIds()).containsExactly(31L); + }); + } + + @Test + void removesCancelledOccurrenceFromProvidedDaySnapshot() { + ScheduleQueryService service = service(); + + List result = service.buildEffectiveDayForAllGroups( + List.of(lesson()), + DATE, + List.of(override("CANCEL")) + ); + + assertThat(result).isEmpty(); + } + + @Test + void ignoresOverrideForAnotherDate() { + ScheduleQueryService service = service(); + ScheduleOverride override = override("CANCEL"); + override.setLessonDate(DATE.plusDays(1)); + + List result = service.buildEffectiveDayForAllGroups( + List.of(lesson()), + DATE, + List.of(override) + ); + + assertThat(result).singleElement().extracting(RenderedLessonDto::scheduleRuleSlotId).isEqualTo(101L); + } + + private ScheduleQueryService service() { + return new ScheduleQueryService( + mock(ScheduleGeneratorService.class), + mock(GroupRepository.class), + mock(ScheduleOverrideRepository.class), + mock(StudentGroupLifecycleService.class) + ); + } + + private ScheduleOverride override(String action) { + ScheduleRuleSlot baseSlot = new ScheduleRuleSlot(); + baseSlot.setId(101L); + ScheduleOverride override = new ScheduleOverride(); + override.setBaseRuleSlot(baseSlot); + override.setLessonDate(DATE); + override.setAction(action); + return override; + } + + private RenderedLessonDto lesson() { + return new RenderedLessonDto( + 900L, + 101L, + DATE, + 2, + "Вторник", + 1, + ScheduleParity.BOTH, + 1L, + 1, + LocalTime.of(9, 0), + LocalTime.of(10, 30), + 501L, + "Тестовая дисциплина", + 11L, + "Исходный преподаватель", + 21L, + "А-101", + 601L, + "Лекция", + "Очно", + null, + null, + List.of(), + List.of(), + List.of(31L), + List.of("Группа 31"), + "Т", + 2, + 0, + 0, + ScheduleParity.BOTH + ); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java new file mode 100644 index 0000000..b564073 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java @@ -0,0 +1,241 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.RenderedLessonDto; +import com.magistr.app.model.Role; +import com.magistr.app.model.ScheduleOverride; +import com.magistr.app.model.ScheduleParity; +import com.magistr.app.model.ScheduleRuleSlot; +import com.magistr.app.model.StudentGroup; +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.User; +import com.magistr.app.repository.GroupRepository; +import com.magistr.app.repository.ScheduleOverrideRepository; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@DisplayName("Поиск расписания преподавателя с точечными изменениями") +class ScheduleQueryServiceTeacherOverrideTest { + + private static final LocalDate DATE = LocalDate.of(2026, 9, 1); + private static final long SOURCE_TEACHER_ID = 11L; + private static final long REPLACEMENT_TEACHER_ID = 12L; + private static final long GROUP_ID = 31L; + + private final ScheduleGeneratorService generatorService = mock(ScheduleGeneratorService.class); + private final GroupRepository groupRepository = mock(GroupRepository.class); + private final ScheduleOverrideRepository overrideRepository = mock(ScheduleOverrideRepository.class); + private final StudentGroupLifecycleService groupLifecycleService = mock(StudentGroupLifecycleService.class); + private final ScheduleQueryService service = new ScheduleQueryService( + generatorService, + groupRepository, + overrideRepository, + groupLifecycleService + ); + + @Test + @DisplayName("Замена A на B видна преподавателю B и скрыта у преподавателя A") + void replacementIsVisibleOnlyToEffectiveTeacher() { + RenderedLessonDto sourceLesson = lesson(101L, SOURCE_TEACHER_ID, 1); + ScheduleOverride replacement = replacement(101L, REPLACEMENT_TEACHER_ID); + when(generatorService.buildScheduleForTeacher(REPLACEMENT_TEACHER_ID, DATE, DATE)) + .thenReturn(List.of()); + when(generatorService.buildScheduleForTeacher(SOURCE_TEACHER_ID, DATE, DATE)) + .thenReturn(List.of(sourceLesson)); + when(overrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) + .thenReturn(List.of(replacement)); + stubBaseDay(List.of(sourceLesson)); + + List replacementSchedule = searchTeacher(REPLACEMENT_TEACHER_ID); + List sourceSchedule = searchTeacher(SOURCE_TEACHER_ID); + + assertThat(replacementSchedule).singleElement().satisfies(lesson -> { + assertThat(lesson.scheduleRuleSlotId()).isEqualTo(101L); + assertThat(lesson.teacherId()).isEqualTo(REPLACEMENT_TEACHER_ID); + }); + assertThat(sourceSchedule).isEmpty(); + verify(overrideRepository, times(2)).findByLessonDateBetweenWithDetails(DATE, DATE); + verify(groupRepository).findAll(); + verify(generatorService).buildScheduleForGroup(GROUP_ID, DATE, DATE); + } + + @Test + @DisplayName("Точечное изменение без базового occurrence не создаёт фантомную пару") + void missingBaseOccurrenceDoesNotCreatePhantomLesson() { + ScheduleOverride replacement = replacement(101L, REPLACEMENT_TEACHER_ID); + when(generatorService.buildScheduleForTeacher(REPLACEMENT_TEACHER_ID, DATE, DATE)) + .thenReturn(List.of()); + when(overrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) + .thenReturn(List.of(replacement)); + stubBaseDay(List.of(lesson(102L, SOURCE_TEACHER_ID, 2))); + + List result = searchTeacher(REPLACEMENT_TEACHER_ID); + + assertThat(result).isEmpty(); + verify(overrideRepository).findByLessonDateBetweenWithDetails(DATE, DATE); + verify(groupRepository).findAll(); + verify(generatorService).buildScheduleForGroup(GROUP_ID, DATE, DATE); + } + + @Test + @DisplayName("Несколько замен одной даты генерируют базовый день только один раз") + void multipleReplacementsOnSameDateGenerateBaseDayOnce() { + RenderedLessonDto first = lesson(101L, SOURCE_TEACHER_ID, 1); + RenderedLessonDto second = lesson(102L, SOURCE_TEACHER_ID, 2); + when(generatorService.buildScheduleForTeacher(REPLACEMENT_TEACHER_ID, DATE, DATE)) + .thenReturn(List.of()); + when(overrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) + .thenReturn(List.of( + replacement(101L, REPLACEMENT_TEACHER_ID), + replacement(102L, REPLACEMENT_TEACHER_ID) + )); + stubBaseDay(List.of(first, second)); + + List result = searchTeacher(REPLACEMENT_TEACHER_ID); + + assertThat(result) + .extracting(RenderedLessonDto::scheduleRuleSlotId) + .containsExactly(101L, 102L); + verify(overrideRepository).findByLessonDateBetweenWithDetails(DATE, DATE); + verify(groupRepository).findAll(); + verify(generatorService).buildScheduleForGroup(GROUP_ID, DATE, DATE); + } + + @Test + @DisplayName("Совпавшая базовая и достроенная пара остаётся в результате один раз") + void duplicateSourceOccurrenceIsRemovedAfterApplyingSnapshot() { + RenderedLessonDto existingLesson = lesson(101L, REPLACEMENT_TEACHER_ID, 1); + when(generatorService.buildScheduleForTeacher(REPLACEMENT_TEACHER_ID, DATE, DATE)) + .thenReturn(List.of(existingLesson)); + when(overrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) + .thenReturn(List.of(replacement(101L, REPLACEMENT_TEACHER_ID))); + stubBaseDay(List.of(existingLesson)); + + List result = searchTeacher(REPLACEMENT_TEACHER_ID); + + assertThat(result).singleElement().satisfies(lesson -> + assertThat(lesson.scheduleRuleSlotId()).isEqualTo(101L)); + verify(overrideRepository).findByLessonDateBetweenWithDetails(DATE, DATE); + verify(groupRepository).findAll(); + verify(generatorService).buildScheduleForGroup(GROUP_ID, DATE, DATE); + } + + @Test + @DisplayName("Отмена и перенос применяются из единого снимка изменений") + void cancelAndMoveContinueToApplyFromSingleSnapshot() { + RenderedLessonDto cancelledLesson = lesson(101L, SOURCE_TEACHER_ID, 1); + RenderedLessonDto movedLesson = lesson(102L, SOURCE_TEACHER_ID, 2); + ScheduleOverride cancellation = override(101L, "CANCEL"); + ScheduleOverride move = override(102L, "MOVE"); + TimeSlot newTimeSlot = new TimeSlot(); + newTimeSlot.setId(3L); + newTimeSlot.setOrderNumber(3); + newTimeSlot.setStartTime(LocalTime.of(13, 0)); + newTimeSlot.setEndTime(LocalTime.of(14, 30)); + move.setNewTimeSlot(newTimeSlot); + when(groupRepository.findById(GROUP_ID)).thenReturn(Optional.of(group())); + when(groupLifecycleService.mayHaveScheduleInRange(any(), any(), any())).thenReturn(true); + when(generatorService.buildScheduleForGroup(GROUP_ID, DATE, DATE)) + .thenReturn(List.of(cancelledLesson, movedLesson)); + when(overrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) + .thenReturn(List.of(cancellation, move)); + + List result = service.search( + GROUP_ID, null, null, null, null, null, null, null, DATE, DATE + ); + + assertThat(result).singleElement().satisfies(lesson -> { + assertThat(lesson.scheduleRuleSlotId()).isEqualTo(102L); + assertThat(lesson.timeSlotId()).isEqualTo(3L); + assertThat(lesson.startTime()).isEqualTo(LocalTime.of(13, 0)); + assertThat(lesson.endTime()).isEqualTo(LocalTime.of(14, 30)); + }); + verify(overrideRepository).findByLessonDateBetweenWithDetails(DATE, DATE); + } + + private List searchTeacher(long teacherId) { + return service.search( + null, teacherId, null, null, null, null, null, null, DATE, DATE + ); + } + + private void stubBaseDay(List lessons) { + when(groupRepository.findAll()).thenReturn(List.of(group())); + when(groupLifecycleService.mayHaveScheduleInRange(any(), any(), any())).thenReturn(true); + when(generatorService.buildScheduleForGroup(GROUP_ID, DATE, DATE)).thenReturn(lessons); + } + + private StudentGroup group() { + StudentGroup group = new StudentGroup(); + group.setId(GROUP_ID); + group.setName("Группа 31"); + return group; + } + + private ScheduleOverride replacement(long baseRuleSlotId, long teacherId) { + ScheduleOverride override = override(baseRuleSlotId, "REPLACE"); + User newTeacher = new User(); + newTeacher.setId(teacherId); + newTeacher.setRole(Role.TEACHER); + newTeacher.setFullName("Замещающий преподаватель"); + override.setNewTeacher(newTeacher); + return override; + } + + private ScheduleOverride override(long baseRuleSlotId, String action) { + ScheduleRuleSlot baseRuleSlot = new ScheduleRuleSlot(); + baseRuleSlot.setId(baseRuleSlotId); + ScheduleOverride override = new ScheduleOverride(); + override.setBaseRuleSlot(baseRuleSlot); + override.setLessonDate(DATE); + override.setAction(action); + return override; + } + + private RenderedLessonDto lesson(long baseRuleSlotId, long teacherId, int timeSlotOrder) { + return new RenderedLessonDto( + 900L + baseRuleSlotId, + baseRuleSlotId, + DATE, + 2, + "Вторник", + 1, + ScheduleParity.BOTH, + (long) timeSlotOrder, + timeSlotOrder, + LocalTime.of(7 + timeSlotOrder * 2, 0), + LocalTime.of(8 + timeSlotOrder * 2, 30), + 500L + baseRuleSlotId, + "Тестовая дисциплина " + baseRuleSlotId, + teacherId, + teacherId == SOURCE_TEACHER_ID ? "Исходный преподаватель" : "Замещающий преподаватель", + 21L, + "А-101", + 601L, + "Лекция", + "Очно", + null, + null, + List.of(), + List.of(), + List.of(GROUP_ID), + List.of("Группа 31"), + "Т", + 2, + 0, + 0, + ScheduleParity.BOTH + ); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java new file mode 100644 index 0000000..8f5bb68 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java @@ -0,0 +1,365 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.ScheduleRuleDto; +import com.magistr.app.dto.ScheduleRuleSlotDto; +import com.magistr.app.model.ScheduleParity; +import com.magistr.app.model.ScheduleRule; +import com.magistr.app.repository.ScheduleRuleRepository; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.springframework.aop.support.AopUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +@Testcontainers +@SpringBootTest( + classes = ScheduleRuleServiceConcurrencyIntegrationTest.TestApplication.class, + properties = "spring.jpa.open-in-view=false" +) +class ScheduleRuleServiceConcurrencyIntegrationTest { + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @DynamicPropertySource + static void databaseProperties(DynamicPropertyRegistry registry) { + registry.add("spring.datasource.url", POSTGRES::getJdbcUrl); + registry.add("spring.datasource.username", POSTGRES::getUsername); + registry.add("spring.datasource.password", POSTGRES::getPassword); + } + + @Autowired + private ScheduleRuleService service; + + @Autowired + private ScheduleGeneratorService scheduleGeneratorService; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private DataSource dataSource; + + private ExecutorService executor; + + @AfterEach + void stopExecutor() throws InterruptedException { + if (executor == null) { + return; + } + executor.shutdownNow(); + assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); + } + + @Test + void serializesConcurrentCreateInsideOneSemesterAcrossSpringTransactions() throws Exception { + assertThat(AopUtils.isAopProxy(service)).isTrue(); + + SeedIds ids = createIsolatedSemesterAndLoadSeedIds(); + ScheduleRuleDto request = request(ids); + executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + List> futures = new ArrayList<>(); + + try (Connection lockConnection = dataSource.getConnection()) { + lockConnection.setAutoCommit(false); + int holderPid = lockSemesterRow(lockConnection, ids.semesterId()); + futures.add(executor.submit(() -> createAfterSignal(request, ready, start))); + futures.add(executor.submit(() -> createAfterSignal(request, ready, start))); + awaitReady(ready); + start.countDown(); + awaitTwoBlockedCreates(futures, holderPid); + lockConnection.commit(); + } + + List outcomes = List.of( + futures.get(0).get(10, TimeUnit.SECONDS), + futures.get(1).get(10, TimeUnit.SECONDS) + ); + + assertThat(outcomes).filteredOn(outcome -> outcome.result() != null).hasSize(1); + assertThat(outcomes).filteredOn(outcome -> outcome.failure() != null).singleElement() + .satisfies(outcome -> { + assertThat(outcome.failure()).isInstanceOf(ScheduleRuleConflictException.class); + assertThat(outcome.failure()) + .hasMessage("Невозможно сохранить правило: слот занят"); + }); + assertThat(queryCount("SELECT count(*) FROM schedule_rules WHERE semester_id = ?", ids.semesterId())) + .isEqualTo(1L); + assertThat(queryCount(""" + SELECT count(*) + FROM schedule_rule_slots slot + JOIN schedule_rules rule ON rule.id = slot.schedule_rule_id + WHERE rule.semester_id = ? + """, ids.semesterId())).isEqualTo(1L); + assertThat(queryCount(""" + SELECT count(*) + FROM schedule_rule_groups rule_group + JOIN schedule_rules rule ON rule.id = rule_group.schedule_rule_id + WHERE rule.semester_id = ? + """, ids.semesterId())).isEqualTo(1L); + verify(scheduleGeneratorService, times(1)).clearCache(); + } + + private CreateOutcome createAfterSignal(ScheduleRuleDto request, + CountDownLatch ready, + CountDownLatch start) { + ready.countDown(); + try { + if (!start.await(5, TimeUnit.SECONDS)) { + return new CreateOutcome(null, new IllegalStateException( + "Конкурентные операции не получили общий сигнал запуска" + )); + } + return new CreateOutcome(service.create(request), null); + } catch (Throwable failure) { + return new CreateOutcome(null, failure); + } + } + + private void awaitReady(CountDownLatch ready) { + try { + if (!ready.await(5, TimeUnit.SECONDS)) { + throw new IllegalStateException("Конкурентные операции не успели подготовиться"); + } + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Ожидание конкурентных операций прервано", exception); + } + } + + private int lockSemesterRow(Connection connection, long semesterId) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement( + "SELECT id, pg_backend_pid() FROM semesters WHERE id = ? FOR UPDATE" + )) { + statement.setLong(1, semesterId); + try (ResultSet result = statement.executeQuery()) { + assertThat(result.next()).as("Строка тестового семестра должна существовать").isTrue(); + assertThat(result.getLong(1)).isEqualTo(semesterId); + int holderPid = result.getInt(2); + assertThat(holderPid).isPositive(); + return holderPid; + } + } + } + + private void awaitTwoBlockedCreates(List> futures, int holderPid) { + long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(5); + do { + failOnEarlyCompletion(futures); + Long blocked = jdbcTemplate.queryForObject(""" + SELECT count(DISTINCT activity.pid) + FROM pg_stat_activity activity + WHERE activity.datname = current_database() + AND activity.pid <> ? + AND activity.state = 'active' + AND activity.wait_event_type = 'Lock' + AND lower(activity.query) LIKE '%semester%' + AND EXISTS ( + SELECT 1 + FROM pg_locks relation_lock + WHERE relation_lock.pid = activity.pid + AND relation_lock.relation = 'semesters'::regclass + ) + """, Long.class, holderPid); + if (blocked != null && blocked >= 2L) { + return; + } + try { + Thread.sleep(25); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Ожидание блокировки операций прервано", exception); + } + } while (System.nanoTime() < deadline); + + failOnEarlyCompletion(futures); + throw new IllegalStateException("Обе операции создания не заблокировались на строке одного семестра. " + + "Снимок PostgreSQL: " + lockWaitSnapshot(holderPid)); + } + + private void failOnEarlyCompletion(List> futures) { + for (int index = 0; index < futures.size(); index++) { + Future future = futures.get(index); + if (!future.isDone()) { + continue; + } + try { + CreateOutcome outcome = future.get(0, TimeUnit.MILLISECONDS); + String detail = outcome.failure() == null + ? "операция неожиданно завершилась успешно" + : outcome.failure().getClass().getSimpleName() + ": " + outcome.failure().getMessage(); + throw new IllegalStateException( + "Конкурентная операция " + (index + 1) + " завершилась до снятия внешнего барьера: " + detail + ); + } catch (IllegalStateException exception) { + throw exception; + } catch (Exception exception) { + throw new IllegalStateException( + "Не удалось прочитать ранний результат конкурентной операции " + (index + 1), + exception + ); + } + } + } + + private String lockWaitSnapshot(int holderPid) { + List rows = jdbcTemplate.query(""" + SELECT concat( + 'pid=', activity.pid, + ', state=', activity.state, + ', wait=', coalesce(activity.wait_event_type, '-'), '/', coalesce(activity.wait_event, '-'), + ', blockers=', pg_blocking_pids(activity.pid)::text, + ', query=', left(regexp_replace(activity.query, '\\s+', ' ', 'g'), 180) + ) + FROM pg_stat_activity activity + WHERE activity.datname = current_database() + AND activity.pid <> ? + ORDER BY activity.pid + """, (result, rowNumber) -> result.getString(1), holderPid); + return rows.isEmpty() ? "активные подключения не найдены" : String.join(" | ", rows); + } + + private SeedIds createIsolatedSemesterAndLoadSeedIds() { + Long academicYearId = jdbcTemplate.queryForObject(""" + INSERT INTO academic_years (title, start_date, end_date) + VALUES ('2098-2099', DATE '2098-09-01', DATE '2099-06-30') + RETURNING id + """, Long.class); + Long semesterId = jdbcTemplate.queryForObject(""" + INSERT INTO semesters (academic_year_id, semester_type, start_date, end_date) + VALUES (?, 'autumn', DATE '2098-09-01', DATE '2099-01-31') + RETURNING id + """, Long.class, academicYearId); + + return new SeedIds( + semesterId, + queryId("SELECT id FROM subjects WHERE name = 'Высшая математика'"), + queryId("SELECT id FROM student_groups WHERE name = 'ИВТ-21-1'"), + queryId(""" + SELECT slot.id + FROM time_slots slot + JOIN time_slot_scopes scope ON scope.id = slot.time_slot_scope_id + WHERE scope.code = 'default' AND slot.order_number = 1 + """), + queryId("SELECT id FROM users WHERE username = 'Тестовый преподаватель'"), + queryId("SELECT id FROM classrooms WHERE name = '101 Ленинская'"), + queryId("SELECT id FROM lesson_types WHERE name = 'Лекция'") + ); + } + + private long queryId(String sql) { + Long value = jdbcTemplate.queryForObject(sql, Long.class); + assertThat(value).as("Тестовый seed-идентификатор должен существовать: %s", sql).isNotNull(); + return value; + } + + private long queryCount(String sql, Object... arguments) { + Long value = jdbcTemplate.queryForObject(sql, Long.class, arguments); + assertThat(value).isNotNull(); + return value; + } + + private ScheduleRuleDto request(SeedIds ids) { + ScheduleRuleSlotDto slot = new ScheduleRuleSlotDto( + null, + 1, + null, + ScheduleParity.BOTH, + ids.timeSlotId(), + null, + null, + null, + null, + List.of(), + List.of(), + ids.teacherId(), + null, + ids.classroomId(), + null, + ids.lessonTypeId(), + null, + "Очно" + ); + return new ScheduleRuleDto( + null, + ids.subjectId(), + null, + ids.semesterId(), + null, + null, + 2, + 0, + 0, + 1, + 1, + 1, + List.of(ids.groupId()), + List.of(), + List.of(slot) + ); + } + + @SpringBootConfiguration + @EnableAutoConfiguration + @EntityScan(basePackageClasses = ScheduleRule.class) + @EnableJpaRepositories(basePackageClasses = ScheduleRuleRepository.class) + @Import({ScheduleRuleService.class, TestDependencies.class}) + static class TestApplication { + } + + @TestConfiguration(proxyBeanMethods = false) + static class TestDependencies { + + @Bean + ScheduleGeneratorService scheduleGeneratorService() { + return mock(ScheduleGeneratorService.class); + } + } + + private record SeedIds( + long semesterId, + long subjectId, + long groupId, + long timeSlotId, + long teacherId, + long classroomId, + long lessonTypeId + ) { + } + + private record CreateOutcome(ScheduleRuleDto result, Throwable failure) { + } +} diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceTest.java new file mode 100644 index 0000000..72b1371 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceTest.java @@ -0,0 +1,600 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.ScheduleRuleDto; +import com.magistr.app.dto.ScheduleRuleSlotDto; +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.Classroom; +import com.magistr.app.model.LessonType; +import com.magistr.app.model.LifecycleEntity; +import com.magistr.app.model.Role; +import com.magistr.app.model.ScheduleParity; +import com.magistr.app.model.ScheduleRule; +import com.magistr.app.model.ScheduleRuleSlot; +import com.magistr.app.model.Semester; +import com.magistr.app.model.SemesterType; +import com.magistr.app.model.StudentGroup; +import com.magistr.app.model.Subgroup; +import com.magistr.app.model.Subject; +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.TimeSlotScope; +import com.magistr.app.model.User; +import com.magistr.app.repository.ClassroomRepository; +import com.magistr.app.repository.GroupRepository; +import com.magistr.app.repository.LessonTypesRepository; +import com.magistr.app.repository.ScheduleRuleRepository; +import com.magistr.app.repository.SemesterRepository; +import com.magistr.app.repository.SubjectRepository; +import com.magistr.app.repository.SubgroupRepository; +import com.magistr.app.repository.TimeSlotRepository; +import com.magistr.app.repository.UserRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; +import org.springframework.test.util.ReflectionTestUtils; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicLong; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class ScheduleRuleServiceTest { + + private static final long RULE_ID = 100L; + private static final long SUBJECT_ID = 10L; + private static final long SEMESTER_ID = 20L; + private static final long GROUP_ID = 30L; + private static final long TIME_SLOT_ID = 40L; + private static final long TEACHER_ID = 50L; + private static final long OTHER_TEACHER_ID = 51L; + private static final long CLASSROOM_ID = 60L; + private static final long OTHER_CLASSROOM_ID = 61L; + private static final long LECTURE_TYPE_ID = 70L; + private static final long LABORATORY_TYPE_ID = 71L; + private static final long SUBGROUP_A_ID = 80L; + private static final long SUBGROUP_B_ID = 81L; + + @Mock + private ScheduleRuleRepository scheduleRuleRepository; + @Mock + private SubjectRepository subjectRepository; + @Mock + private SemesterRepository semesterRepository; + @Mock + private GroupRepository groupRepository; + @Mock + private TimeSlotRepository timeSlotRepository; + @Mock + private UserRepository userRepository; + @Mock + private ClassroomRepository classroomRepository; + @Mock + private LessonTypesRepository lessonTypesRepository; + @Mock + private SubgroupRepository subgroupRepository; + @Mock + private ScheduleGeneratorService scheduleGeneratorService; + + private ScheduleRuleService service; + private Subject subject; + private Semester semester; + private StudentGroup group; + private TimeSlot timeSlot; + private User teacher; + private User otherTeacher; + private Classroom classroom; + private Classroom otherClassroom; + private LessonType lectureType; + private LessonType laboratoryType; + private Subgroup subgroupA; + private Subgroup subgroupB; + + @BeforeEach + void setUp() { + subject = subject(); + semester = semester(); + group = group(); + timeSlot = timeSlot(); + teacher = user(TEACHER_ID, Role.TEACHER, "Первый преподаватель"); + otherTeacher = user(OTHER_TEACHER_ID, Role.TEACHER, "Второй преподаватель"); + classroom = classroom(CLASSROOM_ID, "А-101"); + otherClassroom = classroom(OTHER_CLASSROOM_ID, "Б-202"); + lectureType = lessonType(LECTURE_TYPE_ID, "Лекция"); + laboratoryType = lessonType(LABORATORY_TYPE_ID, "Лабораторная работа"); + subgroupA = subgroup(SUBGROUP_A_ID, "Подгруппа 1"); + subgroupB = subgroup(SUBGROUP_B_ID, "Подгруппа 2"); + + service = new ScheduleRuleService( + scheduleRuleRepository, + subjectRepository, + semesterRepository, + groupRepository, + timeSlotRepository, + userRepository, + classroomRepository, + lessonTypesRepository, + subgroupRepository, + scheduleGeneratorService + ); + + when(semesterRepository.findByIdForUpdate(SEMESTER_ID)).thenReturn(Optional.of(semester)); + when(semesterRepository.findAllByIdForUpdateOrderById(List.of(SEMESTER_ID))) + .thenReturn(List.of(semester)); + when(subjectRepository.findById(SUBJECT_ID)).thenReturn(Optional.of(subject)); + when(groupRepository.findAllById(List.of(GROUP_ID))).thenReturn(List.of(group)); + when(timeSlotRepository.findById(TIME_SLOT_ID)).thenReturn(Optional.of(timeSlot)); + when(userRepository.findById(TEACHER_ID)).thenReturn(Optional.of(teacher)); + when(userRepository.findById(OTHER_TEACHER_ID)).thenReturn(Optional.of(otherTeacher)); + when(classroomRepository.findById(CLASSROOM_ID)).thenReturn(Optional.of(classroom)); + when(classroomRepository.findById(OTHER_CLASSROOM_ID)).thenReturn(Optional.of(otherClassroom)); + when(lessonTypesRepository.findById(LECTURE_TYPE_ID)).thenReturn(Optional.of(lectureType)); + when(lessonTypesRepository.findById(LABORATORY_TYPE_ID)).thenReturn(Optional.of(laboratoryType)); + when(subgroupRepository.findById(SUBGROUP_A_ID)).thenReturn(Optional.of(subgroupA)); + when(subgroupRepository.findById(SUBGROUP_B_ID)).thenReturn(Optional.of(subgroupB)); + when(scheduleRuleRepository.findActiveBySemesterIdWithDetails(SEMESTER_ID, null)) + .thenReturn(List.of()); + when(scheduleRuleRepository.saveAndFlush(any(ScheduleRule.class))) + .thenAnswer(invocation -> assignGeneratedIds(invocation.getArgument(0))); + } + + @Test + void rejectsOddHoursOfEveryLessonCategoryWithRussianMessages() { + assertThatThrownBy(() -> service.create(ruleRequest(1, 0, 0, lectureSlot()))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Количество часов для лекций должно быть чётным"); + + assertThatThrownBy(() -> service.create(ruleRequest(0, 3, 0, laboratorySlot(SUBGROUP_A_ID)))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Количество часов для лабораторных занятий должно быть чётным"); + + assertThatThrownBy(() -> service.create(ruleRequest(0, 0, 5, lectureSlot()))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Количество часов для практических занятий должно быть чётным"); + + verify(semesterRepository, never()).findByIdForUpdate(any()); + } + + @Test + void validatesMissingNegativeZeroAndUnusedTypeHours() { + assertThatThrownBy(() -> service.create(ruleRequest(null, 0, 0, lectureSlot()))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Укажите количество часов для лекций"); + + assertThatThrownBy(() -> service.create(ruleRequest(-2, 0, 0, lectureSlot()))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Количество часов для лекций не может быть отрицательным"); + + assertThatThrownBy(() -> service.create(ruleRequest(0, 0, 0, lectureSlot()))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Укажите часы хотя бы для одного типа занятий"); + + ScheduleRuleDto saved = service.create(ruleRequest(2, 0, 0, lectureSlot())); + assertThat(saved.lectureAcademicHours()).isEqualTo(2); + assertThat(saved.laboratoryAcademicHours()).isZero(); + assertThat(saved.practiceAcademicHours()).isZero(); + } + + @Test + void rejectsActiveUserWithoutTeacherRole() { + User administrator = user(TEACHER_ID, Role.ADMIN, "Администратор"); + when(userRepository.findById(TEACHER_ID)).thenReturn(Optional.of(administrator)); + + assertThatThrownBy(() -> service.create(ruleRequest(2, 0, 0, lectureSlot()))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("В слот расписания можно назначить только пользователя с ролью преподавателя"); + + verify(scheduleRuleRepository, never()).saveAndFlush(any()); + } + + @Test + void treatsMissingReferencedTeacherAsInvalidPayload() { + when(userRepository.findById(TEACHER_ID)).thenReturn(Optional.empty()); + + assertThatThrownBy(() -> service.create(ruleRequest(2, 0, 0, lectureSlot()))) + .isExactlyInstanceOf(IllegalArgumentException.class) + .hasMessage("Преподаватель не найден"); + + verify(scheduleRuleRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsUnsupportedFormatAndAcceptsTrimmedSupportedFormat() { + ScheduleRuleSlotDto invalid = slot( + ScheduleParity.BOTH, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Гибрид" + ); + assertThatThrownBy(() -> service.create(ruleRequest(2, 0, 0, invalid))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Формат занятия должен быть «Очно» или «Онлайн»"); + + ScheduleRuleSlotDto valid = slot( + ScheduleParity.BOTH, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), " Онлайн " + ); + ScheduleRuleDto saved = service.create(ruleRequest(2, 0, 0, valid)); + + assertThat(saved.slots()).singleElement().extracting(ScheduleRuleSlotDto::lessonFormat) + .isEqualTo("Онлайн"); + } + + @Test + void rejectsExactDuplicateInsideNewRule() { + ScheduleRuleSlotDto duplicate = lectureSlot(); + + assertThatThrownBy(() -> service.create(ruleRequest(2, 0, 0, duplicate, duplicate))) + .isInstanceOfSatisfying(ScheduleRuleConflictException.class, exception -> { + assertThat(exception.getMessage()) + .isEqualTo("Невозможно сохранить правило: в списке есть дублирующиеся слоты"); + assertThat(exception.getConflictRule()).isNull(); + assertThat(exception.getConflictFields()).containsExactly("slot"); + assertThat(exception.getConflictReasons()).containsExactly("Дублирующийся слот"); + }); + + verify(scheduleRuleRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsInternalConflictAndReportsAllSharedResourcesInStableOrder() { + ScheduleRuleSlotDto first = lectureSlot(); + ScheduleRuleSlotDto second = slot( + ScheduleParity.BOTH, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Онлайн" + ); + + assertThatThrownBy(() -> service.create(ruleRequest(4, 0, 0, first, second))) + .isInstanceOfSatisfying(ScheduleRuleConflictException.class, exception -> { + assertThat(exception.getMessage()) + .isEqualTo("Невозможно сохранить правило: слоты внутри правила конфликтуют"); + assertThat(exception.getConflictRule()).isNull(); + assertThat(exception.getConflictFields()).containsExactly("teacher", "classroom", "group"); + assertThat(exception.getConflictReasons()) + .containsExactly("Преподаватель", "Аудитория", "Группа"); + }); + } + + @Test + void allowsOddAndEvenSlotsBecauseTheirActiveWeeksDoNotOverlap() { + ScheduleRuleSlotDto odd = slot( + ScheduleParity.ODD, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Очно" + ); + ScheduleRuleSlotDto even = slot( + ScheduleParity.EVEN, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Очно" + ); + + ScheduleRuleDto saved = service.create(ruleRequest(4, 0, 0, odd, even)); + + assertThat(saved.slots()).extracting(ScheduleRuleSlotDto::parity) + .containsExactlyInAnyOrder(ScheduleParity.ODD, ScheduleParity.EVEN); + } + + @Test + void rejectsBothParityWhenItOverlapsOddOrEvenSlot() { + ScheduleRuleSlotDto bothFirst = slot( + ScheduleParity.BOTH, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Очно" + ); + ScheduleRuleSlotDto oddSecond = slot( + ScheduleParity.ODD, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Онлайн" + ); + assertThatThrownBy(() -> service.create(ruleRequest(6, 0, 0, bothFirst, oddSecond))) + .isInstanceOf(ScheduleRuleConflictException.class) + .hasMessage("Невозможно сохранить правило: слоты внутри правила конфликтуют"); + + ScheduleRuleSlotDto evenFirst = slot( + ScheduleParity.EVEN, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Очно" + ); + ScheduleRuleSlotDto bothSecond = slot( + ScheduleParity.BOTH, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Онлайн" + ); + assertThatThrownBy(() -> service.create(ruleRequest(6, 0, 0, evenFirst, bothSecond))) + .isInstanceOf(ScheduleRuleConflictException.class) + .hasMessage("Невозможно сохранить правило: слоты внутри правила конфликтуют"); + } + + @Test + void rejectsWholeGroupAndSubgroupAtSameTime() { + ScheduleRuleSlotDto wholeGroup = laboratorySlot(); + ScheduleRuleSlotDto subgroup = slot( + ScheduleParity.BOTH, OTHER_TEACHER_ID, OTHER_CLASSROOM_ID, + LABORATORY_TYPE_ID, List.of(SUBGROUP_A_ID), "Очно" + ); + + assertThatThrownBy(() -> service.create(ruleRequest(0, 4, 0, wholeGroup, subgroup))) + .isInstanceOfSatisfying(ScheduleRuleConflictException.class, exception -> { + assertThat(exception.getConflictFields()).containsExactly("group"); + assertThat(exception.getConflictReasons()).containsExactly("Группа"); + }); + } + + @Test + void rejectsSameSubgroupAtSameTime() { + ScheduleRuleSlotDto first = laboratorySlot(SUBGROUP_A_ID); + ScheduleRuleSlotDto second = slot( + ScheduleParity.BOTH, OTHER_TEACHER_ID, OTHER_CLASSROOM_ID, + LABORATORY_TYPE_ID, List.of(SUBGROUP_A_ID), "Онлайн" + ); + + assertThatThrownBy(() -> service.create(ruleRequest(0, 4, 0, first, second))) + .isInstanceOfSatisfying(ScheduleRuleConflictException.class, exception -> + assertThat(exception.getConflictFields()).containsExactly("group")); + } + + @Test + void allowsDifferentSubgroupsOfSameGroupAtSameTime() { + ScheduleRuleSlotDto first = laboratorySlot(SUBGROUP_A_ID); + ScheduleRuleSlotDto second = slot( + ScheduleParity.BOTH, OTHER_TEACHER_ID, OTHER_CLASSROOM_ID, + LABORATORY_TYPE_ID, List.of(SUBGROUP_B_ID), "Очно" + ); + + ScheduleRuleDto saved = service.create(ruleRequest(0, 4, 0, first, second)); + + assertThat(saved.slots()).hasSize(2); + } + + @Test + void ignoresArchivedExternalRuleButRejectsEquivalentActiveRule() { + ScheduleRule archived = persistedRule(200L, LifecycleEntity.STATUS_ARCHIVED, "Очно"); + when(scheduleRuleRepository.findActiveBySemesterIdWithDetails(SEMESTER_ID, null)) + .thenReturn(List.of(archived)); + + ScheduleRuleDto saved = service.create(ruleRequest(2, 0, 0, lectureSlot())); + assertThat(saved.id()).isNotNull(); + + ScheduleRule active = persistedRule(201L, LifecycleEntity.STATUS_ACTIVE, "Очно"); + when(scheduleRuleRepository.findActiveBySemesterIdWithDetails(SEMESTER_ID, null)) + .thenReturn(List.of(active)); + + assertThatThrownBy(() -> service.create(ruleRequest(2, 0, 0, lectureSlot()))) + .isInstanceOfSatisfying(ScheduleRuleConflictException.class, exception -> { + assertThat(exception.getMessage()).isEqualTo("Невозможно сохранить правило: слот занят"); + assertThat(exception.getConflictRule()).isNotNull(); + assertThat(exception.getConflictRule().id()).isEqualTo(201L); + assertThat(exception.getConflictFields()).containsExactly("teacher", "classroom", "group"); + }); + } + + @Test + void updateExcludesCurrentRuleFromExternalConflictCheck() { + ScheduleRule managed = persistedRule(RULE_ID, LifecycleEntity.STATUS_ACTIVE, "Очно"); + when(scheduleRuleRepository.findByIdForUpdate(RULE_ID)).thenReturn(Optional.of(managed)); + when(scheduleRuleRepository.findActiveBySemesterIdWithDetails(SEMESTER_ID, RULE_ID)) + .thenReturn(List.of(managed)); + ScheduleRuleSlotDto updatedSlot = slot( + ScheduleParity.BOTH, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Онлайн" + ); + + ScheduleRuleDto updated = service.update(RULE_ID, ruleRequest(2, 0, 0, updatedSlot)); + + assertThat(updated.id()).isEqualTo(RULE_ID); + assertThat(updated.slots()).singleElement().extracting(ScheduleRuleSlotDto::lessonFormat) + .isEqualTo("Онлайн"); + verify(scheduleRuleRepository).findActiveBySemesterIdWithDetails(SEMESTER_ID, RULE_ID); + } + + @Test + void rejectedUpdateDoesNotMutateManagedRule() { + ScheduleRule managed = persistedRule(RULE_ID, LifecycleEntity.STATUS_ACTIVE, "Очно"); + ScheduleRule externalConflict = persistedRule(201L, LifecycleEntity.STATUS_ACTIVE, "Онлайн"); + when(scheduleRuleRepository.findByIdForUpdate(RULE_ID)).thenReturn(Optional.of(managed)); + when(scheduleRuleRepository.findActiveBySemesterIdWithDetails(SEMESTER_ID, RULE_ID)) + .thenReturn(List.of(externalConflict)); + ScheduleRuleSlotDto changedSlot = slot( + ScheduleParity.BOTH, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Онлайн" + ); + + assertThatThrownBy(() -> service.update(RULE_ID, ruleRequest(2, 0, 0, changedSlot))) + .isInstanceOf(ScheduleRuleConflictException.class) + .hasMessage("Невозможно сохранить правило: слот занят"); + + assertThat(managed.getSlots()).singleElement().satisfies(slot -> + assertThat(slot.getLessonFormat()).isEqualTo("Очно")); + verify(scheduleRuleRepository, never()).saveAndFlush(managed); + } + + private ScheduleRuleDto ruleRequest(Integer lectureHours, + Integer laboratoryHours, + Integer practiceHours, + ScheduleRuleSlotDto... slots) { + return new ScheduleRuleDto( + null, + SUBJECT_ID, + null, + SEMESTER_ID, + null, + null, + lectureHours, + laboratoryHours, + practiceHours, + 1, + 1, + 1, + List.of(GROUP_ID), + null, + List.of(slots) + ); + } + + private ScheduleRuleSlotDto lectureSlot() { + return slot( + ScheduleParity.BOTH, TEACHER_ID, CLASSROOM_ID, + LECTURE_TYPE_ID, List.of(), "Очно" + ); + } + + private ScheduleRuleSlotDto laboratorySlot(Long... subgroupIds) { + return slot( + ScheduleParity.BOTH, + TEACHER_ID, + CLASSROOM_ID, + LABORATORY_TYPE_ID, + List.of(subgroupIds), + "Очно" + ); + } + + private ScheduleRuleSlotDto slot(ScheduleParity parity, + long teacherId, + long classroomId, + long lessonTypeId, + List subgroupIds, + String format) { + return new ScheduleRuleSlotDto( + null, + 1, + null, + parity, + TIME_SLOT_ID, + null, + null, + null, + null, + subgroupIds, + null, + teacherId, + null, + classroomId, + null, + lessonTypeId, + null, + format + ); + } + + private ScheduleRule persistedRule(long id, String status, String format) { + ScheduleRule rule = new ScheduleRule(); + rule.setId(id); + rule.setStatus(status); + rule.setSubject(subject); + rule.setSemester(semester); + rule.setLectureAcademicHours(2); + rule.setLaboratoryAcademicHours(0); + rule.setPracticeAcademicHours(0); + rule.setLectureStartWeek(1); + rule.setLaboratoryStartWeek(1); + rule.setPracticeStartWeek(1); + rule.setGroups(new LinkedHashSet<>(List.of(group))); + + ScheduleRuleSlot slot = new ScheduleRuleSlot(); + ReflectionTestUtils.setField(slot, "id", id * 10); + slot.setScheduleRule(rule); + slot.setDayOfWeek(1); + slot.setParity(ScheduleParity.BOTH); + slot.setTimeSlot(timeSlot); + slot.setTeacher(teacher); + slot.setClassroom(classroom); + slot.setLessonType(lectureType); + slot.setLessonFormat(format); + rule.setSlots(new LinkedHashSet<>(List.of(slot))); + return rule; + } + + private ScheduleRule assignGeneratedIds(ScheduleRule rule) { + if (rule.getId() == null) { + rule.setId(900L); + } + AtomicLong nextSlotId = new AtomicLong(1_000L); + rule.getSlots().stream() + .filter(slot -> slot.getId() == null) + .forEach(slot -> ReflectionTestUtils.setField(slot, "id", nextSlotId.getAndIncrement())); + return rule; + } + + private Subject subject() { + Subject subject = new Subject(); + subject.setId(SUBJECT_ID); + subject.setName("Тестовая дисциплина"); + subject.setDepartmentId(1L); + return subject; + } + + private Semester semester() { + AcademicYear year = new AcademicYear(); + year.setId(1L); + year.setTitle("2026-2027"); + year.setStartDate(LocalDate.of(2026, 9, 1)); + year.setEndDate(LocalDate.of(2027, 6, 30)); + + Semester semester = new Semester(); + semester.setId(SEMESTER_ID); + semester.setAcademicYear(year); + semester.setSemesterType(SemesterType.autumn); + semester.setStartDate(LocalDate.of(2026, 9, 1)); + semester.setEndDate(LocalDate.of(2027, 1, 31)); + return semester; + } + + private StudentGroup group() { + StudentGroup group = new StudentGroup(); + group.setId(GROUP_ID); + group.setName("Тестовая группа"); + return group; + } + + private TimeSlot timeSlot() { + TimeSlotScope scope = new TimeSlotScope(); + scope.setId(1L); + scope.setApplyMode("DEFAULT"); + TimeSlot slot = new TimeSlot(); + slot.setId(TIME_SLOT_ID); + slot.setOrderNumber(1); + slot.setStartTime(LocalTime.of(9, 0)); + slot.setEndTime(LocalTime.of(10, 30)); + slot.setDurationMinutes(90); + slot.setTimeSlotScope(scope); + return slot; + } + + private User user(long id, Role role, String name) { + User user = new User(); + user.setId(id); + user.setRole(role); + user.setFullName(name); + user.setJobTitle("Преподаватель"); + return user; + } + + private Classroom classroom(long id, String name) { + Classroom classroom = new Classroom(); + classroom.setId(id); + classroom.setName(name); + classroom.setIsAvailable(true); + return classroom; + } + + private LessonType lessonType(long id, String name) { + LessonType type = new LessonType(); + type.setId(id); + type.setLessonType(name); + return type; + } + + private Subgroup subgroup(long id, String name) { + Subgroup subgroup = new Subgroup(); + subgroup.setId(id); + subgroup.setName(name); + subgroup.setStudentGroup(group); + return subgroup; + } +} diff --git a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java new file mode 100644 index 0000000..12cfeae --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java @@ -0,0 +1,244 @@ +package com.magistr.app.service; + +import com.magistr.app.config.tenant.KubernetesTenantSecretUpdater; +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantContext; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.zaxxer.hikari.HikariDataSource; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; +import java.time.Duration; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@Testcontainers +class TenantLifecyclePostgreSqlIntegrationTest { + + private static final String DOMAIN = "alpha"; + private static final String OLD_DATABASE = "tenant_old"; + private static final String BAD_CHECKSUM_DATABASE = "tenant_bad_checksum"; + private static final String VALID_DATABASE = "tenant_valid"; + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + private TenantRoutingDataSource routingDataSource; + private TenantDatabaseMigrationService migrationService; + private KubernetesTenantSecretUpdater tenantSecretUpdater; + private TenantLifecycleService lifecycleService; + private RetiredTenantPoolService retiredPoolService; + private HikariDataSource oldPool; + private TenantConfig oldConfig; + + @BeforeEach + void setUp() throws Exception { + createDatabase(OLD_DATABASE); + createDatabase(BAD_CHECKSUM_DATABASE); + createDatabase(VALID_DATABASE); + + routingDataSource = new TenantRoutingDataSource(); + migrationService = new TenantDatabaseMigrationService(); + tenantSecretUpdater = mock(KubernetesTenantSecretUpdater.class); + retiredPoolService = new RetiredTenantPoolService(Duration.ofSeconds(2), Duration.ofMillis(25)); + lifecycleService = new TenantLifecycleService( + routingDataSource, + tenantSecretUpdater, + migrationService, + retiredPoolService + ); + + oldConfig = config("Старый tenant", jdbcUrl(OLD_DATABASE), POSTGRES.getPassword()); + migrateDatabase(oldConfig); + TenantConfig badChecksumConfig = config( + "Tenant с повреждённой историей", + jdbcUrl(BAD_CHECKSUM_DATABASE), + POSTGRES.getPassword() + ); + migrateDatabase(badChecksumConfig); + corruptFlywayChecksum(jdbcUrl(BAD_CHECKSUM_DATABASE)); + + oldPool = routingDataSource.prepareTenantDataSource(oldConfig); + assertThat(routingDataSource.swapTenant(oldConfig, oldPool)).isNull(); + assertOldState(); + } + + @AfterEach + void closePools() { + TenantContext.clear(); + if (routingDataSource != null) { + routingDataSource.getTenantDataSource(DOMAIN).ifPresent(this::closeIfHikari); + } + if (oldPool != null && !oldPool.isClosed()) { + oldPool.close(); + } + if (retiredPoolService != null) { + retiredPoolService.shutdown(); + } + } + + @Test + void preservesOldPoolForCredentialsFlywayAndPersistenceFailuresThenSwapsSuccessfully() throws Exception { + TenantConfig wrongCredentials = config( + "Неверные credentials", + jdbcUrl(OLD_DATABASE), + POSTGRES.getPassword() + "-wrong" + ); + + assertThatThrownBy(() -> lifecycleService.addOrUpdateTenant(wrongCredentials)) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось подключиться к базе данных тенанта"); + verify(tenantSecretUpdater, never()).updateTenantsConfig(any()); + assertOldState(); + + reset(tenantSecretUpdater); + TenantConfig badChecksum = config( + "Повреждённый Flyway", + jdbcUrl(BAD_CHECKSUM_DATABASE), + POSTGRES.getPassword() + ); + assertThatThrownBy(() -> lifecycleService.addOrUpdateTenant(badChecksum)) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось выполнить миграции базы данных тенанта"); + verify(tenantSecretUpdater, never()).updateTenantsConfig(any()); + assertOldState(); + + reset(tenantSecretUpdater); + when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(false, true); + TenantConfig validCandidate = config( + "Новый tenant", + jdbcUrl(VALID_DATABASE), + POSTGRES.getPassword() + ); + assertThatThrownBy(() -> lifecycleService.addOrUpdateTenant(validCandidate)) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось сохранить конфигурацию тенантов; прежняя конфигурация восстановлена"); + verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(any()); + assertOldState(); + + reset(tenantSecretUpdater); + when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true); + TenantConfig saved; + try (Connection inFlightOldConnection = oldPool.getConnection()) { + saved = lifecycleService.addOrUpdateTenant(validCandidate); + + assertThat(oldPool.isClosed()).isFalse(); + try (Statement statement = inFlightOldConnection.createStatement(); + ResultSet result = statement.executeQuery("SELECT current_database()")) { + assertThat(result.next()).isTrue(); + assertThat(result.getString(1)).isEqualTo(OLD_DATABASE); + } + } + + assertThat(saved.getDomain()).isEqualTo(DOMAIN); + assertThat(saved.getUrl()).isEqualTo(jdbcUrl(VALID_DATABASE)); + awaitPoolClosed(oldPool); + DataSource activePool = routingDataSource.getTenantDataSource(DOMAIN).orElseThrow(); + assertThat(activePool).isNotSameAs(oldPool); + assertThat(activePool).isInstanceOfSatisfying( + HikariDataSource.class, + pool -> assertThat(pool.isClosed()).isFalse() + ); + assertThat(currentDatabaseThroughRouter()).isEqualTo(VALID_DATABASE); + } + + private void awaitPoolClosed(HikariDataSource pool) { + long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(3); + while (!pool.isClosed() && System.nanoTime() < deadline) { + try { + Thread.sleep(25); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Ожидание закрытия старого tenant pool прервано", exception); + } + } + assertThat(pool.isClosed()).as("Старый tenant pool должен закрыться после drain").isTrue(); + } + + private void assertOldState() { + assertThat(routingDataSource.getTenantDataSource(DOMAIN)).containsSame(oldPool); + TenantConfig storedConfig = routingDataSource.snapshotTenantConfigs().get(DOMAIN); + assertThat(storedConfig).isNotNull(); + assertThat(storedConfig.getUrl()).isEqualTo(jdbcUrl(OLD_DATABASE)); + assertThat(storedConfig.getUsername()).isEqualTo(POSTGRES.getUsername()); + assertThat(oldPool.isClosed()).isFalse(); + assertThat(currentDatabaseThroughRouter()).isEqualTo(OLD_DATABASE); + } + + private String currentDatabaseThroughRouter() { + TenantContext.setCurrentTenant(DOMAIN); + try (Connection connection = routingDataSource.getConnection(); + Statement statement = connection.createStatement(); + ResultSet result = statement.executeQuery("SELECT current_database()")) { + assertThat(result.next()).isTrue(); + return result.getString(1); + } catch (Exception failure) { + throw new IllegalStateException("Старое tenant-подключение перестало работать", failure); + } finally { + TenantContext.clear(); + } + } + + private void createDatabase(String databaseName) throws Exception { + try (Connection connection = POSTGRES.createConnection(""); + Statement statement = connection.createStatement()) { + statement.execute("CREATE DATABASE " + databaseName); + } + } + + private void migrateDatabase(TenantConfig config) { + HikariDataSource dataSource = routingDataSource.prepareTenantDataSource(config); + try { + migrationService.migrate(dataSource); + } finally { + dataSource.close(); + } + } + + private void corruptFlywayChecksum(String url) throws Exception { + try (Connection connection = DriverManager.getConnection( + url, + POSTGRES.getUsername(), + POSTGRES.getPassword() + ); Statement statement = connection.createStatement()) { + int changed = statement.executeUpdate(""" + UPDATE flyway_schema_history + SET checksum = checksum + 1 + WHERE version = '4' + """); + assertThat(changed).isEqualTo(1); + } + } + + private TenantConfig config(String name, String url, String password) { + return new TenantConfig(name, DOMAIN, url, POSTGRES.getUsername(), password); + } + + private String jdbcUrl(String databaseName) { + return "jdbc:postgresql://" + POSTGRES.getHost() + ":" + + POSTGRES.getMappedPort(PostgreSQLContainer.POSTGRESQL_PORT) + "/" + databaseName; + } + + private void closeIfHikari(DataSource dataSource) { + if (dataSource instanceof HikariDataSource hikariDataSource && !hikariDataSource.isClosed()) { + hikariDataSource.close(); + } + } +} diff --git a/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java b/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java new file mode 100644 index 0000000..5b6e7f2 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java @@ -0,0 +1,323 @@ +package com.magistr.app.service; + +import com.magistr.app.config.tenant.KubernetesTenantSecretUpdater; +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.zaxxer.hikari.HikariDataSource; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InOrder; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class TenantLifecycleServiceTest { + + @Mock + private TenantRoutingDataSource routingDataSource; + @Mock + private KubernetesTenantSecretUpdater tenantSecretUpdater; + @Mock + private TenantDatabaseMigrationService migrationService; + @Mock + private RetiredTenantPoolService retiredPoolService; + @Mock + private HikariDataSource candidate; + @Mock + private HikariDataSource oldDataSource; + @Mock + private Connection candidateConnection; + + private TenantLifecycleService service; + private TenantConfig oldAlpha; + private TenantConfig beta; + private Map oldSnapshot; + + @BeforeEach + void setUp() throws Exception { + service = new TenantLifecycleService( + routingDataSource, + tenantSecretUpdater, + migrationService, + retiredPoolService + ); + oldAlpha = config("Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); + beta = config("Beta", "beta", "jdbc:beta", "beta-user", "beta-password"); + oldSnapshot = new LinkedHashMap<>(); + oldSnapshot.put("beta", beta); + oldSnapshot.put("alpha", oldAlpha); + + when(routingDataSource.snapshotTenantConfigs()).thenReturn(oldSnapshot); + when(routingDataSource.prepareTenantDataSource(any(TenantConfig.class))).thenReturn(candidate); + when(candidate.getConnection()).thenReturn(candidateConnection); + when(candidateConnection.isValid(5)).thenReturn(true); + when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true); + when(routingDataSource.swapTenant(any(TenantConfig.class), any())) + .thenReturn(new TenantRoutingDataSource.TenantState("alpha", oldAlpha, oldDataSource)); + } + + @Test + void appliesSuccessfulReplacementInSafeOrderAndClosesOnlyOldPool() throws Exception { + TenantConfig requested = config( + " Новый Alpha ", " ALPHA ", " jdbc:new-alpha ", "new-user", "new-password" + ); + + TenantConfig saved = service.addOrUpdateTenant(requested); + + assertConfig(saved, "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); + ArgumentCaptor preparedConfig = ArgumentCaptor.forClass(TenantConfig.class); + ArgumentCaptor> persistedConfigs = listCaptor(); + InOrder order = inOrder( + routingDataSource, + candidate, + candidateConnection, + migrationService, + tenantSecretUpdater, + retiredPoolService + ); + order.verify(routingDataSource).snapshotTenantConfigs(); + order.verify(routingDataSource).prepareTenantDataSource(preparedConfig.capture()); + order.verify(candidate).getConnection(); + order.verify(candidateConnection).isValid(5); + order.verify(candidateConnection).close(); + order.verify(migrationService).migrate(candidate); + order.verify(tenantSecretUpdater).updateTenantsConfig(persistedConfigs.capture()); + order.verify(routingDataSource).swapTenant(any(TenantConfig.class), any()); + order.verify(retiredPoolService).retire(oldDataSource); + + assertConfig(preparedConfig.getValue(), + "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); + assertThat(persistedConfigs.getValue()).extracting(TenantConfig::getDomain) + .containsExactly("alpha", "beta"); + assertConfig(persistedConfigs.getValue().get(0), + "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); + verify(candidate, never()).close(); + } + + @Test + void closesCandidateAndKeepsOldPoolWhenCredentialsAreWrong() throws Exception { + when(candidate.getConnection()).thenThrow(new SQLException("тестовая ошибка аутентификации")); + + assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось подключиться к базе данных тенанта"); + + verify(candidate).close(); + verify(migrationService, never()).migrate(any()); + verify(tenantSecretUpdater, never()).updateTenantsConfig(any()); + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(retiredPoolService, never()).retire(oldDataSource); + } + + @Test + void closesCandidateAndKeepsOldStateWhenFlywayFails() { + org.mockito.Mockito.doThrow(new IllegalStateException("тестовая ошибка Flyway")) + .when(migrationService).migrate(candidate); + + assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось выполнить миграции базы данных тенанта"); + + verify(candidate).close(); + verify(tenantSecretUpdater, never()).updateTenantsConfig(any()); + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(retiredPoolService, never()).retire(oldDataSource); + } + + @Test + void closesCandidateAndRestoresOldSnapshotWhenPersistenceReturnsFalse() { + when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(false, true); + + assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось сохранить конфигурацию тенантов; прежняя конфигурация восстановлена"); + + ArgumentCaptor> snapshots = listCaptor(); + verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(snapshots.capture()); + assertThat(snapshots.getAllValues().get(1)).extracting(TenantConfig::getDomain) + .containsExactly("alpha", "beta"); + assertConfig(snapshots.getAllValues().get(1).get(0), + "Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); + verify(candidate).close(); + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(retiredPoolService, never()).retire(oldDataSource); + } + + @Test + void restoresOldSnapshotWhenFirstPersistenceThrows() { + when(tenantSecretUpdater.updateTenantsConfig(any())) + .thenThrow(new IllegalStateException("неопределённый исход PATCH")) + .thenReturn(true); + + assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось сохранить конфигурацию тенантов; прежняя конфигурация восстановлена"); + + verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(any()); + verify(candidate).close(); + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(retiredPoolService, never()).retire(oldDataSource); + } + + @Test + void reportsDesynchronizationWhenPersistenceAndCompensationFail() { + when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(false, false); + + assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось сохранить конфигурацию тенантов; требуется проверить tenant Secret"); + + verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(any()); + verify(candidate).close(); + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(retiredPoolService, never()).retire(oldDataSource); + } + + @Test + void compensatesPersistedSnapshotWhenActivationFails() { + when(routingDataSource.swapTenant(any(), any())) + .thenThrow(new IllegalStateException("тестовый отказ активации")); + when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true, true); + + assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось активировать подключение тенанта; сохранённая конфигурация восстановлена"); + + ArgumentCaptor> snapshots = listCaptor(); + verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(snapshots.capture()); + assertThat(snapshots.getAllValues().get(0)).extracting(TenantConfig::getDomain) + .containsExactly("alpha", "beta"); + assertConfig(snapshots.getAllValues().get(0).get(0), + "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); + assertThat(snapshots.getAllValues().get(1)).extracting(TenantConfig::getDomain) + .containsExactly("alpha", "beta"); + assertConfig(snapshots.getAllValues().get(1).get(0), + "Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); + verify(candidate).close(); + verify(retiredPoolService, never()).retire(oldDataSource); + } + + @Test + void reportsSecretDesynchronizationWhenActivationAndCompensationFail() { + when(routingDataSource.swapTenant(any(), any())) + .thenThrow(new IllegalStateException("тестовый отказ активации")); + when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true, false); + + assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось активировать подключение тенанта; требуется проверить tenant Secret"); + + verify(candidate).close(); + verify(retiredPoolService, never()).retire(oldDataSource); + } + + @Test + void removalPersistsDesiredStateBeforeAtomicRemovalAndClosesRemovedPool() { + when(routingDataSource.removeTenantAtomically("alpha")) + .thenReturn(new TenantRoutingDataSource.TenantState("alpha", oldAlpha, oldDataSource)); + + TenantConfig removed = service.removeTenant(" ALPHA "); + + assertConfig(removed, "Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); + ArgumentCaptor> desired = listCaptor(); + InOrder order = inOrder(routingDataSource, tenantSecretUpdater, retiredPoolService); + order.verify(routingDataSource).snapshotTenantConfigs(); + order.verify(tenantSecretUpdater).updateTenantsConfig(desired.capture()); + order.verify(routingDataSource).removeTenantAtomically("alpha"); + order.verify(retiredPoolService).retire(oldDataSource); + assertThat(desired.getValue()).extracting(TenantConfig::getDomain).containsExactly("beta"); + } + + @Test + void removalFailureRestoresOldPersistedSnapshotAndKeepsPoolOpen() { + when(routingDataSource.removeTenantAtomically("alpha")) + .thenThrow(new IllegalStateException("тестовый отказ удаления")); + when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true, true); + + assertThatThrownBy(() -> service.removeTenant("alpha")) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось отключить тенанта; сохранённая конфигурация восстановлена"); + + ArgumentCaptor> snapshots = listCaptor(); + verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(snapshots.capture()); + assertThat(snapshots.getAllValues().get(0)).extracting(TenantConfig::getDomain) + .containsExactly("beta"); + assertThat(snapshots.getAllValues().get(1)).extracting(TenantConfig::getDomain) + .containsExactly("alpha", "beta"); + verify(retiredPoolService, never()).retire(oldDataSource); + } + + @Test + void acceptsDnsLabelBoundariesAndRejectsTooLongOrDottedDomain() { + String maxLengthDomain = "a".repeat(63); + + TenantConfig shortest = service.addOrUpdateTenant(config( + "Короткий", " A ", "jdbc:short", "user", "password" + )); + TenantConfig longest = service.addOrUpdateTenant(config( + "Длинный", maxLengthDomain, "jdbc:long", "user", "password" + )); + + assertThat(shortest.getDomain()).isEqualTo("a"); + assertThat(longest.getDomain()).isEqualTo(maxLengthDomain); + assertThatThrownBy(() -> service.addOrUpdateTenant(config( + "Слишком длинный", "a".repeat(64), "jdbc:too-long", "user", "password" + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Домен содержит недопустимые символы"); + assertThatThrownBy(() -> service.addOrUpdateTenant(config( + "С точкой", "alpha.example", "jdbc:dotted", "user", "password" + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Домен содержит недопустимые символы"); + } + + private TenantConfig newAlpha() { + return config("Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); + } + + private TenantConfig config(String name, + String domain, + String url, + String username, + String password) { + return new TenantConfig(name, domain, url, username, password); + } + + private void assertConfig(TenantConfig actual, + String name, + String domain, + String url, + String username, + String password) { + assertThat(actual.getName()).isEqualTo(name); + assertThat(actual.getDomain()).isEqualTo(domain); + assertThat(actual.getUrl()).isEqualTo(url); + assertThat(actual.getUsername()).isEqualTo(username); + assertThat(actual.getPassword()).isEqualTo(password); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + private ArgumentCaptor> listCaptor() { + return ArgumentCaptor.forClass((Class) List.class); + } +} diff --git a/docs/API.md b/docs/API.md index fb4570d..b2750fa 100644 --- a/docs/API.md +++ b/docs/API.md @@ -93,6 +93,9 @@ Redirect по ролям: ``` Refresh-токен ротируется при каждом успешном обновлении, а старый refresh-токен отзывается. +Один refresh-токен можно успешно использовать только один раз, в том числе при параллельных +запросах: первый запрос получает новую пару токенов, остальные получают `401`, а их cookie +очищается. ### `POST /api/auth/logout` @@ -426,6 +429,14 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 } ``` +`PUT /api/admin/academic-calendars/{id}/grid` выполняет атомарную полную замену. До +удаления прежних строк backend проверяет весь список: он должен быть непустым и не +содержать `null`, курс должен входить в `1..courseCount`, дата — в учебный год, +`dayOfWeek` — совпадать с ISO-днём даты, а `weekNumber` — с номером семидневного периода +от начала учебного года. Ключ `(courseNumber, date)` не должен повторяться, каждый +`activityTypeId` или `activityCode` должен существовать. При любом `400` старая сетка +остаётся без изменений; `calendarId` из строки не переопределяет ID в URL. + **Привязка дисциплин к графику:** ```json [ @@ -476,15 +487,32 @@ CRUD доступен по: | `GET` | `/api/admin/schedule-rules/{id}` | Одно правило | | `POST` | `/api/admin/schedule-rules` | Создать правило | | `PUT` | `/api/admin/schedule-rules/{id}` | Обновить правило | -| `DELETE` | `/api/admin/schedule-rules/{id}` | Удалить правило | +| `DELETE` | `/api/admin/schedule-rules/{id}` | Архивировать правило | `timeSlotId` должен ссылаться на базовый слот (`scopeApplyMode = DEFAULT`). Субботняя и ручные сетки не выбираются в правиле напрямую. `subgroupIds` можно передавать только для лабораторного слота. Каждая подгруппа должна относиться к одной из групп правила. Если лабораторная проводится у нескольких групп одновременно, в одном слоте можно передать разные подгруппы этих групп, например `[10, 22]`. Для совместимости одиночный `subgroupId` тоже принимается, но новый формат — `subgroupIds`. Для лекций и практик оба поля должны быть пустыми, иначе API вернёт ошибку валидации. В одном слоте нельзя выбрать больше одной подгруппы одной и той же группы. -Часы и недели начала задаются отдельно для лекций, лабораторных и практик. Если для типа занятий указан ненулевой лимит часов, в правиле должен быть хотя бы один слот этого типа; если слот типа есть, его лимит часов должен быть больше нуля. +Часы и недели начала задаются отдельно для лекций, лабораторных и практик. Каждый лимит +часов обязателен, неотрицателен и кратен двум; ноль разрешён для неиспользуемого типа, но +суммарно хотя бы один тип должен иметь положительный лимит. Если лимит типа ненулевой, в +правиле должен быть хотя бы один слот этого типа; слот типа не принимается при нулевом +лимите. Вложенные идентификаторы, которых нет в БД, считаются ошибкой payload и дают `400`. -`parity` принимает только `BOTH`, `ODD` или `EVEN`. При создании и обновлении правила backend проверяет занятость в рамках семестра: конфликтом считается пересечение дня, базового временного слота, чётности и активных недель слотов, если совпадает преподаватель, аудитория или учебная группа. Активные недели рассчитываются по лимиту часов типа занятия, неделе начала, чётности и порядку слотов правила, поэтому правило, которое фактически идёт с 1 по 3 неделю, не блокирует тот же слот с 4 недели. Для лабораторных слотов подгруппы учитываются отдельно: разные подгруппы одной группы могут занимать один слот, но слот для всей группы конфликтует с любой её подгруппой. При конфликте API возвращает `409 Conflict`: +`teacherId` должен ссылаться на активного пользователя с ролью `TEACHER`, а +`lessonFormat` принимает только `Очно` или `Онлайн`. `parity` принимает только `BOTH`, +`ODD` или `EVEN`. + +До сохранения backend попарно проверяет все слоты нового payload: точные дубли и +пересечения преподавателя, аудитории или аудитории обучающихся отклоняются. `ODD` и `EVEN` +не пересекаются; `BOTH` пересекается с обеими чётностями. Затем выполняется та же проверка +с активными правилами семестра. Активные недели рассчитываются по лимиту часов типа +занятия, неделе начала, чётности и порядку слотов правила, поэтому правило, которое +фактически идёт с 1 по 3 неделю, не блокирует тот же слот с 4 недели. Для лабораторных +слотов подгруппы учитываются отдельно: разные подгруппы одной группы могут занимать один +слот, но слот для всей группы конфликтует с любой её подгруппой. Создание правил одного +семестра сериализуется блокировкой строки семестра в PostgreSQL. Конфликт с уже сохранённым +правилом возвращает `409 Conflict`: ```json { @@ -501,7 +529,19 @@ CRUD доступен по: } ``` -`conflictFields` содержит технические причины пересечения: `teacher`, `classroom` и/или `group`. `conflictReasons` содержит те же причины в русских подписях для интерфейса. +`conflictFields` содержит технические причины пересечения: `teacher`, `classroom` и/или +`group`. Для точного дубля используется `slot`. При конфликте внутри нового payload +`conflictRule` отсутствует, потому что конфликтующей сохранённой записи ещё нет: + +```json +{ + "message": "Невозможно сохранить правило: слоты внутри правила конфликтуют", + "conflictFields": ["teacher", "group"], + "conflictReasons": ["Преподаватель", "Группа"] +} +``` + +`conflictReasons` содержит те же причины в русских подписях для интерфейса. ### `GET /api/lesson-types` @@ -532,7 +572,17 @@ CRUD доступен по: | `timeSlotId` | Временной слот | | `parity` | `BOTH`, `ODD`, `EVEN` | -Если указан только `teacherId` без `groupId` и `departmentId`, поиск строит расписание преподавателя напрямую и не обходит все группы. Широкий поиск без `groupId` и `departmentId` разрешён только до 50 активных групп; при большем количестве групп API вернёт `400` с просьбой уточнить группу или кафедру. +Если указан только `teacherId` без `groupId` и `departmentId`, базовое расписание +преподавателя строится напрямую. Затем поиск учитывает точечные изменения, где преподаватель +назначен через `newTeacherId`: для каждой уникальной даты такой замены один раз строится +базовый день, из него добавляются только указанные `baseRuleSlotId`, после чего применяются +все overrides и выполняется окончательный фильтр преподавателя. Поэтому новый преподаватель +видит назначенную замену, а исходный больше её не видит. Если релевантных замен нет, обход +всех групп не выполняется. + +Широкий пользовательский поиск без `groupId`, `departmentId` и teacher-only режима +разрешён только до 50 активных групп; при большем количестве групп API вернёт `400` с +просьбой уточнить группу или кафедру. Пример: @@ -562,7 +612,24 @@ GET /api/schedule/search?classroomId=1&startDate=2026-05-20&endDate=2026-05-27 } ``` -`action=CANCEL` отменяет конкретную пару. `MOVE` и `REPLACE` могут менять аудиторию, преподавателя, формат и временной слот. +Правила payload: + +- `CANCEL` отменяет конкретную пару; поля `newTimeSlotId`, `newClassroomId`, + `newTeacherId` и `newLessonFormat` должны отсутствовать; +- `MOVE` требует новый временной слот или аудиторию; преподавателя и формат можно изменить + в том же запросе; +- `REPLACE` требует нового преподавателя, аудиторию или формат; временной слот можно + изменить в том же запросе; +- формат принимает только `Очно` или `Онлайн`; +- `MOVE` и `REPLACE` должны фактически менять основные параметры действия. Другой ID + временного слота с тем же интервалом не считается переносом. + +До сохранения backend строит базовую пару на `lessonDate` по тем же правилам, что и обычное +расписание: семестр, календарный график, чётность, активность сущностей и остаток часов. +Если пара не формируется или нарушена матрица действия, API возвращает `400` с русским +сообщением. Если результирующее время пересекается с занятым преподавателем, аудиторией, +группой или той же подгруппой, API возвращает `409 Conflict`; соседние интервалы и разные +подгруппы одной группы не конфликтуют. ## Загруженность @@ -1059,7 +1126,12 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 **Логика:** 1. Создаёт HikariCP пул для нового тенанта 2. Запускает Flyway миграции на его БД -3. Обновляет Kubernetes ConfigMap +3. Обновляет внешний Kubernetes Secret `tenants-secret` + +Backend соединяется с Kubernetes API только через проверенный service-account CA и +hostname verification. Если безопасно сохранить tenant-конфигурацию не удалось, операция +не возвращается как успешная. Значения credentials никогда не включаются в ответ или лог +Kubernetes updater. ### `DELETE /api/database/tenants/{domain}` diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index ce6e9b4..03dd79c 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -82,7 +82,7 @@ sequenceDiagram | `TenantDataSourceConfig` | Загружает конфигурацию тенантов из JSON-файла, создаёт HikariCP пулы | | `TenantWebMvcConfig` | Регистрирует `TenantInterceptor` и `AuthorizationInterceptor` в MVC-слое | | `TenantConfigWatcher` | Периодически (каждые 30 сек) перечитывает `tenants.json`, синхронизирует тенантов | -| `ConfigMapUpdater` | Обновляет Kubernetes ConfigMap при добавлении/удалении тенанта через API | +| `KubernetesTenantSecretUpdater` | Обновляет Kubernetes Secret с tenant-конфигурацией через API, проверяя TLS по service-account CA | | `TenantConfig` | POJO с параметрами тенанта: `name`, `domain`, `url`, `username`, `password` | ### Определение тенанта @@ -101,7 +101,10 @@ sequenceDiagram Список тенантов хранится в JSON-файле: - **Локально:** `backend/tenants.json` (не коммитится; шаблон — `backend/tenants.example.json`) -- **Продакшн:** Kubernetes ConfigMap `tenants-config`, монтируется в `/config/tenants.json` +- **Продакшн:** внешний Kubernetes Secret `tenants-secret`, ключ `tenants.json` монтируется в `/config/tenants.json` + +`tenants-secret` не создаётся отслеживаемыми production-манифестами. Его подготавливает +оператор через secret manager по [`SECURITY_RUNBOOK.md`](SECURITY_RUNBOOK.md). Формат: ```json @@ -118,9 +121,14 @@ sequenceDiagram ### Жизненный цикл тенанта -1. **Добавление через API:** `POST /api/database/tenants` → создаёт HikariCP пул → запускает Flyway миграции → обновляет ConfigMap -2. **Синхронизация подов:** `TenantConfigWatcher` каждые 30 сек проверяет `tenants.json` → добавляет новые / удаляет отсутствующие тенанты -3. **Удаление:** `DELETE /api/database/tenants/{domain}` → закрывает пул → обновляет ConfigMap +1. **Добавление через API:** `POST /api/database/tenants` → создаёт HikariCP пул → запускает Flyway миграции → обновляет `tenants-secret` +2. **Синхронизация подов:** `TenantConfigWatcher` каждые 30 сек проверяет смонтированный `tenants.json` → добавляет новые / удаляет отсутствующие тенанты +3. **Удаление:** `DELETE /api/database/tenants/{domain}` → закрывает пул → обновляет `tenants-secret` + +Для обращения к Kubernetes API backend загружает +`/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`, использует стандартную PKIX-проверку +цепочки и обязательную проверку hostname. Trust-all fallback отсутствует: ошибка CA или TLS +завершает персистенцию безопасным отказом. `TenantConfigWatcher` сравнивает содержимое `tenants.json` по SHA-256, а не по `String.hashCode()`, чтобы изменение ConfigMap не пропускалось из-за 32-битной коллизии. @@ -134,6 +142,47 @@ sequenceDiagram --- +## Транзакционные изменения расписания + +`ScheduleRuleAdminController` является тонким HTTP-адаптером. Чтение, создание, изменение +и архивация правил выполняются через `ScheduleRuleService`; публичные write-методы сервиса +образуют транзакционные границы, поэтому ошибки валидации и конфликты выходят за Spring +proxy и приводят к rollback. + +Создание правила до остальных запросов к БД захватывает `PESSIMISTIC_WRITE` на строке +целевого семестра. Update сначала блокирует строку правила, затем старый и новый семестры в +порядке ID; архивация блокирует правило и его семестр. После блокировок сервис заново +проверяет слоты payload и активные правила семестра, поэтому конкурентные запросы разных +pod не сохраняют два конфликтующих правила после проверки одного снимка. + +`AcademicCalendarController` делегирует полную замену дневной сетки +`AcademicCalendarGridService`. Публичный `replaceGrid()` проходит через транзакционный +Spring proxy: весь payload и все activity types проверяются до bulk delete, затем выполняются +`delete → flush → saveAll → flush`. Исключение не перехватывается внутри сервиса и вызывает +rollback. Инвалидация кэша зарегистрирована через transaction synchronization и выполняется +только после успешного commit. + +`ScheduleOverrideController` является HTTP-адаптером, а create/update/delete выполняет +`ScheduleOverrideService` через вызываемые Spring proxy-методы с `@Transactional`. +Сервис строит базовый день через `ScheduleQueryService`, накладывает сохранённые overrides и +кандидат общей функцией и только затем проверяет результирующие интервалы и ресурсы. + +До чтения снимка даты сервис захватывает `pg_advisory_xact_lock` с отдельным namespace и +точным `LocalDate.toEpochDay()`. Блокировка живёт до commit/rollback, работает между pod и +изолирована по tenant-БД. При `PUT` и `DELETE` дополнительно блокируется ID override; +при смене даты старая и новая даты захватываются в стабильном порядке. После блокировок +строка перечитывается с `PESSIMISTIC_WRITE`, поэтому параллельное изменение не приводит к +lost update или проверке устаревшего снимка. + +Teacher-only чтение строит базовое расписание напрямую через +`ScheduleGeneratorService.buildScheduleForTeacher()`. `ScheduleQueryService` дополнительно +находит overrides с `newTeacher`, группирует их по дате, один раз строит базовый день каждой +релевантной даты и добавляет только целевые `baseRuleSlotId`. Все overrides применяются до +финального teacher-фильтра и дедупликации; без релевантных замен полный обход групп не +выполняется. + +--- + ## Аутентификация Система использует access JWT и отзывные refresh-токены без включения полноценного Spring Security flow: @@ -145,6 +194,23 @@ sequenceDiagram 5. При истечении access JWT клиент вызывает `POST /api/auth/refresh`; refresh-токен ротируется, старый хэш отзывается. 6. `POST /api/auth/logout` отзывает текущий refresh-токен и очищает cookie. +Ротация refresh-токена имеет single-use семантику. `RefreshTokenService.rotate()` выполняется +в транзакции, а `AuthRefreshTokenRepository` захватывает исходную строку через +`PESSIMISTIC_WRITE`. Поэтому два одновременных запроса с одним cookie сериализуются: +только первый создаёт следующий refresh-токен, второй видит уже отозванную строку и +завершается без выпуска новой сессии. + Access JWT содержит claim'ы `tenant`, `userId`, `username`, `role`, `departmentId`, `iat`, `exp`, `jti`. `AuthorizationInterceptor` проверяет подпись, срок действия и совпадение `tenant` с `TenantContext`, затем применяет `@RequireRoles`. Это означает, что UI-роль в `localStorage` остаётся только удобством: backend возвращает `401`, если токен отсутствует/некорректен, и `403`, если роли недостаточно. +`AuthContext` существует только в границах одного servlet-запроса. Интерцептор очищает +`ThreadLocal` до любых ранних выходов, устанавливает пользователя только после успешной +проверки роли и повторно очищает контекст в `afterCompletion`. Поэтому отказ с `401`/`403` +или публичный endpoint не может получить пользователя от предыдущего запроса того же +потока контейнера. + `TenantInterceptor` по-прежнему отвечает за выбор БД тенанта по домену. Проверка авторизации выполняется отдельным интерцептором после tenant-resolution, поэтому токен, выданный на одном домене, не принимается на другом tenant-домене. + +JWT-секрет не имеет встроенного значения и обязателен во всех окружениях. При профиле +`prod` или `production` startup-проверка дополнительно отклоняет известные legacy/placeholder +значения и требует `JWT_REFRESH_COOKIE_SECURE=true`. Production deployment явно включает +профиль `production` и получает `JWT_SECRET` только через `secretKeyRef`. diff --git a/docs/BUSINESS_LOGIC.md b/docs/BUSINESS_LOGIC.md index b9bcb54..9130f65 100644 --- a/docs/BUSINESS_LOGIC.md +++ b/docs/BUSINESS_LOGIC.md @@ -135,6 +135,13 @@ Bearer-токен проверяется на backend. Frontend-скрытие | `schedule_rule_slot_subgroups` | Подгруппы лабораторного слота | | `schedule_overrides` | Точечные переносы, отмены и замены конкретных сгенерированных пар | +Полная замена `academic_calendar_days` выполняется через транзакционный +`AcademicCalendarGridService`. Сервис сначала проверяет и строит весь новый набор, включая +уникальность `(course, date)`, соответствие даты учебному году, номеру недели и ISO-дню, +и разрешает все коды активностей. Только после этого прежняя сетка удаляется и новый набор +записывается одной транзакцией. Ошибка любой строки сохраняет прежнюю сетку целиком, а кэш +расписания очищается только после commit. + Генератор `ScheduleGeneratorService` рендерит расписание по запросу: 1. Определяет семестр для каждой даты диапазона. 2. Вычисляет номер недели и чётность. @@ -152,7 +159,13 @@ Bearer-токен проверяется на backend. Frontend-скрытие В генерацию попадают только активные на дату правила, дисциплины, группы, преподаватели и аудитории. Для будущих дат аудитория с `is_available=false` не выводится в расписании, но прошлые занятия остаются доступными для просмотра. -Расширенный поиск расписания ограничивает широкие запросы: если не указаны `groupId` и `departmentId`, сервис не будет обходить больше 50 активных групп и вернёт ошибку валидации. Запросы по одному `teacherId` без группы или кафедры строятся через генерацию расписания преподавателя, чтобы не выполнять полный перебор групп. +Расширенный поиск расписания ограничивает широкие запросы: если не указаны `groupId`, +`departmentId` и teacher-only режим, сервис не будет обходить больше 50 активных групп и +вернёт ошибку валидации. Запросы по одному `teacherId` сначала строятся через генерацию +базового расписания преподавателя. Для overrides с совпадающим `newTeacher` сервис один раз +на каждую релевантную дату достраивает базовый день, выбирает только целевые слоты, применяет +единый снимок изменений и затем фильтрует итогового преподавателя. При отсутствии таких +замен полный список групп не загружается. Лабораторные работы могут делиться на подгруппы через `schedule_rule_slot_subgroups`. Если подгруппы выбраны, занятие выводится только для родительских групп этих подгрупп, а лимит лабораторных часов списывается отдельно по каждой подгруппе. Если лабораторная проводится у нескольких групп одновременно, один слот может содержать разные подгруппы разных групп. Лекции и практики не делятся на подгруппы. @@ -178,26 +191,47 @@ Bearer-токен проверяется на backend. Frontend-скрытие ### Валидация правил расписания -- **Правило:** обязательны дисциплина, семестр, хотя бы один положительный лимит часов по типу занятий, положительные недели начала и хотя бы одна группа. +- **Правило:** обязательны дисциплина, семестр, положительные недели начала и хотя бы одна группа; каждый лимит часов неотрицателен и чётен, а сумма лимитов положительна. Ноль разрешён для неиспользуемого типа занятия. - **Покрытие типов:** если для лекций, лабораторных или практик указан лимит часов, должен быть хотя бы один слот этого типа; слот типа не сохраняется с нулевым лимитом часов. - **Слот:** день недели должен быть от 1 до 7, чётность недели обязательна и принимает только `BOTH`, `ODD` или `EVEN`. -- **Связанные сущности:** базовый временной слот, преподаватель, аудитория и тип занятия должны существовать в БД. +- **Связанные сущности:** базовый временной слот, преподаватель, аудитория и тип занятия должны существовать в БД; преподавателем может быть только активный пользователь с ролью `TEACHER`. - **Подгруппы:** `subgroupIds` разрешены только для лабораторных слотов, должны относиться к группам правила, и в одном слоте можно выбрать не больше одной подгруппы каждой группы. -- **Формат:** `lessonFormat` обязателен и хранится в слоте правила. +- **Формат:** `lessonFormat` обязателен и принимает только `Очно` или `Онлайн`. - **Жизненный цикл:** архивные преподаватели, аудитории, группы и дисциплины не принимаются в новых правилах. - **Правило расписания:** `status=ARCHIVED` или дата вне `valid_from` / `valid_to` исключают правило из генерации. - **Доступность аудитории:** `is_available=false` запрещает новые назначения, но не удаляет историю. -- **Конфликты слотов:** при создании и обновлении правил проверяются активные правила того же семестра. Конфликт возникает при пересечении дня, базового временного слота, чётности (`BOTH` пересекается с любой чётностью) и активных недель слота, если совпадает преподаватель, аудитория или учебная группа. Активные недели считаются из лимита часов типа занятия, недели начала, чётности и порядка слотов внутри правила; например, занятие на 1-3 неделях не конфликтует с тем же ресурсом с 4 недели. Для лабораторных занятий разные подгруппы одной группы могут идти параллельно, но занятие для всей группы конфликтует с любой её подгруппой. Backend возвращает `409 Conflict` с ранее созданным `conflictRule`, чтобы frontend мог предложить перенос этого правила. +- **Конфликты слотов:** сначала попарно проверяются слоты самого нового payload, включая точные дубли, затем — активные правила того же семестра. Конфликт возникает при пересечении дня, базового временного слота, чётности (`BOTH` пересекается с любой чётностью) и активных недель слота, если совпадает преподаватель, аудитория или учебная группа. `ODD` и `EVEN` между собой не конфликтуют. Активные недели считаются из лимита часов типа занятия, недели начала, чётности и порядка слотов внутри правила; например, занятие на 1-3 неделях не конфликтует с тем же ресурсом с 4 недели. Для лабораторных занятий разные подгруппы одной группы могут идти параллельно, но занятие для всей группы конфликтует с любой её подгруппой. Backend возвращает `409 Conflict`; `conflictRule` присутствует только для конфликта с сохранённым правилом, а внутренний конфликт описывается полями и русскими причинами без искусственной записи. +- **Конкурентная запись:** публичные методы `ScheduleRuleService` являются транзакционными. Создание сначала блокирует строку семестра, а update блокирует правило и старый/новый семестры в стабильном порядке, поэтому два backend-pod не могут одновременно пройти проверку одного семестра по устаревшему снимку. ### Точечные изменения расписания Учебный отдел может создать изменение конкретной пары: - `CANCEL` — отменить пару; -- `MOVE` — перенести пару на другой временной слот или в другую аудиторию; +- `MOVE` — перенести пару на другой фактический интервал или в другую аудиторию; - `REPLACE` — заменить преподавателя, аудиторию или формат. -Изменения не переписывают базовое правило, а накладываются поверх сгенерированного расписания на конкретную дату. +`CANCEL` не принимает новые ресурсы. Для `MOVE` обязателен новый временной слот или +аудитория, для `REPLACE` — преподаватель, аудитория или формат. Дополнительные изменения +можно объединять в одном payload, но основное действие должно фактически менять свою +часть пары. Формат ограничен значениями `Очно` и `Онлайн`. + +Изменения не переписывают базовое правило, а накладываются поверх сгенерированного +расписания на конкретную дату. Перед записью `ScheduleOverrideService`: + +1. захватывает transaction advisory lock PostgreSQL для tenant-БД и даты; +2. строит базовый день для всех групп без интерактивного лимита широкого поиска; +3. доказывает существование исходной пары с учётом семестра, календарного графика, + чётности, недели начала, лимита часов и lifecycle; +4. применяет сохранённые overrides и кандидат общей логикой `ScheduleQueryService`; +5. проверяет полуоткрытые временные интервалы `[start, end)` и итоговые ресурсы; +6. сохраняет изменение только при отсутствии конфликта. + +Совпадение преподавателя или аудитории в пересекающееся время всегда является конфликтом. +Для общей учебной группы занятие целой группы конфликтует с любой её подгруппой; разные +подгруппы одной группы могут идти параллельно при свободных преподавателях и аудиториях. +Конфликт возвращается как `409 Conflict` с русским сообщением. Блокировка PostgreSQL общая +для backend-pod, поэтому два конкурентных изменения одной даты проверяются последовательно. --- diff --git a/docs/DATABASE.md b/docs/DATABASE.md index 146d48d..56421de 100644 --- a/docs/DATABASE.md +++ b/docs/DATABASE.md @@ -709,6 +709,10 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня `ScheduleRule` использует собственные поля жизненного цикла `status`, `valid_from` и `valid_to`: архивированное правило или правило вне периода действия не участвует в генерации расписания. В отличие от справочников на `LifecycleEntity`, таблица не содержит `active_from`/`active_to`, поэтому состояние правила проверяется по `valid_*`. +Миграция V4 требует, чтобы лимиты лекций, лабораторных и практик были кратны двум. +Неотрицательность каждого лимита и положительная сумма уже закреплены ограничениями V1; +нули допустимы только как лимиты неиспользуемых типов занятия. + #### `schedule_rule_groups` — Группы правила | Колонка | Тип | Описание | |---------|-----|----------| @@ -734,6 +738,11 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `locked_at` | TIMESTAMP | Когда выполнено закрепление | | `lock_comment` | TEXT | Комментарий к закреплению | +V4 добавляет `uq_schedule_rule_slots_exact_payload`: в одном правиле нельзя повторить +одинаковые день, чётность, базовый временной слот, преподавателя, аудиторию, тип и формат +занятия. Более широкие ресурсные пересечения и семантика подгрупп проверяются сервисом, +поскольку зависят от нескольких таблиц и фактических активных недель. + #### `schedule_rule_slot_subgroups` — Подгруппы лабораторного слота | Колонка | Тип | Описание | |---------|-----|----------| @@ -757,7 +766,16 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `created_by` | BIGINT FK → users | Автор изменения | | `created_at` | TIMESTAMP | Дата создания | -Ограничение `uq_schedule_overrides_slot_date` не позволяет создать две разные правки для одной и той же пары. +Ограничение `uq_schedule_overrides_slot_date` не позволяет создать две разные правки для +одной и той же пары. Миграция V3 добавляет структурные инварианты: + +- `CANCEL` не содержит новых ресурсов; +- `MOVE` содержит новый временной слот или аудиторию; +- `REPLACE` содержит нового преподавателя, аудиторию или формат; +- `new_lesson_format` равен `Очно`, `Онлайн` либо `NULL`. + +Фактическое существование пары, реальность изменения и ресурсные конфликты зависят от +календаря конкретной даты и проверяются транзакционным сервисом, а не SQL CHECK. --- @@ -771,23 +789,30 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня 4. Flyway запускается **программно** при первом обращении к БД тенанта (`TenantConfigWatcher.initDatabaseForTenant()`) 5. Настройка `baselineOnMigrate=true` — если в БД уже есть данные, Flyway начнёт с baseline -> Текущая правка `V1__init.sql` является осознанным исключением по прямой просьбе пользователя: файл обновлён как новая базовая схема, а применение предполагает полный сброс tenant-БД без переноса старых Flyway checksum. - ### Текущие миграции | Файл | Описание | |------|----------| | `V1__init.sql` | Инициализация: справочники, роли, refresh-сессии JWT, lifecycle-поля, история кафедр преподавателей, заявки кафедр на создание преподавателей, комментарии дисциплин, календарные учебные графики, привязки дисциплин к графикам по семестрам, динамическое расписание, версии/закрепления правил, точечные изменения расписания, тестовые правила, триггеры, комментарии | +| `V2__subgroups_active_unique_name.sql` | Уникальность имени среди активных подгрупп одной группы | +| `V3__schedule_override_invariants.sql` | Матрица payload и допустимый формат точечных изменений расписания | +| `V4__schedule_rule_even_hours.sql` | Чётность лимитов академических часов и уникальность точного payload слота правила | ### Накатывание на существующих тенантов -Для применения новой базовой схемы к уже существующим тенантам нужен полный сброс БД. Перезапуск backend без сброса не изменит уже применённую `V1__init.sql`. +V2–V4 накатываются на существующие tenant-БД без изменения контрольных сумм V1–V3. +Перед добавлением ограничений V3 считает нарушения `CANCEL`, `MOVE`, `REPLACE` и формата. +Если найдены legacy-строки, миграция полностью откатывается и сообщает только количества +нарушений. Оператор должен исправить бизнес-данные tenant-БД и повторить миграцию; +автоматическое удаление или переписывание overrides не выполняется. + +Перед ограничениями V4 отдельно считаются нечётные лимиты лекций, лабораторных и практик, +а также группы точных дублей слотов. Любое нарушение останавливает V4 с русским сообщением; +ограничения не остаются частично применёнными и legacy-данные автоматически не меняются. ```bash -# Kubernetes -kubectl rollout restart deployment backend -n magistr - -# Docker Compose (локально) +# После исправления legacy-данных перезапустите backend, +# чтобы TenantConfigWatcher повторил Flyway migrate для tenant-БД. docker compose restart backend ``` diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index e3a3a74..7477086 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -257,7 +257,7 @@ com.magistr.app/ │ ├── TenantDataSourceConfig.java # Конфигурация DataSource/JPA │ ├── TenantWebMvcConfig.java # Регистрация MVC-интерцепторов │ ├── TenantConfigWatcher.java # Периодическая синхронизация -│ └── ConfigMapUpdater.java # Обновление K8s ConfigMap +│ └── KubernetesTenantSecretUpdater.java # Обновление tenant Secret с проверкой TLS ├── controller/ # REST-контроллеры │ ├── AuthController.java │ ├── GlobalExceptionHandler.java diff --git a/docs/INFRASTRUCTURE.md b/docs/INFRASTRUCTURE.md index 0a23cea..795eb45 100644 --- a/docs/INFRASTRUCTURE.md +++ b/docs/INFRASTRUCTURE.md @@ -34,6 +34,9 @@ JWT_REFRESH_TOKEN_TTL=7d `POSTGRES_PASSWORD` обязателен для `docker compose up`: пароль не хранится в `compose.yaml`. `JWT_SECRET` должен быть случайным секретом длиной минимум 32 байта. В продакшене секреты задаются через Kubernetes Secret, а не через коммитимые файлы. +Встроенного JWT fallback в приложении нет. Отсутствующее, короткое или шаблонное значение +останавливает запуск; профиль `production` также требует Secure refresh-cookie. + Локальный `backend/tenants.json` тоже не коммитится. Для ручного запуска backend вне Docker можно взять `backend/tenants.example.json`, создать рядом `tenants.json` и подставить локальный пароль. ### Dockerfile (Backend) @@ -64,7 +67,7 @@ RUN chown -R www-data:www-data /usr/local/apache2/htdocs/ |--------|-----|----------| | `backend` | Deployment | Spring Boot приложение | | `frontend` | Deployment | Apache httpd | -| `tenants-config` | ConfigMap | JSON-список тенантов | +| `tenants-secret` | Внешний Secret | JSON-список tenant-подключений; значения отсутствуют в манифестах | ### JWT настройки @@ -74,16 +77,35 @@ RUN chown -R www-data:www-data /usr/local/apache2/htdocs/ - `JWT_REFRESH_TOKEN_TTL=7d` - `JWT_REFRESH_COOKIE_SECURE=true` -`app-secret` задаёт `JWT_SECRET`. Его нельзя логировать или хранить в публичных артефактах как реальный продакшн-секрет. +`app-secret` задаёт `JWT_SECRET`. Этот Secret не создаётся файлами `../k8s/`: его заранее +предоставляет внешний secret manager или оператор. Deployment явно включает профиль +`production`, поэтому небезопасная cookie-конфигурация останавливает startup. -### ConfigMap для тенантов +### Secrets для приложения и тенантов -ConfigMap `tenants-config` монтируется в под backend по пути `/config/tenants.json`. +Обязательные внешние объекты: + +| Secret | Назначение | +|---|---| +| `app-secret` | JWT и fallback credentials backend | +| `tenants-secret` | Полный `tenants.json` с credentials tenant-БД | +| `otel-postgres-secret` | Credentials PostgreSQL receivers для OTel Collector | +| `gitea-registry` | Доступ Kubernetes к registry | + +Secret `tenants-secret` монтируется в pod backend по пути `/config/tenants.json`. При добавлении тенанта через API: 1. `DatabaseController` обновляет in-memory DataSource -2. `ConfigMapUpdater` обновляет ConfigMap через Kubernetes API -3. `TenantConfigWatcher` на остальных подах подхватывает изменения (каждые 30 сек) +2. `KubernetesTenantSecretUpdater` обновляет Secret через Kubernetes API +3. `TenantConfigWatcher` на остальных pod подхватывает смонтированное изменение (каждые 30 сек) + +Kubernetes-клиент доверяет только service-account CA и проверяет hostname API server. +RBAC ограничен объектом `tenants-secret`. Скрипт `../k8s/deploy.sh` проверяет наличие +объектов и ключей до rollout, не читая и не печатая их значения. + +Создание, ротация, отзыв скомпрометированных значений и очистка истории описаны в +[`SECURITY_RUNBOOK.md`](SECURITY_RUNBOOK.md). Эти действия требуют полномочий оператора и +не выполняются автоматически. ### Обновление backend @@ -148,6 +170,9 @@ Tenant ID добавляется в: - Метрики производительности страниц - Трейсы пользовательских действий +PostgreSQL receivers collector получают endpoint и credentials только из +`otel-postgres-secret`; ConfigMap collector содержит лишь `${env:...}` ссылки. + ### Дашборды SigNoz - JVM Dashboard (Heap, GC, Threads) diff --git a/docs/LOGGING.md b/docs/LOGGING.md index f26455a..757385a 100644 --- a/docs/LOGGING.md +++ b/docs/LOGGING.md @@ -92,7 +92,7 @@ MDC.remove("tenant.id"); | `TenantDataSourceConfig` | INFO, WARN, ERROR | Загрузка тенантов, fallback на H2 | | `TenantRoutingDataSource` | INFO, WARN | Добавление/удаление тенантов, тест соединения | | `TenantConfigWatcher` | INFO, ERROR, WARN | Изменения ConfigMap, Flyway миграции | -| `ConfigMapUpdater` | INFO, WARN, ERROR | Обновление ConfigMap в K8s | +| `KubernetesTenantSecretUpdater` | INFO, WARN, ERROR | Безопасное обновление tenant Secret без вывода его содержимого | | `DataInitializer` | INFO | Инициализация БД при старте | | `ScheduleController` | INFO, ERROR | Запросы динамического расписания и ошибки генерации | diff --git a/docs/README.md b/docs/README.md index 1cb77ea..a2ee0d3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -112,5 +112,6 @@ magistr/ | [База данных](DATABASE.md) | Схема БД, описание таблиц, Flyway миграции | | [REST API](API.md) | Все эндпоинты с примерами запросов и ответов | | [Инфраструктура](INFRASTRUCTURE.md) | Docker, Kubernetes, CI/CD, мониторинг | +| [Runbook безопасности](SECURITY_RUNBOOK.md) | Production-секреты, ротация и очистка истории | | [Разработка](DEVELOPMENT.md) | Code Style, соглашения, инструкции для разработчиков | | [Frontend](FRONTEND.md) | Архитектура фронтенда, модули, стили | diff --git a/docs/SECURITY_RUNBOOK.md b/docs/SECURITY_RUNBOOK.md new file mode 100644 index 0000000..d51c149 --- /dev/null +++ b/docs/SECURITY_RUNBOOK.md @@ -0,0 +1,77 @@ +# Runbook безопасности production-секретов + +Этот документ описывает действия оператора, которые нельзя выполнять автоматически из репозитория. Он не содержит и не должен содержать значения секретов, паролей, токенов, cookie или строк подключения. + +## Обязательные Kubernetes Secrets + +Production-манифесты только ссылаются на заранее созданные объекты: + +| Secret | Обязательные ключи | Потребитель | +|---|---|---| +| `app-secret` | `JWT_SECRET`, `POSTGRES_USER`, `POSTGRES_PASSWORD` | Backend | +| `tenants-secret` | `tenants.json` | Backend, файл `/config/tenants.json` | +| `otel-postgres-secret` | `MAGISTR_DB_ENDPOINT`, `MAGISTR_DB_USERNAME`, `MAGISTR_DB_PASSWORD`, `MAGISTR_DB_NAME`, `N8N_DB_ENDPOINT`, `N8N_DB_USERNAME`, `N8N_DB_PASSWORD`, `N8N_DB_NAME` | OTel Collector | +| `gitea-registry` | стандартный ключ Docker registry | Kubernetes image pull | + +Предпочтительный источник — External Secrets, SOPS/Sealed Secrets либо корпоративный secret manager. Kubernetes Secret, созданный вручную, допустим как переходный вариант, если в кластере включено шифрование etcd и значения никогда не сохраняются в Git. + +Для переходного создания из защищённых файлов на рабочей станции оператора: + +```bash +kubectl create namespace magistr --dry-run=client -o yaml | kubectl apply -f - + +kubectl -n magistr create secret generic app-secret \ + --from-env-file=/secure/path/app-secret.env \ + --dry-run=client -o yaml | kubectl apply -f - + +kubectl -n magistr create secret generic tenants-secret \ + --from-file=tenants.json=/secure/path/tenants.json \ + --dry-run=client -o yaml | kubectl apply -f - + +kubectl -n magistr create secret generic otel-postgres-secret \ + --from-env-file=/secure/path/otel-postgres-secret.env \ + --dry-run=client -o yaml | kubectl apply -f - +``` + +Не перенаправляйте YAML из этих команд в файл и не используйте `kubectl get secret -o yaml` в логах CI/CD. + +## Порядок ротации + +1. Зафиксировать владельца, область и версию каждого скомпрометированного значения в закрытой системе управления инцидентами. +2. Создать новые значения средствами secret manager. JWT-ключ должен быть криптографически случайным и содержать не менее 32 байт. +3. Сначала сменить пароли в каждой tenant-БД, затем атомарно обновить соответствующую версию `tenants-secret`. +4. Обновить OTel credentials и `otel-postgres-secret`, после чего перезапустить только collector и проверить поступление метрик. +5. Обновить `JWT_SECRET` в `app-secret` и выполнить контролируемый rollout backend. Смена ключа немедленно аннулирует ранее выданные access JWT. +6. Если политика инцидента требует завершить все пользовательские сессии, очистить `auth_refresh_tokens` отдельно в каждой tenant-БД через утверждённую DBA-процедуру. Эта операция не должна затрагивать пользователей или демонстрационные данные. +7. Проверить readiness, вход, refresh, logout и доступ каждого tenant. Только после этого отозвать предыдущие версии DB/OTel credentials в secret manager. +8. Хранить предыдущую версию секрета только в защищённом менеджере на период согласованного rollback window; не создавать резервные YAML-файлы. + +Команда `../k8s/deploy.sh` проверяет наличие объектов и обязательных ключей, но намеренно не читает и не выводит их значения. + +## Очистка истории + +Переписывание истории и force-push выполняются только после отдельного согласования со всеми владельцами клонов и CI/CD: + +1. Создать закрытый mirror-клон и резервную копию refs. +2. Подготовить вне репозитория файл замен для `git filter-repo`; не помещать исходные или новые значения в аргументы shell, issue или CI-логи. +3. Запустить в mirror-клоне: + + ```bash + git filter-repo --replace-text /secure/path/replacements.txt --force + ``` + +4. Выполнить secret scan переписанной истории и проверить теги/ветви. +5. В согласованное окно выполнить force-push, инвалидировать старые CI caches/artifacts и потребовать повторное клонирование. +6. Отдельно проверить историю репозитория, которому принадлежат файлы `../k8s/`: эта директория не входит в Git-корень Magistr. + +Переписывание истории не заменяет ротацию: опубликованные значения считаются скомпрометированными даже после удаления из Git. + +## Проверка после rollout + +```bash +bash ../k8s/deploy.sh status +kubectl rollout status deployment/backend -n magistr --timeout=300s +kubectl rollout status deployment/otel-collector-db -n magistr --timeout=180s +``` + +Дополнительно оператор должен проверить audit-события secret manager, шифрование etcd, минимальные RBAC-права и отсутствие значений секретов в логах, событиях pod и артефактах CI. diff --git a/graphify-out/.graphify_learning.json b/graphify-out/.graphify_learning.json index 3dd8c8c..ac73e7b 100644 --- a/graphify-out/.graphify_learning.json +++ b/graphify-out/.graphify_learning.json @@ -1,19 +1,45 @@ { - "generated_at": "2026-07-10T17:12:35.296680+00:00", + "generated_at": "2026-07-12T21:52:36.954007+00:00", "nodes": { "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor": { - "code_fingerprint": "9f11d3686fe75ecd9f0b8abaa42702ed900baa8cc253a4025e377fe527fc3b81", + "code_fingerprint": "70b01b3fa22e058ee997250c52cc0affee54ab37aa5f8cc7eb74411487f1bbbf", "label": "AuthorizationInterceptor", - "last": "2026-07-04T10:57:57.276777+00:00", + "last": "2026-07-11T22:22:23.259230+00:00", "provenance": [ + { + "date": "2026-07-11T22:22:23.259230+00:00", + "outcome": "useful", + "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" + }, + { + "date": "2026-07-10T18:14:03.213067+00:00", + "outcome": "useful", + "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" + }, { "date": "2026-07-04T10:57:57.276777+00:00", "outcome": "useful", "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" } ], - "score": 0.865333358, + "score": 2.75167804, "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", + "status": "preferred", + "uses": 3 + }, + "backend_src_main_java_com_magistr_app_config_auth_jwttokenservice_jwttokenservice": { + "code_fingerprint": "e83a6b07c917e4aaf5ffa40228bef4f4e1fa0ad7fabfd617fbc6b80d5ff5a4ec", + "label": "JwtTokenService", + "last": "2026-07-11T22:22:23.259230+00:00", + "provenance": [ + { + "date": "2026-07-11T22:22:23.259230+00:00", + "outcome": "useful", + "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" + } + ], + "score": 0.977626859, + "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "status": "tentative", "uses": 1 }, @@ -28,24 +54,210 @@ "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" } ], - "score": 0.865333358, + "score": 0.822552197, "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "status": "tentative", "uses": 1 }, + "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater": { + "code_fingerprint": "", + "label": "ConfigMapUpdater", + "last": "2026-07-10T18:14:03.213067+00:00", + "provenance": [ + { + "date": "2026-07-10T18:14:03.213067+00:00", + "outcome": "useful", + "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" + } + ], + "score": 0.951498983, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher": { + "code_fingerprint": "83dcf36dd5d7c969fa4d454909cc245145949738b462f569eb1367663e33492d", + "label": "TenantConfigWatcher", + "last": "2026-07-10T18:14:03.213067+00:00", + "provenance": [ + { + "date": "2026-07-10T18:14:03.213067+00:00", + "outcome": "useful", + "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" + } + ], + "score": 0.951498983, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource": { + "code_fingerprint": "2efea217f4236134681ee86d870bd0d5ffcd653e312637e115b50768ada975f0", + "label": "TenantRoutingDataSource", + "last": "2026-07-11T22:22:23.259230+00:00", + "provenance": [ + { + "date": "2026-07-11T22:22:23.259230+00:00", + "outcome": "useful", + "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" + } + ], + "score": 0.977626859, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_controller_databasecontroller": { + "code_fingerprint": "d4e6c182c5a40917feb56354fde6f6c9764d95fd79dc72d4bc760b1fd2d24cdc", + "label": "DatabaseController.java", + "last": "2026-07-11T22:22:23.259230+00:00", + "provenance": [ + { + "date": "2026-07-11T22:22:23.259230+00:00", + "outcome": "useful", + "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" + } + ], + "score": 0.977626859, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler": { + "code_fingerprint": "3fc674c29337df18a9494ada4a6a150b522f6f5fc1f044d003c33eb4272e380d", + "label": "GlobalExceptionHandler", + "last": "2026-07-10T18:14:03.213067+00:00", + "provenance": [ + { + "date": "2026-07-10T18:14:03.213067+00:00", + "outcome": "useful", + "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" + } + ], + "score": 0.951498983, + "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_controller_schedulecontroller": { + "code_fingerprint": "74f022a62ea5440fb0c4c66b86df005e5e77f7f1fda8a4b718d95bd55104ca13", + "label": "ScheduleController.java", + "last": "2026-07-11T22:22:23.259230+00:00", + "provenance": [ + { + "date": "2026-07-11T22:22:23.259230+00:00", + "outcome": "useful", + "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" + } + ], + "score": 0.977626859, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller": { + "code_fingerprint": "b9f25c272cab98280e15616873c10e65380ba04b5f3dc4cbfa50f2c16b5429f1", + "label": "ScheduleOverrideController", + "last": "2026-07-12T14:52:07.844079+00:00", + "provenance": [ + { + "date": "2026-07-12T14:52:07.844079+00:00", + "outcome": "useful", + "q": "Как безопасно валидировать и сохранять точечные изменения расписания?" + } + ], + "score": 0.993275993, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_controller_scheduleruleadmincontroller_scheduleruleadmincontroller": { + "code_fingerprint": "88244c8ce05d55ac3581c4295a7213294389d1245b56c73a0ad5df2da4ecf000", + "label": "ScheduleRuleAdminController", + "last": "2026-07-12T21:48:38.060218+00:00", + "provenance": [ + { + "date": "2026-07-12T21:48:38.060218+00:00", + "outcome": "useful", + "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" + }, + { + "date": "2026-07-10T18:14:03.213067+00:00", + "outcome": "useful", + "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" + } + ], + "score": 1.951435101, + "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", + "status": "preferred", + "uses": 2 + }, "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule": { "code_fingerprint": "692d61c1bfd5b46f5865174dde8cf2d962d2ccd124b5e4320e2ba8535bb29605", "label": "ScheduleRule", - "last": "2026-07-04T12:07:28.781712+00:00", + "last": "2026-07-12T21:48:38.060218+00:00", "provenance": [ + { + "date": "2026-07-12T21:48:38.060218+00:00", + "outcome": "useful", + "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" + }, { "date": "2026-07-04T12:07:28.781712+00:00", "outcome": "useful", "q": "Корректны ли inferred-связи вокруг ScheduleRule?" } ], - "score": 0.866299207, + "score": 1.823406413, "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", + "status": "preferred", + "uses": 2 + }, + "backend_src_main_java_com_magistr_app_model_scheduleruleslot_scheduleruleslot": { + "code_fingerprint": "0b1cef627b98558752cc70624d74cd54eb09d9dbff8ca985f81f56d5b3dd34ff", + "label": "ScheduleRuleSlot", + "last": "2026-07-12T21:48:38.060218+00:00", + "provenance": [ + { + "date": "2026-07-12T21:48:38.060218+00:00", + "outcome": "useful", + "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" + } + ], + "score": 0.999936118, + "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository": { + "code_fingerprint": "8a39b28d2b7d0d2ca60b188a5c9b97c71187b5845dd8bdc85206f117b9d4984b", + "label": "SemesterRepository", + "last": "2026-07-12T21:48:38.060218+00:00", + "provenance": [ + { + "date": "2026-07-12T21:48:38.060218+00:00", + "outcome": "useful", + "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" + } + ], + "score": 0.999936118, + "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice": { + "code_fingerprint": "47d0183b1249d194c9825046e0942a1867ad5c781ed90f376b975095e8807f68", + "label": "ScheduleQueryService", + "last": "2026-07-12T14:52:07.844079+00:00", + "provenance": [ + { + "date": "2026-07-12T14:52:07.844079+00:00", + "outcome": "useful", + "q": "Как безопасно валидировать и сохранять точечные изменения расписания?" + } + ], + "score": 0.993275993, + "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "status": "tentative", "uses": 1 }, @@ -60,10 +272,26 @@ "q": "Корректны ли inferred-связи вокруг ScheduleRule?" } ], - "score": 0.866299207, + "score": 0.823470295, "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "status": "tentative", "uses": 1 + }, + "compose_backend_service": { + "code_fingerprint": "a175ccc6d907386f120574edb6296a6af416da683b869c7da71f60835f2daaa6", + "label": "Backend-сервис Docker Compose", + "last": "2026-07-11T22:22:23.259230+00:00", + "provenance": [ + { + "date": "2026-07-11T22:22:23.259230+00:00", + "outcome": "useful", + "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" + } + ], + "score": 0.977626859, + "source_file": "compose.yaml", + "status": "tentative", + "uses": 1 } }, "version": 1 diff --git a/graphify-out/memory/query_20260711_222223_какие_подсистемы_связывают_исправления_аутентифика.md b/graphify-out/memory/query_20260711_222223_какие_подсистемы_связывают_исправления_аутентифика.md new file mode 100644 index 0000000..6e99cf1 --- /dev/null +++ b/graphify-out/memory/query_20260711_222223_какие_подсистемы_связывают_исправления_аутентифика.md @@ -0,0 +1,27 @@ +--- +type: "query" +date: "2026-07-11T22:22:23.259230+00:00" +question: "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["AuthorizationInterceptor", "JwtTokenService", "TenantRoutingDataSource", "DatabaseController.java", "ScheduleController.java", "Backend-сервис Docker Compose"] +--- + +# Q: Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры? + +## Answer + +Расширение по словарю графа: [auth, authorization, refresh, token, tenant, config, database, schedule, calendar, frontend, backend, kubernetes]. Граф выделил AuthorizationInterceptor/JwtTokenService/AuthController для авторизации, TenantRoutingDataSource/TenantWebMvcConfig/DatabaseController для мультитенантности, ScheduleController и календарные контроллеры для расписания, а compose.yaml и Kubernetes-манифесты для поставки. Связи подтверждены исходниками; граф используется только как карта навигации. + +## Outcome + +- Signal: useful + +## Source Nodes + +- AuthorizationInterceptor +- JwtTokenService +- TenantRoutingDataSource +- DatabaseController.java +- ScheduleController.java +- Backend-сервис Docker Compose \ No newline at end of file diff --git a/graphify-out/memory/query_20260712_141303_как_scheduleoverrideservice_должен_выявлять_конфли.md b/graphify-out/memory/query_20260712_141303_как_scheduleoverrideservice_должен_выявлять_конфли.md new file mode 100644 index 0000000..7ebf30f --- /dev/null +++ b/graphify-out/memory/query_20260712_141303_как_scheduleoverrideservice_должен_выявлять_конфли.md @@ -0,0 +1,22 @@ +--- +type: "query" +date: "2026-07-12T14:13:03.313831+00:00" +question: "Как ScheduleOverrideService должен выявлять конфликты эффективного расписания?" +contributor: "graphify" +outcome: "dead_end" +source_nodes: ["Override"] +--- + +# Q: Как ScheduleOverrideService должен выявлять конфликты эффективного расписания? + +## Answer + +Расширение по словарю графа: schedule, override, conflict, effective, teacher, classroom, subgroup, group. Обход оказался тупиковым: токен override сопоставился с Java-аннотацией Override, а новых production-классов ещё нет в графе. Для тестов нужно опираться на актуальные исходники после появления сервиса. + +## Outcome + +- Signal: dead_end + +## Source Nodes + +- Override \ No newline at end of file diff --git a/graphify-out/memory/query_20260712_145207_как_безопасно_валидировать_и_сохранять_точечные_из.md b/graphify-out/memory/query_20260712_145207_как_безопасно_валидировать_и_сохранять_точечные_из.md new file mode 100644 index 0000000..4363c2a --- /dev/null +++ b/graphify-out/memory/query_20260712_145207_как_безопасно_валидировать_и_сохранять_точечные_из.md @@ -0,0 +1,24 @@ +--- +type: "query" +date: "2026-07-12T14:52:07.844079+00:00" +question: "Как безопасно валидировать и сохранять точечные изменения расписания?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["ScheduleOverrideController", "ScheduleQueryService", "ScheduleGeneratorService"] +--- + +# Q: Как безопасно валидировать и сохранять точечные изменения расписания? + +## Answer + +Расширение по словарю графа: [schedule, override, generator, query, conflict, classroom, teacher, group, rule, slot]. ScheduleOverrideController делегирует транзакционному ScheduleOverrideService; базовый и effective-день строятся через ScheduleQueryService и ScheduleGeneratorService. Проверка подтверждена по исходникам и дополнена PostgreSQL advisory lock, action matrix и конфликтами ресурсов. + +## Outcome + +- Signal: useful + +## Source Nodes + +- ScheduleOverrideController +- ScheduleQueryService +- ScheduleGeneratorService \ No newline at end of file diff --git a/graphify-out/memory/query_20260712_214838_какие_связи_затрагивает_полная_валидация_правил_ра.md b/graphify-out/memory/query_20260712_214838_какие_связи_затрагивает_полная_валидация_правил_ра.md new file mode 100644 index 0000000..5325c6d --- /dev/null +++ b/graphify-out/memory/query_20260712_214838_какие_связи_затрагивает_полная_валидация_правил_ра.md @@ -0,0 +1,26 @@ +--- +type: "query" +date: "2026-07-12T21:48:38.060218+00:00" +question: "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["ScheduleRuleAdminController", "ScheduleRule", "ScheduleRuleSlot", "SemesterRepository", "ScheduleGeneratorService"] +--- + +# Q: Какие связи затрагивает полная валидация правил расписания в исправлении №7? + +## Answer + +Expanded from original query via vocab: [schedule, rule, semester, repository, controller, conflict, slot, validation, teacher, classroom]. Граф указал на ScheduleRuleAdminController, ScheduleRule, ScheduleRuleSlot, SemesterRepository и ScheduleGeneratorService. Актуальные исходники подтвердили, что HTTP-слой делегирует ScheduleRuleService, блокировка семестра сериализует запись, а DB-инварианты закрепляются V4. + +## Outcome + +- Signal: useful + +## Source Nodes + +- ScheduleRuleAdminController +- ScheduleRule +- ScheduleRuleSlot +- SemesterRepository +- ScheduleGeneratorService \ No newline at end of file diff --git a/graphify-out/memory/query_20260712_220947_как_безопасно_заменить_tenant_datasource_без_потер.md b/graphify-out/memory/query_20260712_220947_как_безопасно_заменить_tenant_datasource_без_потер.md new file mode 100644 index 0000000..f57cfc9 --- /dev/null +++ b/graphify-out/memory/query_20260712_220947_как_безопасно_заменить_tenant_datasource_без_потер.md @@ -0,0 +1,25 @@ +--- +type: "query" +date: "2026-07-12T22:09:47.294749+00:00" +question: "Как безопасно заменить tenant DataSource без потери рабочего подключения?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["DatabaseController", "TenantRoutingDataSource", "TenantConfigWatcher", "TenantConfig"] +--- + +# Q: Как безопасно заменить tenant DataSource без потери рабочего подключения? + +## Answer + +Expanded from original query via vocab: [database, tenant, routing, flyway, hikari, secret, config, updater, watcher, controller]. Граф связал DatabaseController с TenantRoutingDataSource и Hikari/Flyway. Актуальные исходники подтвердили destructive remove старого pool, ленивый candidate, проглоченную ошибку Flyway и отсутствие rollback при отказе Secret. Безопасный локальный протокол: prepare, explicit connection validation, Flyway на candidate, persistence prospective snapshot, atomic swap, compensation и закрытие old только после успеха. ResourceVersion между pod относится к отдельному пункту №10. + +## Outcome + +- Signal: useful + +## Source Nodes + +- DatabaseController +- TenantRoutingDataSource +- TenantConfigWatcher +- TenantConfig \ No newline at end of file diff --git a/graphify-out/memory/query_20260712_222021_как_безопасно_обновлять_tenant_datasource_без_поте.md b/graphify-out/memory/query_20260712_222021_как_безопасно_обновлять_tenant_datasource_без_поте.md new file mode 100644 index 0000000..a7276be --- /dev/null +++ b/graphify-out/memory/query_20260712_222021_как_безопасно_обновлять_tenant_datasource_без_поте.md @@ -0,0 +1,25 @@ +--- +type: "query" +date: "2026-07-12T22:20:21.382611+00:00" +question: "Как безопасно обновлять tenant DataSource без потери рабочего подключения?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["TenantRoutingDataSource", "DatabaseController", "TenantConfigWatcher", "DataInitializer"] +--- + +# Q: Как безопасно обновлять tenant DataSource без потери рабочего подключения? + +## Answer + +Расширение по словарю графа: tenant, routing, data, source, database, controller, config, watcher, initializer, hikari, flyway, secret. Граф указал на TenantRoutingDataSource, DatabaseController, TenantConfigWatcher и DataInitializer; актуальные исходники подтвердили destructive remove-before-add и проглатывание Flyway. Реализация использует проверенный временный Hikari pool, миграцию до персистенции, immutable runtime snapshot, Secret-before-swap и compensating restore. + +## Outcome + +- Signal: useful + +## Source Nodes + +- TenantRoutingDataSource +- DatabaseController +- TenantConfigWatcher +- DataInitializer \ No newline at end of file diff --git a/graphify-out/reflections/LESSONS.md b/graphify-out/reflections/LESSONS.md index ec1f82c..a1af700 100644 --- a/graphify-out/reflections/LESSONS.md +++ b/graphify-out/reflections/LESSONS.md @@ -1,16 +1,37 @@ # Lessons -_Auto-generated by `graphify reflect` from 2 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ +_Auto-generated by `graphify reflect` from 7 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ ## Summary -- 2 useful · 0 dead ends · 0 corrected · 0 unmarked +- 6 useful · 1 dead ends · 0 corrected · 0 unmarked ## Lessons +**Preferred sources** — corroborated by ≥2 useful results; start here. + +- `AuthorizationInterceptor` (3× useful) +- `ScheduleGeneratorService` (2× useful) +- `ScheduleRuleAdminController` (2× useful) +- `ScheduleRule` (2× useful) + **Tentative** — useful in fewer than 2 results; verify before relying. -- `ScheduleRule` (1× useful) +- `ScheduleRuleSlot` (1× useful) +- `SemesterRepository` (1× useful) +- `ScheduleOverrideController` (1× useful) +- `ScheduleQueryService` (1× useful) +- `Backend-сервис Docker Compose` (1× useful) +- `DatabaseController.java` (1× useful) +- `JwtTokenService` (1× useful) +- `ScheduleController.java` (1× useful) +- `TenantRoutingDataSource` (1× useful) +- `ConfigMapUpdater` (1× useful) +- `GlobalExceptionHandler` (1× useful) +- `TenantConfigWatcher` (1× useful) - `ScheduleRuleTest` (1× useful) -- `AuthorizationInterceptor` (1× useful) - `RequireRoles` (1× useful) + +**Known dead ends** — led nowhere; don't re-derive. + +- "Как ScheduleOverrideService должен выявлять конфликты эффективного расписания?" — `Override` diff --git a/scripts/check-production-secrets.sh b/scripts/check-production-secrets.sh new file mode 100644 index 0000000..5808e4d --- /dev/null +++ b/scripts/check-production-secrets.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -euo pipefail + +ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +K8S_DIR=${K8S_DIR:-"$ROOT_DIR/../k8s"} + +fail() { + echo "Ошибка проверки production-секретов: $1" >&2 + exit 1 +} + +require_pattern() { + local pattern="$1" + local file="$2" + local description="$3" + grep -Eq "$pattern" "$file" || fail "$description" +} + +forbid_pattern() { + local pattern="$1" + local file="$2" + local description="$3" + if grep -Eq "$pattern" "$file"; then + fail "$description" + fi +} + +[[ -d "$K8S_DIR" ]] || fail "не найдена директория Kubernetes: $K8S_DIR" + +require_pattern '^app\.jwt\.secret=\$\{JWT_SECRET:\}$' \ + "$ROOT_DIR/backend/src/main/resources/application.properties" \ + "JWT_SECRET должен быть обязательной переменной без встроенного значения" + +require_pattern '^[[:space:]]*private String secret;$' \ + "$ROOT_DIR/backend/src/main/java/com/magistr/app/config/auth/JwtProperties.java" \ + "JwtProperties не должен содержать встроенный секрет" + +forbid_pattern '^[[:space:]]*kind:[[:space:]]*Secret[[:space:]]*$' \ + "$K8S_DIR/config.yaml" \ + "config.yaml не должен создавать Secret с отслеживаемыми значениями" + +for yaml in "$K8S_DIR"/*.yaml; do + forbid_pattern '^[[:space:]]*stringData:[[:space:]]*$' "$yaml" \ + "production-манифесты не должны содержать stringData" +done + +require_pattern 'secretName:[[:space:]]*tenants-secret' "$K8S_DIR/backend.yaml" \ + "tenant-конфигурация должна монтироваться из tenants-secret" +require_pattern 'name:[[:space:]]*app-secret' "$K8S_DIR/backend.yaml" \ + "backend должен получать JWT_SECRET через app-secret" +require_pattern 'SPRING_PROFILES_ACTIVE:[[:space:]]*"production"' "$K8S_DIR/config.yaml" \ + "Kubernetes должен явно включать production-профиль" +require_pattern 'JWT_REFRESH_COOKIE_SECURE:[[:space:]]*"true"' "$K8S_DIR/config.yaml" \ + "production refresh-cookie должен быть Secure" +require_pattern 'name:[[:space:]]*otel-postgres-secret' "$K8S_DIR/otel-collector.yaml" \ + "OTel Collector должен получать credentials из Secret" + +if awk ' + /^[[:space:]]*password:[[:space:]]*/ && $0 !~ /\$\{env:[A-Z0-9_]+\}/ { unsafe=1 } + END { exit unsafe ? 1 : 0 } +' "$K8S_DIR/otel-collector.yaml"; then + : +else + fail "пароли OTel Collector должны задаваться только через env-ссылки" +fi + +if grep -REq 'createInsecureClient|trustAll|X509TrustManager' \ + "$ROOT_DIR/backend/src/main/java/com/magistr/app/config/tenant"; then + fail "в Kubernetes-клиенте обнаружен небезопасный TLS trust manager" +fi + +echo "Проверка production-секретов завершена успешно" From 3f685d3e22c860084ae743086ebde0bb76868369 Mon Sep 17 00:00:00 2001 From: dipatrik10 Date: Thu, 16 Jul 2026 22:56:43 +0300 Subject: [PATCH 06/14] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20?= =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BUG_FIX_PROGRESS.md | 108 ++- backend/pom.xml | 6 + .../tenant/KubernetesTenantSecretUpdater.java | 728 ++++++++++++++++-- .../TenantConfigPersistenceException.java | 15 + .../app/config/tenant/TenantConfigStore.java | 13 + .../config/tenant/TenantConfigWatcher.java | 31 +- .../config/tenant/TenantDataSourceConfig.java | 67 +- .../TenantSecretCompensationResult.java | 10 + .../tenant/TenantSecretUpdateReceipt.java | 95 +++ .../app/config/tenant/TenantWebMvcConfig.java | 4 +- .../health/TenantDatabaseHealthMonitor.java | 218 ++++++ .../TenantReadinessHealthIndicator.java | 38 + .../health/TenantReadinessRegistry.java | 461 +++++++++++ .../app/service/TenantLifecycleService.java | 166 +++- .../src/main/resources/application.properties | 13 + ...okenServiceConcurrencyIntegrationTest.java | 5 +- .../KubernetesTenantSecretUpdaterTest.java | 581 +++++++++++++- .../tenant/TenantConfigWatcherTest.java | 16 +- .../tenant/TenantDataSourceConfigTest.java | 93 +++ .../config/tenant/TenantWebMvcConfigTest.java | 41 + .../HealthProbeEndpointIntegrationTest.java | 106 +++ .../TenantDatabaseHealthMonitorTest.java | 264 +++++++ .../TenantReadinessHealthIndicatorTest.java | 69 ++ .../health/TenantReadinessRegistryTest.java | 166 ++++ .../controller/DatabaseControllerTest.java | 74 ++ ...micCalendarGridServiceIntegrationTest.java | 5 +- ...PostgreSqlAdvisoryLockIntegrationTest.java | 3 +- ...RuleServiceConcurrencyIntegrationTest.java | 5 +- ...antLifecyclePostgreSqlIntegrationTest.java | 47 +- .../service/TenantLifecycleServiceTest.java | 261 +++++-- docs/API.md | 116 ++- docs/ARCHITECTURE.md | 90 ++- docs/INFRASTRUCTURE.md | 141 +++- 33 files changed, 3777 insertions(+), 279 deletions(-) create mode 100644 backend/src/main/java/com/magistr/app/config/tenant/TenantConfigPersistenceException.java create mode 100644 backend/src/main/java/com/magistr/app/config/tenant/TenantConfigStore.java create mode 100644 backend/src/main/java/com/magistr/app/config/tenant/TenantSecretCompensationResult.java create mode 100644 backend/src/main/java/com/magistr/app/config/tenant/TenantSecretUpdateReceipt.java create mode 100644 backend/src/main/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitor.java create mode 100644 backend/src/main/java/com/magistr/app/config/tenant/health/TenantReadinessHealthIndicator.java create mode 100644 backend/src/main/java/com/magistr/app/config/tenant/health/TenantReadinessRegistry.java create mode 100644 backend/src/test/java/com/magistr/app/config/tenant/TenantDataSourceConfigTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/tenant/TenantWebMvcConfigTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/tenant/health/HealthProbeEndpointIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitorTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/tenant/health/TenantReadinessHealthIndicatorTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/tenant/health/TenantReadinessRegistryTest.java create mode 100644 backend/src/test/java/com/magistr/app/controller/DatabaseControllerTest.java diff --git a/BUG_FIX_PROGRESS.md b/BUG_FIX_PROGRESS.md index e03bdcf..430a417 100644 --- a/BUG_FIX_PROGRESS.md +++ b/BUG_FIX_PROGRESS.md @@ -1,6 +1,6 @@ # Журнал исправления проблем -Обновлено: 2026-07-13 (Europe/Moscow). +Обновлено: 2026-07-15 (Europe/Moscow). ## Область и неизменяемые данные @@ -54,8 +54,8 @@ | 6 | исправлено и проверено | Teacher-only поиск загружал только базовые правила исходного преподавателя до применения override. | Один snapshot overrides; релевантные `newTeacher`-замены достраивают exact base occurrences по уникальным датам, затем применяются overrides, финальный teacher-фильтр и deduplicate. | 5 новых A→B/phantom/cache/dedup/regression тестов; узкий прогон 10/0/0/0, полный backend 79/0/0/0. | | 7 | исправлено и проверено | Контроллер сравнивал новые слоты только с сохранёнными правилами, не проверял роль преподавателя и enum формата, а нечётные часы приводили к перерасходу генератора. | `ScheduleRuleService` валидирует весь кандидат до мутации, попарно проверяет дубли/ресурсы, требует `TEACHER`, `Очно`/`Онлайн` и чётные часы; строка семестра сериализует запись. V4 закрепляет чётность и точный дубль в БД. | 23 service/MockMvc/Flyway/PostgreSQL tests; полный backend: 102/0/0/0. | | 8 | исправлено и проверено | `saveGrid` удалял данные до полной валидации и ловил исключение внутри transactional controller-метода, поэтому Spring коммитил delete и уже обработанные строки. | `AcademicCalendarGridService` полностью валидирует и строит replacement до delete, атомарно заменяет строки и очищает кэш через `afterCommit`; контроллер стал HTTP-адаптером. | 8 unit + 1 PostgreSQL proxy test; fingerprint старой сетки после отказа неизменен; полный backend 111/0/0/0. | -| 9 | в работе | При update старый pool закрывается до создания нового; Hikari допускает ленивый нерабочий pool, Flyway проглатывает ошибку, а отказ Secret-персистенции оставляет локальное состояние изменённым. | Реализуются prepare/validate/migrate кандидата, persistence до atomic swap и компенсация Secret при ошибке активации. | Готовятся unit и PostgreSQL lifecycle tests для credentials/migration/persistence/swap. | -| 10 | не начато | Два pod перезаписывают целый tenant-документ без `resourceVersion`; TCP probes не отражают готовность tenant-БД. | Optimistic locking с retry; отдельные liveness/readiness semantics. | Конкурентные PATCH и health tests; Kustomize-проверка probes. | +| 9 | исправлено и проверено | При update старый pool закрывался до создания нового; Hikari допускал ленивый нерабочий pool, Flyway проглатывал ошибку, а отказ persistence мог сочетаться с изменённым локальным состоянием. | `TenantLifecycleService` выполняет prepare → connection validation → Flyway → Secret persistence → atomic snapshot swap; candidate закрывается при отказе, прежний route сохраняется, Secret компенсируется, старый pool закрывается после drain. | 18 целевых unit/MockMvc/PostgreSQL tests; create/update, credentials, invalid connection, Flyway, persistence, swap, HTTP `503` и in-flight connection. Полный backend: 132/0/0/0. | +| 10 | требуется внешнее действие | Два pod перезаписывали целый tenant-документ без `resourceVersion`; TCP probes не отражали готовность tenant-БД. | Backend применяет доменные upsert/remove через GET → условный PUT по `resourceVersion`, ограниченный retry и безопасную компенсацию; Actuator разделяет process-only liveness и readiness обязательных tenant-БД. Оператору остаются RBAC `get/update`, mount без `subPath`, `TENANTS_CONFIG_REQUIRED=true` и HTTP probes в отсутствующем `../k8s`. | 64 целевых теста; полный backend 169/0/0/0; LF-хеши V1–V4 совпадают. Kustomize не выполнен: `../k8s` отсутствует. | | 11 | не начато | Sunday вычисляется повторным мутированием даты; ошибки запросов превращаются в пустые результаты и зелёный статус. | Чистая local-date утилита и три явных состояния проверки. | 2026-07-02, переход года, частичная/полная ошибка API. | | 12 | не начато | Access JWT хранится в Web Storage; origin исполняет удалённые модули; CSP допускает несовместимые сценарии. | Access JWT только в памяти, восстановление через HttpOnly refresh-cookie; локальные pinned assets; строгий CSP и удаление inline JS. | Login/refresh/logout/reload tests; статический аудит CSP/storage/imports. | | 13 | не начато | Watcher сравнивает только домены и фиксирует hash до успешной полной синхронизации. | Нормализованное сравнение полного `TenantConfig`, hash после успеха, bounded backoff. | Изменение URL/credentials и retry после ошибки. | @@ -261,18 +261,100 @@ | Контейнерный полный `mvn test` | 111 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | | `git diff --check` | Успешно. | +### № 9 — безопасная замена tenant DataSource + +- `DatabaseController` делегирует create/update/delete в единый `TenantLifecycleService` и + возвращает lifecycle-ошибки как русский безопасный `503`, а не ложный `200` или raw + JDBC/Flyway message. +- Новый Hikari candidate не публикуется в маршрутизации до явного `getConnection()` / + `isValid(5)`, успешного Flyway и подтверждённой доменной мутации в актуальном + `tenants-secret`. +- `TenantRoutingDataSource` одной volatile-публикацией заменяет неизменяемый снимок + `TenantConfig + DataSource`; прежняя конфигурация и pool остаются рабочими при ошибке + credentials, миграции, persistence или доатомарной активации. +- Неуспешная persistence не меняет локальный route. Неопределённый результат записи сначала + сверяется повторным чтением и не даёт права на опасный откат. Если swap/remove отказывает + после подтверждённой записи, прежний снимок восстанавливается только при точном совпадении + `resourceVersion`; более новое изменение другого pod не перезаписывается. +- После успешного swap старый pool не закрывается синхронно: `RetiredTenantPoolService` + прекращает новые маршруты, сохраняет уже выданные соединения и закрывает Hikari после + drain либо grace timeout. +- Unit-тесты дополнены отдельной create-веткой, восстановлением снимка без нового domain, + `Connection.isValid(false)` и MockMvc-проверкой `503` без технических деталей. +- PostgreSQL 16.3/Testcontainers-тест подтверждает сохранность старого route при неверном + пароле, повреждённом Flyway checksum и отказе persistence, работоспособность in-flight + соединения во время swap и последующий drain старого pool. +- `docs/API.md`, `docs/ARCHITECTURE.md` и `docs/INFRASTRUCTURE.md` синхронизированы через + AutoUpdateDocs; исправлено устаревшее описание порядка «in-memory до Secret». + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный целевой `mvn -Dtest=TenantLifecycleServiceTest,TenantLifecyclePostgreSqlIntegrationTest,TenantRoutingDataSourceTest,DatabaseControllerTest test` | 18 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Контейнерный полный `mvn test` | 132 теста, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Повторные LF-нормализованные SHA-256 V1/V2/V3/V4 | Совпадают с ранее зафиксированными значениями. | + +### № 10 — межподовая координация tenant-конфигурации и health probes + +- Введён `TenantConfigStore` с явными операциями upsert/remove. Kubernetes-реализация перед + каждой мутацией читает актуальный `tenants-secret`, нормализует домены и отправляет полный + объект условным `PUT` с прочитанным `metadata.resourceVersion`. +- `409`, `408`, `429`, `5xx` и транспортные ошибки обрабатываются ограниченно: максимум три + попытки с возрастающей задержкой и повторным применением только собственной доменной + мутации к свежему состоянию. Идемпотентная операция не выполняет `PUT`. +- Успех записи и компенсации больше не определяется одним HTTP 2xx: backend разбирает + возвращённый Secret, сравнивает `tenants.json` с ожидаемым и использует `resourceVersion` + только проверенного объекта. Пустой, неполный или неоднозначный ответ сверяется повторным + `GET` без выдачи квитанции, разрешающей небезопасный откат. +- Компенсация выполняется только для подтверждённой собственной версии. Если текущий Secret + уже получил другой `resourceVersion`, откат прекращается и не затирает изменение другого + pod. Отсутствующий `data.tenants.json`, повторяющиеся домены и Kubernetes mode без + ServiceAccount token обрабатываются fail-closed. +- Добавлен Spring Boot Actuator. `/actuator/health/liveness` зависит только от жизнеспособности + процесса; `/actuator/health/readiness` требует непустой набор обязательных tenant, успешную + миграцию и свежую успешную проверку каждого соединения. H2-заглушка, ошибка обязательного + конфига, migration failure, timeout, недоступность или просроченная проверка дают `503`. +- `TenantDatabaseHealthMonitor` проверяет tenant-БД ограниченно-параллельно в фоне; endpoint + читает только атомарный кэш. Общий deadline отменяет лишь незавершённые задачи, уже + завершившиеся результаты не теряются и получают фактическое время проверки. Scheduler + имеет два потока, поэтому долгий health-pass не блокирует watcher. +- `TenantDataSourceConfig` и watcher поддерживают `TENANTS_CONFIG_REQUIRED=true`: отсутствие, + пустой список или ошибка чтения production-файла фиксируют configuration failure, а H2 не + маскирует отказ. Actuator endpoints исключены из tenant-interceptor и не раскрывают + components, домены, JDBC URL или credentials. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/ARCHITECTURE.md` и + `docs/INFRASTRUCTURE.md`. Ограничение watcher по обновлению URL/credentials существующего + домена явно оставлено проблеме № 13. +- В текущей рабочей копии отсутствует внешний каталог `../k8s`, поэтому манифесты не менялись + и Kustomize не запускался. Для production обязательны directory mount без `subPath`, + `TENANTS_CONFIG_REQUIRED=true`, Role `get/update` для `tenants-secret` и HTTP liveness / + readiness probes; применение и rollout остаются внешними действиями оператора. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `KubernetesTenantSecretUpdaterTest` | 21 тест, 0 failures, 0 errors, 0 skipped; два конкурентных updater, CAS conflict/retry, 408/5xx reconciliation, проверка 2xx и безопасная компенсация. | +| Health/startup target (`TenantDataSourceConfigTest`, registry/monitor/indicator, Actuator, MVC exclusion) | 19 тестов, 0 failures, 0 errors, 0 skipped. | +| Lifecycle/controller/watcher target | 24 теста, 0 failures, 0 errors, 0 skipped; PostgreSQL lifecycle отдельно повторён успешно после единичной Docker-сетевой флуктуации. | +| Контейнерный полный `mvn test` | 169 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS; 40 suites. | +| `git diff --check` | Успешно. | +| Повторные LF-нормализованные SHA-256 V1/V2/V3/V4 | Совпадают с ранее зафиксированными значениями. | +| `kubectl kustomize ../k8s` | Не выполнено: внешний каталог `../k8s` отсутствует в текущем workspace. | + ## Точка продолжения -Текущий этап: **№ 9 — безопасная замена tenant DataSource**. +Текущий этап: **№ 13 — полная синхронизация изменённых tenant credentials/URL watcher-ом**. Следующая операция: -1. проверить актуальные create/update потоки `DatabaseController`, swap/remove API - `TenantRoutingDataSource`, Flyway и персистенцию tenant-конфигурации; -2. определить порядок prepare → connection validation → Flyway → persistence → atomic swap, - не закрывающий рабочий pool до полной готовности кандидата; -3. добавить компенсирующий rollback для ошибок персистенции/активации и явные русские - ошибки без ложного `200`; -4. покрыть неверные credentials, ошибку миграции и ошибку персистенции тестами, доказывающими - сохранность старого подключения; -5. выполнить полный прогон и AutoUpdateDocs перед изменением статуса № 9. +1. сравнивать полную нормализованную активную конфигурацию с persisted snapshot, а не только + набор доменов; +2. при изменении URL/username/password выполнять prepare → verify → Flyway → atomic swap без + повторной записи Secret; +3. считать hash применённым только после полной успешной синхронизации и не подтверждать + произвольное содержимое mount через `refreshHash()` после API-мутации; +4. добавить bounded retry/backoff и тесты изменения credentials, восстановления прежнего + файла после ошибки и межподового merged snapshot; +5. выполнить полный прогон и AutoUpdateDocs перед изменением статуса № 13. diff --git a/backend/pom.xml b/backend/pom.xml index 2cdbae9..4f10d8a 100755 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -27,6 +27,12 @@ spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + org.springframework.boot diff --git a/backend/src/main/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdater.java b/backend/src/main/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdater.java index 0a6cf61..08d4ad7 100644 --- a/backend/src/main/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdater.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdater.java @@ -1,6 +1,9 @@ package com.magistr.app.config.tenant; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -8,6 +11,7 @@ import org.springframework.stereotype.Service; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLParameters; import javax.net.ssl.TrustManagerFactory; +import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.net.http.HttpClient; @@ -19,19 +23,29 @@ import java.nio.file.Path; import java.security.KeyStore; import java.security.cert.Certificate; import java.security.cert.CertificateFactory; +import java.time.Duration; +import java.util.ArrayList; import java.util.Base64; import java.util.Collection; +import java.util.Comparator; +import java.util.HashSet; import java.util.List; -import java.util.Map; +import java.util.Locale; +import java.util.Objects; +import java.util.Set; +import java.util.function.Function; +import java.util.regex.Pattern; /** - * Обновляет Kubernetes Secret с конфигурацией тенантов через Kubernetes REST API. + * Атомарно изменяет Kubernetes Secret с конфигурацией тенантов через Kubernetes REST API. * - *

Работает только внутри Kubernetes pod и использует service-account token и - * service-account CA. В локальной разработке персистенция пропускается.

+ *

Каждая мутация сначала читает актуальный Secret, применяет изменение к полученному + * списку и отправляет полный объект обратно условным {@code PUT} с + * {@code metadata.resourceVersion}. При конфликте операция повторно читает актуальное + * состояние и заново применяет только свою мутацию.

*/ @Service -public class KubernetesTenantSecretUpdater { +public class KubernetesTenantSecretUpdater implements TenantConfigStore { private static final Logger log = LoggerFactory.getLogger(KubernetesTenantSecretUpdater.class); @@ -43,6 +57,15 @@ public class KubernetesTenantSecretUpdater { Path.of("/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"); private static final String DEFAULT_API_BASE = "https://kubernetes.default.svc"; private static final String DEFAULT_SECRET_NAME = "tenants-secret"; + private static final int DEFAULT_MAX_ATTEMPTS = 3; + private static final Duration DEFAULT_RETRY_DELAY = Duration.ofMillis(50); + private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds(5); + private static final Duration REQUEST_TIMEOUT = Duration.ofSeconds(10); + private static final Pattern DOMAIN_PATTERN = Pattern.compile( + "[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?" + ); + private static final TypeReference> TENANT_LIST_TYPE = new TypeReference<>() { + }; private final ObjectMapper objectMapper; private final Path tokenPath; @@ -51,6 +74,10 @@ public class KubernetesTenantSecretUpdater { private final String apiBase; private final String secretName; private final boolean runningInKubernetes; + private final int maxAttempts; + private final Duration retryDelay; + + private volatile HttpClient httpClient; public KubernetesTenantSecretUpdater() { this( @@ -69,79 +96,572 @@ public class KubernetesTenantSecretUpdater { String apiBase, String secretName, ObjectMapper objectMapper) { - this.tokenPath = tokenPath; - this.namespacePath = namespacePath; - this.caPath = caPath; - this.apiBase = apiBase.endsWith("/") ? apiBase.substring(0, apiBase.length() - 1) : apiBase; - this.secretName = secretName; - this.objectMapper = objectMapper; - this.runningInKubernetes = Files.exists(tokenPath); + this( + tokenPath, + namespacePath, + caPath, + apiBase, + secretName, + objectMapper, + DEFAULT_MAX_ATTEMPTS, + DEFAULT_RETRY_DELAY + ); + } + + KubernetesTenantSecretUpdater(Path tokenPath, + Path namespacePath, + Path caPath, + String apiBase, + String secretName, + ObjectMapper objectMapper, + int maxAttempts, + Duration retryDelay) { + this( + tokenPath, + namespacePath, + caPath, + apiBase, + secretName, + objectMapper, + maxAttempts, + retryDelay, + detectKubernetesEnvironment(tokenPath) + ); + } + + KubernetesTenantSecretUpdater(Path tokenPath, + Path namespacePath, + Path caPath, + String apiBase, + String secretName, + ObjectMapper objectMapper, + int maxAttempts, + Duration retryDelay, + boolean kubernetesEnvironment) { + this.tokenPath = Objects.requireNonNull(tokenPath, "Путь к ServiceAccount token не задан"); + this.namespacePath = Objects.requireNonNull(namespacePath, "Путь к namespace не задан"); + this.caPath = Objects.requireNonNull(caPath, "Путь к ServiceAccount CA не задан"); + this.apiBase = normalizeApiBase(apiBase); + this.secretName = requireText(secretName, "Имя tenant Secret не задано"); + this.objectMapper = Objects.requireNonNull(objectMapper, "ObjectMapper не задан"); + if (maxAttempts < 1) { + throw new IllegalArgumentException("Количество попыток должно быть положительным"); + } + if (retryDelay == null || retryDelay.isNegative()) { + throw new IllegalArgumentException("Задержка повтора не может быть отрицательной"); + } + this.maxAttempts = maxAttempts; + this.retryDelay = retryDelay; + this.runningInKubernetes = kubernetesEnvironment || Files.exists(tokenPath); if (!runningInKubernetes) { - log.info("Приложение запущено вне Kubernetes — обновление tenant Secret будет пропущено"); + log.info("Приложение запущено вне Kubernetes — постоянное изменение tenant Secret отключено"); } } - /** - * Сохраняет полный список тенантов в ключе {@code tenants.json} Kubernetes Secret. - * - * @return {@code true}, если Secret обновлён или приложение запущено вне Kubernetes - */ - public boolean updateTenantsConfig(List tenants) { + @Override + public TenantSecretUpdateReceipt upsertTenant(TenantConfig tenant) { + TenantConfig requested = TenantSecretUpdateReceipt.copyOf( + Objects.requireNonNull(tenant, "Конфигурация тенанта не задана") + ); + String domain = normalizeDomain(requested.getDomain()); + requested.setDomain(domain); + if (!runningInKubernetes) { - log.warn("Приложение запущено вне Kubernetes, персистенция tenant Secret пропущена"); - return true; + log.warn("Приложение запущено вне Kubernetes, постоянное добавление тенанта пропущено"); + return new TenantSecretUpdateReceipt(false, false, null, List.of(), List.of(requested)); } - try { - String token = Files.readString(tokenPath).trim(); - String namespace = Files.readString(namespacePath).trim(); - if (token.isBlank() || namespace.isBlank()) { - throw new IllegalStateException("ServiceAccount token или namespace не настроены"); + return mutate(tenants -> { + List updated = new ArrayList<>(tenants); + updated.removeIf(existing -> domain.equals(existing.getDomain())); + updated.add(requested); + return updated; + }); + } + + @Override + public TenantSecretUpdateReceipt removeTenant(String domain) { + String normalizedDomain = normalizeDomain(domain); + if (!runningInKubernetes) { + log.warn("Приложение запущено вне Kubernetes, постоянное удаление тенанта пропущено"); + return new TenantSecretUpdateReceipt(false, false, null, List.of(), List.of()); + } + + return mutate(tenants -> { + List updated = new ArrayList<>(tenants); + updated.removeIf(existing -> normalizedDomain.equals(existing.getDomain())); + return updated; + }); + } + + @Override + public TenantSecretCompensationResult compensate(TenantSecretUpdateReceipt receipt) { + Objects.requireNonNull(receipt, "Квитанция изменения tenant Secret не задана"); + if (!receipt.persisted() || !receipt.changed()) { + return TenantSecretCompensationResult.NOT_REQUIRED; + } + if (!runningInKubernetes) { + return TenantSecretCompensationResult.NOT_REQUIRED; + } + + String committedVersion = requireText( + receipt.committedResourceVersion(), + "В квитанции отсутствует resourceVersion сохранённого tenant Secret" + ); + RequestContext context = requestContext(); + TenantConfigPersistenceException lastFailure = null; + + for (int attempt = 1; attempt <= maxAttempts; attempt++) { + CurrentSecret current; + try { + current = readCurrent(context); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new TenantConfigPersistenceException("Компенсация tenant Secret прервана", e); + } catch (IOException e) { + lastFailure = persistenceFailure("Не удалось прочитать tenant Secret для компенсации", e); + if (!prepareRetry(attempt, "чтение перед компенсацией")) { + throw lastFailure; + } + continue; } - String tenantsJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(tenants); - String encodedTenants = Base64.getEncoder() - .encodeToString(tenantsJson.getBytes(StandardCharsets.UTF_8)); - String patchBody = objectMapper.writeValueAsString(Map.of( - "data", Map.of("tenants.json", encodedTenants) - )); + if (!committedVersion.equals(current.resourceVersion())) { + log.warn("Компенсация tenant Secret пропущена: после исходной операции Secret уже изменён"); + return TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE; + } + if (!sameTenants(current.tenants(), receipt.committedTenants())) { + throw new TenantConfigPersistenceException( + "Содержимое tenant Secret не соответствует resourceVersion из квитанции" + ); + } + HttpResponse response; + try { + response = putSecret(context, current, receipt.previousTenants()); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new TenantConfigPersistenceException("Компенсация tenant Secret прервана", e); + } catch (IOException e) { + TenantSecretCompensationResult reconciled = reconcileCompensation(context, receipt); + if (reconciled != null) { + return reconciled; + } + lastFailure = persistenceFailure("Не удалось подтвердить компенсацию tenant Secret", e); + if (!prepareRetry(attempt, "компенсация после сетевой ошибки")) { + throw lastFailure; + } + continue; + } + + if (isSuccess(response.statusCode())) { + TenantSecretCompensationResult confirmed = confirmCompensation( + context, + receipt, + response.body() + ); + if (confirmed != null) { + if (confirmed == TenantSecretCompensationResult.RESTORED) { + log.info("Конфигурация tenant Secret восстановлена: tenantCount={}", + receipt.previousTenants().size()); + } + return confirmed; + } + lastFailure = new TenantConfigPersistenceException( + "Kubernetes API не подтвердил содержимое после компенсации tenant Secret" + ); + if (!prepareRetry(attempt, "проверка компенсации tenant Secret")) { + throw lastFailure; + } + continue; + } + if (response.statusCode() == 409) { + log.warn("Компенсация tenant Secret пропущена: обнаружено конкурентное изменение"); + return TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE; + } + if (isRetryable(response.statusCode())) { + TenantSecretCompensationResult reconciled = reconcileCompensation(context, receipt); + if (reconciled != null) { + return reconciled; + } + lastFailure = new TenantConfigPersistenceException( + "Kubernetes API временно отклонил компенсацию tenant Secret: HTTP " + + response.statusCode() + ); + if (!prepareRetry(attempt, "компенсация tenant Secret")) { + throw lastFailure; + } + continue; + } + throw new TenantConfigPersistenceException( + "Kubernetes API отклонил компенсацию tenant Secret: HTTP " + response.statusCode() + ); + } + + throw lastFailure == null + ? new TenantConfigPersistenceException("Не удалось компенсировать tenant Secret") + : lastFailure; + } + + private TenantSecretUpdateReceipt mutate(Function, List> mutation) { + RequestContext context = requestContext(); + TenantConfigPersistenceException lastFailure = null; + + for (int attempt = 1; attempt <= maxAttempts; attempt++) { + CurrentSecret current; + try { + current = readCurrent(context); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new TenantConfigPersistenceException("Изменение tenant Secret прервано", e); + } catch (IOException e) { + lastFailure = persistenceFailure("Не удалось прочитать актуальный tenant Secret", e); + if (!prepareRetry(attempt, "чтение tenant Secret")) { + throw lastFailure; + } + continue; + } + + List previous = normalizeTenants(current.tenants()); + List committed = normalizeTenants(mutation.apply(previous)); + if (sameTenants(previous, committed)) { + return new TenantSecretUpdateReceipt( + true, + false, + current.resourceVersion(), + previous, + committed + ); + } + + HttpResponse response; + try { + response = putSecret(context, current, committed); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new TenantConfigPersistenceException("Изменение tenant Secret прервано", e); + } catch (IOException e) { + TenantSecretUpdateReceipt reconciled = reconcileMutation(context, previous, committed); + if (reconciled != null) { + return reconciled; + } + lastFailure = persistenceFailure("Не удалось подтвердить изменение tenant Secret", e); + if (!prepareRetry(attempt, "изменение после сетевой ошибки")) { + throw lastFailure; + } + continue; + } + + if (isSuccess(response.statusCode())) { + TenantSecretUpdateReceipt confirmed = confirmMutation( + context, + current, + previous, + committed, + response.body() + ); + if (confirmed != null) { + log.info("Tenant Secret атомарно изменён: tenantCount={}", committed.size()); + return confirmed; + } + throw new TenantConfigPersistenceException( + "Kubernetes API не подтвердил сохранённое содержимое tenant Secret" + ); + } + + if (response.statusCode() == 409) { + lastFailure = new TenantConfigPersistenceException( + "Исчерпаны попытки изменения tenant Secret из-за конкурентных обновлений" + ); + if (!prepareRetry(attempt, "конфликт resourceVersion")) { + throw lastFailure; + } + continue; + } + + if (isRetryable(response.statusCode())) { + TenantSecretUpdateReceipt reconciled = reconcileMutation(context, previous, committed); + if (reconciled != null) { + return reconciled; + } + lastFailure = new TenantConfigPersistenceException( + "Kubernetes API временно отклонил изменение tenant Secret: HTTP " + + response.statusCode() + ); + if (!prepareRetry(attempt, "изменение tenant Secret")) { + throw lastFailure; + } + continue; + } + + throw new TenantConfigPersistenceException( + "Kubernetes API отклонил изменение tenant Secret: HTTP " + response.statusCode() + ); + } + + throw lastFailure == null + ? new TenantConfigPersistenceException("Не удалось изменить tenant Secret") + : lastFailure; + } + + private CurrentSecret readCurrent(RequestContext context) throws IOException, InterruptedException { + HttpRequest request = requestBuilder(context) + .GET() + .build(); + HttpResponse response = secureClient().send( + request, + HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8) + ); + if (response.statusCode() == 200) { + return parseSecret(response.body()); + } + if (isRetryable(response.statusCode())) { + throw new RetryableApiException( + "Kubernetes API временно не вернул tenant Secret: HTTP " + response.statusCode() + ); + } + throw new TenantConfigPersistenceException( + "Kubernetes API не вернул tenant Secret: HTTP " + response.statusCode() + ); + } + + private HttpResponse putSecret(RequestContext context, + CurrentSecret current, + List tenants) + throws IOException, InterruptedException { + ObjectNode body = current.secret().deepCopy(); + ObjectNode metadata = objectNode(body, "metadata"); + metadata.put("resourceVersion", current.resourceVersion()); + ObjectNode data = objectNode(body, "data"); + data.put("tenants.json", encodeTenants(tenants)); + + HttpRequest request = requestBuilder(context) + .header("Content-Type", "application/json") + .PUT(HttpRequest.BodyPublishers.ofString(objectMapper.writeValueAsString(body))) + .build(); + return secureClient().send( + request, + HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8) + ); + } + + private TenantSecretUpdateReceipt reconcileMutation(RequestContext context, + List previous, + List committed) { + try { + CurrentSecret observed = readCurrent(context); + if (sameTenants(observed.tenants(), committed)) { + log.info("Изменение tenant Secret подтверждено повторным чтением: tenantCount={}", + committed.size()); + return new TenantSecretUpdateReceipt( + true, + false, + observed.resourceVersion(), + previous, + observed.tenants() + ); + } + return null; + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new TenantConfigPersistenceException("Проверка изменения tenant Secret прервана", e); + } catch (IOException e) { + log.warn("Не удалось подтвердить состояние tenant Secret повторным чтением"); + return null; + } + } + + private TenantSecretUpdateReceipt confirmMutation(RequestContext context, + CurrentSecret previousSecret, + List previous, + List committed, + String responseBody) { + try { + CurrentSecret confirmed = parseSecret(responseBody); + if (sameTenants(confirmed.tenants(), committed) + && !Objects.equals(confirmed.resourceVersion(), previousSecret.resourceVersion())) { + return new TenantSecretUpdateReceipt( + true, + true, + confirmed.resourceVersion(), + previous, + confirmed.tenants() + ); + } + log.warn("Ответ Kubernetes API после изменения tenant Secret не совпал с ожидаемым состоянием"); + } catch (TenantConfigPersistenceException invalidResponse) { + log.warn("Kubernetes API вернул неполный ответ после изменения tenant Secret, выполняется повторное чтение"); + log.debug("Технические детали неполного ответа tenant Secret", invalidResponse); + } + return reconcileMutation(context, previous, committed); + } + + private TenantSecretCompensationResult confirmCompensation(RequestContext context, + TenantSecretUpdateReceipt receipt, + String responseBody) { + try { + CurrentSecret confirmed = parseSecret(responseBody); + if (sameTenants(confirmed.tenants(), receipt.previousTenants())) { + return TenantSecretCompensationResult.RESTORED; + } + log.warn("Ответ Kubernetes API после компенсации tenant Secret не совпал с ожидаемым состоянием"); + } catch (TenantConfigPersistenceException invalidResponse) { + log.warn("Kubernetes API вернул неполный ответ после компенсации tenant Secret, выполняется повторное чтение"); + log.debug("Технические детали неполного ответа компенсации tenant Secret", invalidResponse); + } + return reconcileCompensation(context, receipt); + } + + private TenantSecretCompensationResult reconcileCompensation(RequestContext context, + TenantSecretUpdateReceipt receipt) { + try { + CurrentSecret observed = readCurrent(context); + if (sameTenants(observed.tenants(), receipt.previousTenants())) { + log.info("Компенсация tenant Secret подтверждена повторным чтением"); + return TenantSecretCompensationResult.RESTORED; + } + if (!Objects.equals(observed.resourceVersion(), receipt.committedResourceVersion())) { + log.warn("Компенсация tenant Secret остановлена из-за конкурентного изменения"); + return TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE; + } + return null; + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new TenantConfigPersistenceException("Проверка компенсации tenant Secret прервана", e); + } catch (IOException e) { + log.warn("Не удалось подтвердить компенсацию tenant Secret повторным чтением"); + return null; + } + } + + private CurrentSecret parseSecret(String responseBody) { + try { + JsonNode root = objectMapper.readTree(responseBody); + if (!(root instanceof ObjectNode secret)) { + throw new TenantConfigPersistenceException("Kubernetes API вернул некорректный tenant Secret"); + } + String resourceVersion = requireText( + root.path("metadata").path("resourceVersion").asText(null), + "В tenant Secret отсутствует metadata.resourceVersion" + ); + JsonNode data = root.path("data"); + if (!data.isObject() || !data.hasNonNull("tenants.json")) { + throw new TenantConfigPersistenceException( + "В tenant Secret отсутствует обязательный ключ data.tenants.json" + ); + } + String encoded = requireText( + data.path("tenants.json").asText(null), + "В tenant Secret ключ data.tenants.json не содержит конфигурацию" + ); + byte[] decoded = Base64.getDecoder().decode(encoded); + List tenants = objectMapper.readValue(decoded, TENANT_LIST_TYPE); + return new CurrentSecret(secret, resourceVersion, normalizeTenants(tenants)); + } catch (TenantConfigPersistenceException e) { + throw e; + } catch (Exception e) { + throw new TenantConfigPersistenceException( + "Не удалось разобрать конфигурацию из tenant Secret", + e + ); + } + } + + private List normalizeTenants(List tenants) { + if (tenants == null) { + throw new TenantConfigPersistenceException("Список конфигураций в tenant Secret не задан"); + } + List normalized = new ArrayList<>(tenants.size()); + Set domains = new HashSet<>(); + for (TenantConfig source : tenants) { + TenantConfig tenant = TenantSecretUpdateReceipt.copyOf( + Objects.requireNonNull(source, "В tenant Secret обнаружена пустая конфигурация") + ); + String domain = normalizeDomain(tenant.getDomain()); + tenant.setDomain(domain); + if (!domains.add(domain)) { + throw new TenantConfigPersistenceException( + "В tenant Secret обнаружены повторяющиеся домены" + ); + } + normalized.add(tenant); + } + normalized.sort(Comparator.comparing(TenantConfig::getDomain)); + return List.copyOf(normalized); + } + + private boolean sameTenants(List first, List second) { + List left = normalizeTenants(first); + List right = normalizeTenants(second); + if (left.size() != right.size()) { + return false; + } + for (int i = 0; i < left.size(); i++) { + if (!sameTenant(left.get(i), right.get(i))) { + return false; + } + } + return true; + } + + private boolean sameTenant(TenantConfig first, TenantConfig second) { + return Objects.equals(first.getName(), second.getName()) + && Objects.equals(first.getDomain(), second.getDomain()) + && Objects.equals(first.getUrl(), second.getUrl()) + && Objects.equals(first.getUsername(), second.getUsername()) + && Objects.equals(first.getPassword(), second.getPassword()); + } + + private RequestContext requestContext() { + try { + String token = requireText( + Files.readString(tokenPath).trim(), + "ServiceAccount token не настроен" + ); + String namespace = requireText( + Files.readString(namespacePath).trim(), + "ServiceAccount namespace не настроен" + ); URI uri = URI.create(String.format( "%s/api/v1/namespaces/%s/secrets/%s", apiBase, namespace, secretName )); - HttpRequest request = HttpRequest.newBuilder() - .uri(uri) - .header("Authorization", "Bearer " + token) - .header("Content-Type", "application/strategic-merge-patch+json") - .method("PATCH", HttpRequest.BodyPublishers.ofString(patchBody)) - .build(); - - HttpResponse response = createSecureClient(caPath) - .send(request, HttpResponse.BodyHandlers.discarding()); - if (response.statusCode() == 200) { - log.info("Tenant Secret успешно обновлён: tenantCount={}", tenants.size()); - return true; - } - - log.error("Kubernetes API отклонил обновление tenant Secret: httpStatus={}", response.statusCode()); - return false; - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - log.error("Обновление tenant Secret прервано"); - log.debug("Технические детали прерывания tenant Secret", e); - return false; + return new RequestContext(token, uri); + } catch (TenantConfigPersistenceException e) { + throw e; } catch (Exception e) { - log.error("Не удалось безопасно обновить tenant Secret: errorType={}", - e.getClass().getSimpleName()); - log.debug("Технические детали ошибки tenant Secret", e); - return false; + throw new TenantConfigPersistenceException( + "Не удалось прочитать параметры ServiceAccount для tenant Secret", + e + ); } } + private HttpRequest.Builder requestBuilder(RequestContext context) { + return HttpRequest.newBuilder() + .uri(context.uri()) + .timeout(REQUEST_TIMEOUT) + .header("Authorization", "Bearer " + context.token()) + .header("Accept", "application/json"); + } + + private synchronized HttpClient secureClient() { + if (httpClient == null) { + try { + httpClient = createSecureClient(caPath); + } catch (Exception e) { + throw new TenantConfigPersistenceException( + "Не удалось настроить защищённое соединение с Kubernetes API", + e + ); + } + } + return httpClient; + } + HttpClient createSecureClient(Path serviceAccountCaPath) throws Exception { CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); Collection certificates; @@ -171,8 +691,102 @@ public class KubernetesTenantSecretUpdater { sslParameters.setEndpointIdentificationAlgorithm("HTTPS"); return HttpClient.newBuilder() + .connectTimeout(CONNECT_TIMEOUT) .sslContext(sslContext) .sslParameters(sslParameters) .build(); } + + private boolean prepareRetry(int attempt, String operation) { + if (attempt >= maxAttempts) { + return false; + } + log.warn("Временная ошибка tenant Secret, операция будет повторена: операция={}, попытка={}/{}", + operation, + attempt, + maxAttempts); + try { + long delayMillis = Math.multiplyExact(retryDelay.toMillis(), attempt); + if (delayMillis > 0) { + Thread.sleep(delayMillis); + } + return true; + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new TenantConfigPersistenceException("Ожидание повтора tenant Secret прервано", e); + } catch (ArithmeticException e) { + throw new TenantConfigPersistenceException("Некорректная задержка повтора tenant Secret", e); + } + } + + private String encodeTenants(List tenants) throws IOException { + String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(tenants); + return Base64.getEncoder().encodeToString(json.getBytes(StandardCharsets.UTF_8)); + } + + private ObjectNode objectNode(ObjectNode parent, String fieldName) { + JsonNode existing = parent.get(fieldName); + if (existing instanceof ObjectNode objectNode) { + return objectNode; + } + ObjectNode created = objectMapper.createObjectNode(); + parent.set(fieldName, created); + return created; + } + + private static boolean isSuccess(int statusCode) { + return statusCode >= 200 && statusCode < 300; + } + + private static boolean isRetryable(int statusCode) { + return statusCode == 408 || statusCode == 409 || statusCode == 429 || statusCode >= 500; + } + + private static boolean detectKubernetesEnvironment(Path tokenPath) { + String kubernetesServiceHost = System.getenv("KUBERNETES_SERVICE_HOST"); + return (tokenPath != null && Files.exists(tokenPath)) + || (kubernetesServiceHost != null && !kubernetesServiceHost.isBlank()); + } + + private static String requireText(String value, String message) { + if (value == null || value.isBlank()) { + throw new TenantConfigPersistenceException(message); + } + return value.trim(); + } + + private static String normalizeDomain(String value) { + String domain = requireText(value, "Домен тенанта не задан").toLowerCase(Locale.ROOT); + if (!DOMAIN_PATTERN.matcher(domain).matches()) { + throw new TenantConfigPersistenceException("Домен тенанта содержит недопустимые символы"); + } + return domain; + } + + private static String normalizeApiBase(String apiBase) { + String normalized = requireText(apiBase, "Адрес Kubernetes API не задан"); + return normalized.endsWith("/") + ? normalized.substring(0, normalized.length() - 1) + : normalized; + } + + private static TenantConfigPersistenceException persistenceFailure(String message, Exception cause) { + return cause instanceof TenantConfigPersistenceException persistenceException + ? persistenceException + : new TenantConfigPersistenceException(message, cause); + } + + private record RequestContext(String token, URI uri) { + } + + private record CurrentSecret(ObjectNode secret, + String resourceVersion, + List tenants) { + } + + private static final class RetryableApiException extends IOException { + private RetryableApiException(String message) { + super(message); + } + } } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigPersistenceException.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigPersistenceException.java new file mode 100644 index 0000000..c53ba0d --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigPersistenceException.java @@ -0,0 +1,15 @@ +package com.magistr.app.config.tenant; + +/** + * Ошибка безопасного чтения или изменения постоянной конфигурации тенантов. + */ +public class TenantConfigPersistenceException extends RuntimeException { + + public TenantConfigPersistenceException(String message) { + super(message); + } + + public TenantConfigPersistenceException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigStore.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigStore.java new file mode 100644 index 0000000..1392120 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigStore.java @@ -0,0 +1,13 @@ +package com.magistr.app.config.tenant; + +/** + * Хранилище конфигурации тенантов с защитой от потерянных конкурентных обновлений. + */ +public interface TenantConfigStore { + + TenantSecretUpdateReceipt upsertTenant(TenantConfig tenant); + + TenantSecretUpdateReceipt removeTenant(String domain); + + TenantSecretCompensationResult compensate(TenantSecretUpdateReceipt receipt); +} diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java index a22539d..7d067ac 100755 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java @@ -2,6 +2,7 @@ package com.magistr.app.config.tenant; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.magistr.app.config.tenant.health.TenantReadinessRegistry; import com.magistr.app.service.TenantLifecycleService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,16 +30,23 @@ public class TenantConfigWatcher { private static final Logger log = LoggerFactory.getLogger(TenantConfigWatcher.class); private final TenantLifecycleService tenantLifecycleService; + private final TenantReadinessRegistry readinessRegistry; private final ObjectMapper objectMapper = new ObjectMapper(); @Value("${app.tenants.config-path:tenants.json}") private String tenantsConfigPath; + @Value("${app.tenants.config-required:false}") + private boolean tenantsConfigRequired; + // Хеш последнего прочитанного конфига — чтобы не перезагружать зря private String lastConfigHash = ""; + private boolean configurationUnavailable; - public TenantConfigWatcher(TenantLifecycleService tenantLifecycleService) { + public TenantConfigWatcher(TenantLifecycleService tenantLifecycleService, + TenantReadinessRegistry readinessRegistry) { this.tenantLifecycleService = tenantLifecycleService; + this.readinessRegistry = readinessRegistry; } /** @@ -52,12 +60,21 @@ public class TenantConfigWatcher { private void watchForChangesSerialized() { try { File file = new File(tenantsConfigPath); - if (!file.exists()) return; + if (!file.exists()) { + if (tenantsConfigRequired) { + readinessRegistry.markConfigurationFailure(); + if (!configurationUnavailable) { + log.error("Обязательный файл конфигурации тенантов недоступен"); + } + configurationUnavailable = true; + } + return; + } String content = new String(java.nio.file.Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8); String hash = configHash(content); - if (hash.equals(lastConfigHash)) { + if (hash.equals(lastConfigHash) && !configurationUnavailable) { return; // Ничего не изменилось } @@ -65,8 +82,11 @@ public class TenantConfigWatcher { List newTenants = objectMapper.readValue(content, new TypeReference<>() {}); syncTenants(newTenants); lastConfigHash = hash; + configurationUnavailable = false; } catch (Exception e) { + readinessRegistry.markConfigurationFailure(); + configurationUnavailable = true; log.error("Ошибка при проверке конфига тенантов: errorType={}", e.getClass().getSimpleName()); log.debug("Технические детали синхронизации конфига тенантов", e); } @@ -85,8 +105,13 @@ public class TenantConfigWatcher { if (file.exists()) { String content = new String(java.nio.file.Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8); lastConfigHash = configHash(content); + } else if (tenantsConfigRequired) { + readinessRegistry.markConfigurationFailure(); + configurationUnavailable = true; } } catch (Exception e) { + readinessRegistry.markConfigurationFailure(); + configurationUnavailable = true; log.warn("Не удалось обновить хеш конфига тенантов: errorType={}", e.getClass().getSimpleName()); log.debug("Технические детали обновления хеша тенантов", e); diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java index 134cc03..24059db 100755 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java @@ -2,6 +2,7 @@ package com.magistr.app.config.tenant; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.magistr.app.config.tenant.health.TenantReadinessRegistry; import com.magistr.app.service.TenantDatabaseMigrationService; import com.zaxxer.hikari.HikariDataSource; import org.slf4j.Logger; @@ -18,13 +19,12 @@ import org.springframework.transaction.PlatformTransactionManager; import jakarta.persistence.EntityManagerFactory; import javax.sql.DataSource; import java.io.File; -import java.io.IOException; import java.sql.Connection; import java.util.*; /** * Конфигурация мультитенантного DataSource. - * Загружает тенанты из JSON-файла (mounted ConfigMap). + * Загружает тенанты из JSON-файла (смонтированный Kubernetes Secret). * * Если нет ни одного настроенного тенанта — создаёт H2 in-memory БД * как заглушку, чтобы Spring JPA мог инициализироваться. @@ -37,6 +37,9 @@ public class TenantDataSourceConfig { @Value("${app.tenants.config-path:tenants.json}") private String tenantsConfigPath; + @Value("${app.tenants.config-required:false}") + private boolean tenantsConfigRequired; + @Value("${spring.datasource.url:}") private String defaultDbUrl; @@ -48,11 +51,13 @@ public class TenantDataSourceConfig { @Bean @Primary - public DataSource dataSource(TenantDatabaseMigrationService migrationService) { + public DataSource dataSource(TenantDatabaseMigrationService migrationService, + TenantReadinessRegistry readinessRegistry) { TenantRoutingDataSource routingDataSource = new TenantRoutingDataSource(); - // Загружаем тенантов из JSON (read-only ConfigMap mount) - List tenants = loadTenantsFromFile(); + // Загружаем тенантов из JSON (read-only Secret mount) + TenantConfigLoadResult loadResult = loadTenantsFromFile(); + List tenants = new ArrayList<>(loadResult.tenants()); // Если нет тенантов и есть дефолтный datasource — создаём "default" тенант if (tenants.isEmpty() && defaultDbUrl != null && !defaultDbUrl.isBlank()) { @@ -63,9 +68,15 @@ public class TenantDataSourceConfig { log.info("Конфигурация тенантов отсутствует, используется default DataSource"); } + readinessRegistry.clearConfigurationFailure(); + readinessRegistry.replaceDesired(tenants); + if (loadResult.failed() || (tenantsConfigRequired && loadResult.tenants().isEmpty())) { + readinessRegistry.markConfigurationFailure(); + } + // Регистрируем тенантов for (TenantConfig tenant : tenants) { - registerPreparedTenant(routingDataSource, migrationService, tenant); + registerPreparedTenant(routingDataSource, migrationService, readinessRegistry, tenant, true); } // Если всё ещё нет ни одного тенанта — H2 in-memory заглушка @@ -79,7 +90,13 @@ public class TenantDataSourceConfig { "jdbc:h2:mem:placeholder;DB_CLOSE_DELAY=-1", "sa", "" ); - if (!registerPreparedTenant(routingDataSource, migrationService, h2Fallback)) { + if (!registerPreparedTenant( + routingDataSource, + migrationService, + readinessRegistry, + h2Fallback, + false + )) { throw new IllegalStateException("Не удалось создать резервный H2 DataSource"); } } @@ -118,31 +135,43 @@ public class TenantDataSourceConfig { return new JpaTransactionManager(emf); } - private List loadTenantsFromFile() { + private TenantConfigLoadResult loadTenantsFromFile() { File file = new File(tenantsConfigPath); if (!file.exists()) { - log.info("Файл конфигурации тенантов не найден"); - return new ArrayList<>(); + if (tenantsConfigRequired) { + log.error("Обязательный файл конфигурации тенантов не найден"); + } else { + log.info("Файл конфигурации тенантов не найден"); + } + return new TenantConfigLoadResult(List.of(), tenantsConfigRequired); } try { ObjectMapper mapper = new ObjectMapper(); List list = mapper.readValue(file, new TypeReference<>() {}); + if (list == null) { + throw new IllegalArgumentException("Корневое значение конфигурации тенантов должно быть массивом"); + } log.info("Загружено конфигураций тенантов: {}", list.size()); - return list; - } catch (IOException e) { + return new TenantConfigLoadResult(List.copyOf(list), false); + } catch (Exception e) { log.error("Не удалось прочитать конфигурацию тенантов: errorType={}", e.getClass().getSimpleName()); log.debug("Технические детали чтения конфигурации тенантов", e); - return new ArrayList<>(); + return new TenantConfigLoadResult(List.of(), true); } } private boolean registerPreparedTenant(TenantRoutingDataSource routingDataSource, TenantDatabaseMigrationService migrationService, - TenantConfig tenant) { + TenantReadinessRegistry readinessRegistry, + TenantConfig tenant, + boolean requiredForReadiness) { HikariDataSource candidate = null; boolean activated = false; + if (requiredForReadiness) { + readinessRegistry.markMigrationStarted(tenant); + } try { candidate = routingDataSource.prepareTenantDataSource(tenant); try (Connection connection = candidate.getConnection()) { @@ -155,10 +184,17 @@ public class TenantDataSourceConfig { } TenantRoutingDataSource.TenantState previous = routingDataSource.swapTenant(tenant, candidate); activated = true; + if (requiredForReadiness) { + readinessRegistry.markMigrationSucceeded(tenant); + readinessRegistry.markConnectivity(tenant.getDomain(), true); + } closeDataSource(previous == null ? null : previous.dataSource()); log.info("Tenant-БД '{}' проверена и активирована", tenant.getDomain()); return true; } catch (Exception startupFailure) { + if (requiredForReadiness) { + readinessRegistry.markMigrationFailed(tenant); + } log.error("Не удалось безопасно активировать tenant-БД '{}': errorType={}", tenant.getDomain(), startupFailure.getClass().getSimpleName()); log.debug("Технические детали startup lifecycle tenant-БД", startupFailure); @@ -181,4 +217,7 @@ public class TenantDataSourceConfig { } } } + + private record TenantConfigLoadResult(List tenants, boolean failed) { + } } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantSecretCompensationResult.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantSecretCompensationResult.java new file mode 100644 index 0000000..c16d42a --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantSecretCompensationResult.java @@ -0,0 +1,10 @@ +package com.magistr.app.config.tenant; + +/** + * Результат компенсирующего изменения конфигурации тенантов. + */ +public enum TenantSecretCompensationResult { + RESTORED, + NOT_REQUIRED, + SKIPPED_CONCURRENT_CHANGE +} diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantSecretUpdateReceipt.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantSecretUpdateReceipt.java new file mode 100644 index 0000000..852ccab --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantSecretUpdateReceipt.java @@ -0,0 +1,95 @@ +package com.magistr.app.config.tenant; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; + +/** + * Квитанция об атомарном изменении tenant Secret. + * + *

Снимки конфигурации копируются глубоко и сортируются по домену. Это позволяет + * безопасно использовать квитанцию для компенсации и проверки ожидаемого состояния.

+ */ +public final class TenantSecretUpdateReceipt { + + private static final Comparator BY_DOMAIN = Comparator.comparing( + TenantConfig::getDomain, + Comparator.nullsFirst(String::compareTo) + ); + + private final boolean persisted; + private final boolean changed; + private final String committedResourceVersion; + private final List previousTenants; + private final List committedTenants; + + public TenantSecretUpdateReceipt(boolean persisted, + boolean changed, + String committedResourceVersion, + List previousTenants, + List committedTenants) { + this.persisted = persisted; + this.changed = changed; + this.committedResourceVersion = committedResourceVersion; + this.previousTenants = copyAndSort(previousTenants); + this.committedTenants = copyAndSort(committedTenants); + } + + public boolean persisted() { + return persisted; + } + + /** + * Возвращает {@code true}, только если хранилище доказало владение подтверждённой + * записанной версией. После неоднозначного результата повторное чтение может подтвердить + * целевое состояние, но оставляет этот признак {@code false}, чтобы запретить опасную + * автоматическую компенсацию. + */ + public boolean changed() { + return changed; + } + + public String committedResourceVersion() { + return committedResourceVersion; + } + + public List previousTenants() { + return copyAndSort(previousTenants); + } + + public List committedTenants() { + return copyAndSort(committedTenants); + } + + static List copyAndSort(List tenants) { + Objects.requireNonNull(tenants, "Список конфигураций тенантов не задан"); + List result = new ArrayList<>(tenants.size()); + for (TenantConfig tenant : tenants) { + result.add(copyOf(Objects.requireNonNull(tenant, "Конфигурация тенанта не задана"))); + } + result.sort(BY_DOMAIN); + return List.copyOf(result); + } + + static TenantConfig copyOf(TenantConfig source) { + return new TenantConfig( + source.getName(), + source.getDomain(), + source.getUrl(), + source.getUsername(), + source.getPassword() + ); + } + + @Override + public String toString() { + return "TenantSecretUpdateReceipt{" + + "persisted=" + persisted + + ", changed=" + changed + + ", committedResourceVersion='" + committedResourceVersion + '\'' + + ", previousTenantCount=" + previousTenants.size() + + ", committedTenantCount=" + committedTenants.size() + + '}'; + } +} diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java index 2473306..c2d445c 100644 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantWebMvcConfig.java @@ -27,7 +27,9 @@ public class TenantWebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(tenantInterceptor()).addPathPatterns("/**"); + registry.addInterceptor(tenantInterceptor()) + .addPathPatterns("/**") + .excludePathPatterns("/actuator/**"); registry.addInterceptor(authorizationInterceptor).addPathPatterns("/api/**"); } } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitor.java b/backend/src/main/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitor.java new file mode 100644 index 0000000..9b8b281 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitor.java @@ -0,0 +1,218 @@ +package com.magistr.app.config.tenant.health; + +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import jakarta.annotation.PreDestroy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Фоновая проверка доступности tenant-БД с ограниченным числом параллельных задач. + */ +@Component +public class TenantDatabaseHealthMonitor { + + private static final Logger log = LoggerFactory.getLogger(TenantDatabaseHealthMonitor.class); + + private final TenantReadinessRegistry registry; + private final TenantRoutingDataSource routingDataSource; + private final int parallelism; + private final Duration checkTimeout; + private final Duration maxStaleness; + private final Clock clock; + private final ExecutorService executor; + private final AtomicBoolean refreshInProgress = new AtomicBoolean(false); + + public TenantDatabaseHealthMonitor( + TenantReadinessRegistry registry, + TenantRoutingDataSource routingDataSource, + @Value("${app.health.tenant-database.parallelism:4}") int parallelism, + @Value("${app.health.tenant-database.check-timeout-ms:6000}") long checkTimeoutMillis, + @Value("${app.health.tenant-database.max-staleness-ms:30000}") long maxStalenessMillis) { + this(registry, routingDataSource, parallelism, + Duration.ofMillis(checkTimeoutMillis), + Duration.ofMillis(maxStalenessMillis), + Clock.systemUTC()); + } + + public TenantDatabaseHealthMonitor(TenantReadinessRegistry registry, + TenantRoutingDataSource routingDataSource, + int parallelism, + Duration checkTimeout, + Duration maxStaleness, + Clock clock) { + this.registry = Objects.requireNonNull(registry, "Реестр готовности обязателен"); + this.routingDataSource = Objects.requireNonNull(routingDataSource, "Маршрутизатор tenant-БД обязателен"); + if (parallelism < 1 || parallelism > 32) { + throw new IllegalArgumentException("Параллелизм проверки должен быть от 1 до 32"); + } + this.parallelism = parallelism; + this.checkTimeout = requirePositive(checkTimeout, "Таймаут проверки должен быть положительным"); + this.maxStaleness = requirePositive(maxStaleness, "Максимальный возраст проверки должен быть положительным"); + this.clock = Objects.requireNonNull(clock, "Часы монитора обязательны"); + this.executor = Executors.newFixedThreadPool(parallelism, new HealthThreadFactory()); + } + + @Scheduled( + fixedDelayString = "${app.health.tenant-database.interval-ms:10000}", + initialDelayString = "${app.health.tenant-database.initial-delay-ms:1000}") + public void refreshScheduled() { + refreshNow(); + } + + /** + * Выполняет немедленный проход. Одновременно может выполняться только один проход. + */ + public RefreshSummary refreshNow() { + if (!refreshInProgress.compareAndSet(false, true)) { + return new RefreshSummary(0, 0, 0, true); + } + + try { + List targets = registry.connectivityTargets(); + int available = 0; + int unavailable = 0; + + for (int offset = 0; offset < targets.size(); offset += parallelism) { + int end = Math.min(offset + parallelism, targets.size()); + List batch = targets.subList(offset, end); + List> checks = new ArrayList<>(batch.size()); + + for (TenantReadinessRegistry.ConnectivityTarget target : batch) { + checks.add(() -> check(target)); + } + + List> futures; + try { + futures = executor.invokeAll(checks, checkTimeout.toNanos(), TimeUnit.NANOSECONDS); + } catch (InterruptedException interrupted) { + Thread.currentThread().interrupt(); + Instant interruptedAt = clock.instant(); + log.warn("Пакетная проверка tenant-БД была прервана"); + for (int remaining = offset; remaining < targets.size(); remaining++) { + TenantReadinessRegistry.ConnectivityTarget target = targets.get(remaining); + if (registry.markConnectivity( + target.domain(), target.fingerprint(), false, interruptedAt)) { + unavailable++; + } + } + return new RefreshSummary(targets.size(), available, unavailable, false); + } + + for (int index = 0; index < batch.size(); index++) { + TenantReadinessRegistry.ConnectivityTarget target = batch.get(index); + CheckResult result = completedResult(target, futures.get(index)); + boolean applied = registry.markConnectivity( + target.domain(), target.fingerprint(), result.connected(), result.checkedAt()); + if (applied && result.connected()) { + available++; + } else if (applied) { + unavailable++; + } + } + } + + return new RefreshSummary(targets.size(), available, unavailable, false); + } finally { + refreshInProgress.set(false); + } + } + + public Duration maxStaleness() { + return maxStaleness; + } + + public int parallelism() { + return parallelism; + } + + @PreDestroy + public void close() { + executor.shutdownNow(); + } + + private CheckResult check(TenantReadinessRegistry.ConnectivityTarget target) { + try { + boolean connected = routingDataSource.testConnection(target.domain()); + return new CheckResult(connected, clock.instant()); + } catch (RuntimeException checkFailure) { + log.warn("Проверка tenant-БД '{}' завершилась ошибкой: errorType={}", + target.domain(), checkFailure.getClass().getSimpleName()); + log.debug("Технические детали фоновой проверки tenant-БД", checkFailure); + return new CheckResult(false, clock.instant()); + } + } + + private CheckResult completedResult(TenantReadinessRegistry.ConnectivityTarget target, + Future future) { + if (future.isCancelled()) { + log.warn("Проверка tenant-БД '{}' превысила допустимое время", target.domain()); + return new CheckResult(false, clock.instant()); + } + + try { + return future.get(); + } catch (InterruptedException interrupted) { + Thread.currentThread().interrupt(); + future.cancel(true); + log.warn("Проверка tenant-БД '{}' была прервана", target.domain()); + return new CheckResult(false, clock.instant()); + } catch (ExecutionException failure) { + log.warn("Не удалось проверить tenant-БД '{}': errorType={}", + target.domain(), failure.getCause() == null + ? failure.getClass().getSimpleName() + : failure.getCause().getClass().getSimpleName()); + return new CheckResult(false, clock.instant()); + } + } + + private Duration requirePositive(Duration value, String message) { + Objects.requireNonNull(value, message); + if (value.isNegative() || value.isZero()) { + throw new IllegalArgumentException(message); + } + return value; + } + + public record RefreshSummary(int requested, + int available, + int unavailable, + boolean skipped) { + } + + private record CheckResult(boolean connected, Instant checkedAt) { + private CheckResult { + Objects.requireNonNull(checkedAt, "Время завершения проверки tenant-БД обязательно"); + } + } + + private static final class HealthThreadFactory implements ThreadFactory { + private final AtomicInteger sequence = new AtomicInteger(); + + @Override + public Thread newThread(Runnable task) { + Thread thread = new Thread(task, + "проверка-готовности-tenant-бд-" + sequence.incrementAndGet()); + thread.setDaemon(true); + return thread; + } + } +} diff --git a/backend/src/main/java/com/magistr/app/config/tenant/health/TenantReadinessHealthIndicator.java b/backend/src/main/java/com/magistr/app/config/tenant/health/TenantReadinessHealthIndicator.java new file mode 100644 index 0000000..c21b384 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/tenant/health/TenantReadinessHealthIndicator.java @@ -0,0 +1,38 @@ +package com.magistr.app.config.tenant.health; + +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +/** + * Агрегированный индикатор readiness без раскрытия доменов и реквизитов tenant-БД. + */ +@Component("tenantReadiness") +public class TenantReadinessHealthIndicator implements HealthIndicator { + + private final TenantReadinessRegistry registry; + private final TenantDatabaseHealthMonitor monitor; + + public TenantReadinessHealthIndicator(TenantReadinessRegistry registry, + TenantDatabaseHealthMonitor monitor) { + this.registry = Objects.requireNonNull(registry, "Реестр готовности обязателен"); + this.monitor = Objects.requireNonNull(monitor, "Монитор tenant-БД обязателен"); + } + + @Override + public Health health() { + return readiness().ready() + ? Health.up().build() + : Health.down().build(); + } + + public TenantReadinessRegistry.AggregateReadiness readiness() { + return registry.aggregate(monitor.maxStaleness()); + } + + public boolean isReady() { + return readiness().ready(); + } +} diff --git a/backend/src/main/java/com/magistr/app/config/tenant/health/TenantReadinessRegistry.java b/backend/src/main/java/com/magistr/app/config/tenant/health/TenantReadinessRegistry.java new file mode 100644 index 0000000..f29bb0e --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/tenant/health/TenantReadinessRegistry.java @@ -0,0 +1,461 @@ +package com.magistr.app.config.tenant.health; + +import com.magistr.app.config.tenant.TenantConfig; +import org.springframework.stereotype.Component; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import java.security.SecureRandom; +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.UnaryOperator; +import java.util.regex.Pattern; + +/** + * Потокобезопасный реестр готовности обязательных tenant-БД. + * + *

Каждое изменение публикуется единым неизменяемым снимком. Результат фоновой + * проверки соединения привязан к непрозрачному fingerprint конфигурации, поэтому + * запоздалый результат для старых реквизитов не изменит состояние новой конфигурации.

+ */ +@Component +public class TenantReadinessRegistry { + + private static final String FINGERPRINT_ALGORITHM = "HmacSHA256"; + private static final Pattern DOMAIN_PATTERN = Pattern.compile( + "[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?" + ); + + private final AtomicReference state = new AtomicReference<>(RegistryState.empty()); + private final Clock clock; + private final byte[] fingerprintKey; + + public TenantReadinessRegistry() { + this(Clock.systemUTC(), randomFingerprintKey()); + } + + TenantReadinessRegistry(Clock clock, byte[] fingerprintKey) { + this.clock = Objects.requireNonNull(clock, "Часы реестра готовности обязательны"); + if (fingerprintKey == null || fingerprintKey.length < 16) { + throw new IllegalArgumentException("Ключ fingerprint должен содержать не менее 16 байт"); + } + this.fingerprintKey = fingerprintKey.clone(); + } + + /** + * Полностью заменяет список обязательных конфигураций. + * Состояние неизменившегося tenant сохраняется, изменившегося — сбрасывается. + */ + public void replaceDesired(List desired) { + boolean missingDesired = desired == null; + List safeDesired = desired == null ? List.of() : new ArrayList<>(desired); + mutate(current -> { + Map replacement = new LinkedHashMap<>(); + boolean invalidConfiguration = missingDesired; + + for (TenantConfig config : safeDesired) { + NormalizedConfig normalized = normalize(config); + if (normalized == null || replacement.containsKey(normalized.domain())) { + invalidConfiguration = true; + continue; + } + + String fingerprint = fingerprint(normalized); + TenantStatus previous = current.tenants().get(normalized.domain()); + if (previous != null && previous.fingerprint().equals(fingerprint)) { + replacement.put(normalized.domain(), previous); + } else { + replacement.put(normalized.domain(), TenantStatus.pending( + normalized.domain(), fingerprint, normalized.h2Placeholder(), clock.instant())); + } + } + + return new RegistryState(replacement, + current.configurationFailure() || invalidConfiguration); + }); + } + + /** Удаляет tenant из обязательного набора. */ + public void removeDesired(String domain) { + String normalizedDomain = normalizeDomain(domain); + mutate(current -> { + if (!current.tenants().containsKey(normalizedDomain)) { + return current; + } + Map updated = new LinkedHashMap<>(current.tenants()); + updated.remove(normalizedDomain); + return new RegistryState(updated, current.configurationFailure()); + }); + } + + public void markMigrationStarted(TenantConfig config) { + updateByConfig(config, MigrationState.IN_PROGRESS, ConnectivityState.UNKNOWN); + } + + public void markMigrationSucceeded(TenantConfig config) { + updateByConfig(config, MigrationState.SUCCEEDED, ConnectivityState.UNKNOWN); + } + + public void markMigrationFailed(TenantConfig config) { + updateByConfig(config, MigrationState.FAILED, ConnectivityState.UNKNOWN); + } + + public void markMigrationStarted(String domain) { + updateExisting(domain, MigrationState.IN_PROGRESS, ConnectivityState.UNKNOWN); + } + + public void markMigrationSucceeded(String domain) { + updateExisting(domain, MigrationState.SUCCEEDED, ConnectivityState.UNKNOWN); + } + + public void markMigrationFailed(String domain) { + updateExisting(domain, MigrationState.FAILED, ConnectivityState.UNKNOWN); + } + + /** + * Сохраняет результат проверки текущей конфигурации tenant. + */ + public boolean markConnectivity(String domain, boolean connected) { + String normalizedDomain = normalizeDomain(domain); + TenantStatus current = state.get().tenants().get(normalizedDomain); + if (current == null) { + return false; + } + return markConnectivity(normalizedDomain, current.fingerprint(), connected, clock.instant()); + } + + /** + * Сохраняет результат только если fingerprint всё ещё соответствует проверенной конфигурации. + */ + public boolean markConnectivity(String domain, + String expectedFingerprint, + boolean connected, + Instant checkedAt) { + String normalizedDomain = normalizeDomain(domain); + Objects.requireNonNull(expectedFingerprint, "Fingerprint проверяемой конфигурации обязателен"); + Objects.requireNonNull(checkedAt, "Время проверки соединения обязательно"); + + AtomicReference applied = new AtomicReference<>(false); + mutate(current -> { + applied.set(false); + TenantStatus previous = current.tenants().get(normalizedDomain); + if (previous == null || !previous.fingerprint().equals(expectedFingerprint) + || previous.migrationState() != MigrationState.SUCCEEDED + || previous.h2Placeholder()) { + return current; + } + + if (previous.connectivityCheckedAt() != null + && checkedAt.isBefore(previous.connectivityCheckedAt())) { + return current; + } + + Map updated = new LinkedHashMap<>(current.tenants()); + updated.put(normalizedDomain, previous.withConnectivity( + connected ? ConnectivityState.AVAILABLE : ConnectivityState.UNAVAILABLE, + checkedAt, + clock.instant())); + applied.set(true); + return new RegistryState(updated, current.configurationFailure()); + }); + return applied.get(); + } + + /** Отмечает ошибку чтения или разбора общей конфигурации без сохранения её текста. */ + public void markConfigurationFailure() { + mutate(current -> new RegistryState(current.tenants(), true)); + } + + public void clearConfigurationFailure() { + mutate(current -> new RegistryState(current.tenants(), false)); + } + + /** Возвращает безопасные задания для фоновой проверки соединений. */ + public List connectivityTargets() { + List targets = new ArrayList<>(); + state.get().tenants().values().stream() + .filter(status -> status.migrationState() == MigrationState.SUCCEEDED) + .filter(status -> !status.h2Placeholder()) + .forEach(status -> targets.add(new ConnectivityTarget(status.domain(), status.fingerprint()))); + return List.copyOf(targets); + } + + /** Формирует агрегированную готовность на текущий момент. */ + public AggregateReadiness aggregate(Duration maxStaleness) { + Objects.requireNonNull(maxStaleness, "Максимальный возраст проверки обязателен"); + if (maxStaleness.isNegative() || maxStaleness.isZero()) { + throw new IllegalArgumentException("Максимальный возраст проверки должен быть положительным"); + } + + RegistryState snapshot = state.get(); + Instant assessedAt = clock.instant(); + Instant oldestAllowed = assessedAt.minus(maxStaleness); + int ready = 0; + int migrationFailures = 0; + int migrationPending = 0; + int staleConnectivity = 0; + int unavailableConnectivity = 0; + int unsupported = 0; + + for (TenantStatus status : snapshot.tenants().values()) { + if (status.h2Placeholder()) { + unsupported++; + continue; + } + if (status.migrationState() == MigrationState.FAILED) { + migrationFailures++; + continue; + } + if (status.migrationState() != MigrationState.SUCCEEDED) { + migrationPending++; + continue; + } + if (status.connectivityCheckedAt() == null + || status.connectivityCheckedAt().isBefore(oldestAllowed)) { + staleConnectivity++; + continue; + } + if (status.connectivityState() != ConnectivityState.AVAILABLE) { + unavailableConnectivity++; + continue; + } + ready++; + } + + int desiredCount = snapshot.tenants().size(); + boolean isReady = !snapshot.configurationFailure() + && desiredCount > 0 + && unsupported == 0 + && ready == desiredCount; + return new AggregateReadiness( + isReady, + isReady ? "ГОТОВ" : "НЕ ГОТОВ", + desiredCount, + ready, + desiredCount - ready, + migrationPending, + migrationFailures, + unavailableConnectivity, + staleConnectivity, + unsupported, + snapshot.configurationFailure(), + assessedAt + ); + } + + /** Неизменяемый диагностический снимок для внутренних тестов и интеграции. */ + public Map snapshot() { + return state.get().tenants(); + } + + private void updateByConfig(TenantConfig config, + MigrationState migrationState, + ConnectivityState connectivityState) { + NormalizedConfig normalized = normalize(config); + if (normalized == null) { + markConfigurationFailure(); + return; + } + String fingerprint = fingerprint(normalized); + mutate(current -> { + TenantStatus previous = current.tenants().get(normalized.domain()); + TenantStatus base = previous != null && previous.fingerprint().equals(fingerprint) + ? previous + : TenantStatus.pending(normalized.domain(), fingerprint, normalized.h2Placeholder(), clock.instant()); + Map updated = new LinkedHashMap<>(current.tenants()); + updated.put(normalized.domain(), base.withMigration(migrationState, connectivityState, clock.instant())); + return new RegistryState(updated, current.configurationFailure()); + }); + } + + private void updateExisting(String domain, + MigrationState migrationState, + ConnectivityState connectivityState) { + String normalizedDomain = normalizeDomain(domain); + mutate(current -> { + TenantStatus previous = current.tenants().get(normalizedDomain); + if (previous == null) { + return current; + } + Map updated = new LinkedHashMap<>(current.tenants()); + updated.put(normalizedDomain, previous.withMigration(migrationState, connectivityState, clock.instant())); + return new RegistryState(updated, current.configurationFailure()); + }); + } + + private void mutate(UnaryOperator mutation) { + RegistryState current; + RegistryState updated; + do { + current = state.get(); + updated = Objects.requireNonNull(mutation.apply(current), "Новое состояние реестра обязательно"); + if (updated == current) { + return; + } + } while (!state.compareAndSet(current, updated)); + } + + private NormalizedConfig normalize(TenantConfig config) { + if (config == null || config.getDomain() == null || config.getDomain().isBlank() + || config.getUrl() == null || config.getUrl().isBlank()) { + return null; + } + String domain = config.getDomain().trim().toLowerCase(Locale.ROOT); + String url = config.getUrl().trim(); + if (!DOMAIN_PATTERN.matcher(domain).matches()) { + return null; + } + String name = config.getName() == null || config.getName().isBlank() + ? domain + : config.getName().trim(); + return new NormalizedConfig( + name, + domain, + url, + config.getUsername(), + config.getPassword(), + url.startsWith("jdbc:h2:") + ); + } + + private String normalizeDomain(String domain) { + if (domain == null || domain.isBlank()) { + throw new IllegalArgumentException("Домен tenant не может быть пустым"); + } + return domain.trim().toLowerCase(Locale.ROOT); + } + + private String fingerprint(NormalizedConfig normalized) { + try { + Mac mac = Mac.getInstance(FINGERPRINT_ALGORITHM); + mac.init(new SecretKeySpec(fingerprintKey, FINGERPRINT_ALGORITHM)); + updateFingerprint(mac, normalized.name()); + updateFingerprint(mac, normalized.domain()); + updateFingerprint(mac, normalized.url()); + updateFingerprint(mac, normalized.username()); + updateFingerprint(mac, normalized.password()); + return Base64.getUrlEncoder().withoutPadding().encodeToString(mac.doFinal()); + } catch (GeneralSecurityException cryptoFailure) { + throw new IllegalStateException("Не удалось сформировать безопасный fingerprint конфигурации", cryptoFailure); + } + } + + private void updateFingerprint(Mac mac, String value) { + byte[] bytes = value == null ? new byte[0] : value.getBytes(StandardCharsets.UTF_8); + mac.update(ByteBuffer.allocate(Integer.BYTES).putInt(bytes.length).array()); + mac.update(bytes); + } + + private static byte[] randomFingerprintKey() { + byte[] key = new byte[32]; + new SecureRandom().nextBytes(key); + return key; + } + + public enum MigrationState { + PENDING, + IN_PROGRESS, + SUCCEEDED, + FAILED + } + + public enum ConnectivityState { + UNKNOWN, + AVAILABLE, + UNAVAILABLE + } + + public record ConnectivityTarget(String domain, String fingerprint) { + public ConnectivityTarget { + Objects.requireNonNull(domain, "Домен проверки обязателен"); + Objects.requireNonNull(fingerprint, "Fingerprint проверки обязателен"); + } + } + + public record TenantStatus(String domain, + String fingerprint, + MigrationState migrationState, + ConnectivityState connectivityState, + Instant connectivityCheckedAt, + boolean h2Placeholder, + Instant changedAt) { + public TenantStatus { + Objects.requireNonNull(domain, "Домен состояния обязателен"); + Objects.requireNonNull(fingerprint, "Fingerprint состояния обязателен"); + Objects.requireNonNull(migrationState, "Состояние миграции обязательно"); + Objects.requireNonNull(connectivityState, "Состояние соединения обязательно"); + Objects.requireNonNull(changedAt, "Время изменения состояния обязательно"); + } + + private static TenantStatus pending(String domain, + String fingerprint, + boolean h2Placeholder, + Instant changedAt) { + return new TenantStatus(domain, fingerprint, MigrationState.PENDING, + ConnectivityState.UNKNOWN, null, h2Placeholder, changedAt); + } + + private TenantStatus withMigration(MigrationState newMigrationState, + ConnectivityState newConnectivityState, + Instant now) { + return new TenantStatus(domain, fingerprint, newMigrationState, + newConnectivityState, null, h2Placeholder, now); + } + + private TenantStatus withConnectivity(ConnectivityState newConnectivityState, + Instant checkedAt, + Instant now) { + return new TenantStatus(domain, fingerprint, migrationState, + newConnectivityState, checkedAt, h2Placeholder, now); + } + } + + public record AggregateReadiness(boolean ready, + String status, + int desiredTenants, + int readyTenants, + int unavailableTenants, + int pendingMigrations, + int failedMigrations, + int unavailableConnections, + int staleConnections, + int unsupportedTenants, + boolean configurationFailure, + Instant assessedAt) { + public AggregateReadiness { + Objects.requireNonNull(status, "Текст готовности обязателен"); + Objects.requireNonNull(assessedAt, "Время оценки готовности обязательно"); + } + } + + private record NormalizedConfig(String name, + String domain, + String url, + String username, + String password, + boolean h2Placeholder) { + } + + private record RegistryState(Map tenants, boolean configurationFailure) { + private RegistryState { + tenants = Collections.unmodifiableMap(new LinkedHashMap<>(tenants)); + } + + private static RegistryState empty() { + return new RegistryState(Map.of(), false); + } + } +} diff --git a/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java b/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java index ed3c26f..4de1592 100644 --- a/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java +++ b/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java @@ -1,8 +1,12 @@ package com.magistr.app.service; -import com.magistr.app.config.tenant.KubernetesTenantSecretUpdater; import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantConfigPersistenceException; +import com.magistr.app.config.tenant.TenantConfigStore; import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.magistr.app.config.tenant.TenantSecretCompensationResult; +import com.magistr.app.config.tenant.TenantSecretUpdateReceipt; +import com.magistr.app.config.tenant.health.TenantReadinessRegistry; import com.zaxxer.hikari.HikariDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,18 +35,21 @@ public class TenantLifecycleService { ); private final TenantRoutingDataSource routingDataSource; - private final KubernetesTenantSecretUpdater tenantSecretUpdater; + private final TenantConfigStore tenantConfigStore; private final TenantDatabaseMigrationService migrationService; private final RetiredTenantPoolService retiredPoolService; + private final TenantReadinessRegistry readinessRegistry; public TenantLifecycleService(TenantRoutingDataSource routingDataSource, - KubernetesTenantSecretUpdater tenantSecretUpdater, + TenantConfigStore tenantConfigStore, TenantDatabaseMigrationService migrationService, - RetiredTenantPoolService retiredPoolService) { + RetiredTenantPoolService retiredPoolService, + TenantReadinessRegistry readinessRegistry) { this.routingDataSource = routingDataSource; - this.tenantSecretUpdater = tenantSecretUpdater; + this.tenantConfigStore = tenantConfigStore; this.migrationService = migrationService; this.retiredPoolService = retiredPoolService; + this.readinessRegistry = readinessRegistry; } /** @@ -76,16 +83,17 @@ public class TenantLifecycleService { candidate = prepareCandidate(config); verifyConnection(candidate); migrateCandidate(candidate); - persistDesiredWithCompensation(desiredConfigs, oldConfigs); + TenantSecretUpdateReceipt receipt = persistUpsert(config); TenantRoutingDataSource.TenantState previous; try { previous = routingDataSource.swapTenant(config, candidate); } catch (RuntimeException activationFailure) { - throw activationFailureAfterCompensation(oldConfigs, activationFailure); + throw activationFailureAfterCompensation(receipt, activationFailure); } activated = true; + publishSuccessfulMutation(receipt, sortedConfigs(desiredConfigs), config); retireDataSource(previous == null ? null : previous.dataSource()); log.info("Lifecycle тенанта '{}' успешно применён", config.getDomain()); return copyConfig(config); @@ -109,7 +117,7 @@ public class TenantLifecycleService { Map desiredConfigs = new LinkedHashMap<>(oldConfigs); desiredConfigs.remove(domain); - persistDesiredWithCompensation(desiredConfigs, oldConfigs); + TenantSecretUpdateReceipt receipt = persistRemove(domain); TenantRoutingDataSource.TenantState removed; try { @@ -118,9 +126,10 @@ public class TenantLifecycleService { throw new IllegalStateException("Локальное состояние тенанта отсутствует"); } } catch (RuntimeException removalFailure) { - throw removalFailureAfterCompensation(oldConfigs, removalFailure); + throw removalFailureAfterCompensation(receipt, removalFailure); } + publishSuccessfulMutation(receipt, sortedConfigs(desiredConfigs), null); retireDataSource(removed.dataSource()); log.info("Lifecycle тенанта '{}' удалён", domain); return copyConfig(existing); @@ -142,6 +151,12 @@ public class TenantLifecycleService { .map(TenantConfig::getDomain) .collect(Collectors.toSet()); + readinessRegistry.clearConfigurationFailure(); + readinessRegistry.replaceDesired(configs); + if (desiredDomains.size() != configs.size()) { + throw new IllegalArgumentException("Конфигурация содержит повторяющиеся домены тенантов"); + } + for (TenantConfig config : configs) { if (!routingDataSource.hasTenant(config.getDomain())) { log.info("Активируем нового тенанта '{}' из persisted-конфигурации", config.getDomain()); @@ -162,13 +177,19 @@ public class TenantLifecycleService { private void activatePersistedConfig(TenantConfig config) { HikariDataSource candidate = null; boolean activated = false; + readinessRegistry.markMigrationStarted(config); try { candidate = prepareCandidate(config); verifyConnection(candidate); migrateCandidate(candidate); TenantRoutingDataSource.TenantState previous = routingDataSource.swapTenant(config, candidate); activated = true; + readinessRegistry.markMigrationSucceeded(config); + readinessRegistry.markConnectivity(config.getDomain(), true); retireDataSource(previous == null ? null : previous.dataSource()); + } catch (RuntimeException activationFailure) { + readinessRegistry.markMigrationFailed(config); + throw activationFailure; } finally { if (!activated) { closeCandidateDataSource(candidate); @@ -208,63 +229,117 @@ public class TenantLifecycleService { } } - private void persistDesired(Map desiredConfigs) { - boolean persisted; + private TenantSecretUpdateReceipt persistUpsert(TenantConfig config) { try { - persisted = tenantSecretUpdater.updateTenantsConfig(sortedConfigs(desiredConfigs)); + return requireReceipt(tenantConfigStore.upsertTenant(copyConfig(config))); + } catch (TenantConfigPersistenceException persistenceFailure) { + logTechnicalFailure("Персистенция tenant Secret завершилась ошибкой", persistenceFailure); + throw new TenantLifecycleException(persistenceFailure.getMessage(), persistenceFailure); } catch (RuntimeException persistenceFailure) { logTechnicalFailure("Персистенция tenant Secret завершилась ошибкой", persistenceFailure); throw new TenantLifecycleException("Не удалось сохранить конфигурацию тенантов", persistenceFailure); } - if (!persisted) { - throw new TenantLifecycleException("Не удалось сохранить конфигурацию тенантов"); - } } - private void persistDesiredWithCompensation(Map desiredConfigs, - Map oldConfigs) { + private TenantSecretUpdateReceipt persistRemove(String domain) { try { - persistDesired(desiredConfigs); - } catch (TenantLifecycleException persistenceFailure) { - boolean restored = restorePersistedSnapshot(oldConfigs); - String message = restored - ? "Не удалось сохранить конфигурацию тенантов; прежняя конфигурация восстановлена" - : "Не удалось сохранить конфигурацию тенантов; требуется проверить tenant Secret"; - throw new TenantLifecycleException(message, persistenceFailure); + return requireReceipt(tenantConfigStore.removeTenant(domain)); + } catch (TenantConfigPersistenceException persistenceFailure) { + logTechnicalFailure("Персистенция tenant Secret завершилась ошибкой", persistenceFailure); + throw new TenantLifecycleException(persistenceFailure.getMessage(), persistenceFailure); + } catch (RuntimeException persistenceFailure) { + logTechnicalFailure("Персистенция tenant Secret завершилась ошибкой", persistenceFailure); + throw new TenantLifecycleException("Не удалось сохранить конфигурацию тенантов", persistenceFailure); } } - private TenantLifecycleException activationFailureAfterCompensation(Map oldConfigs, - RuntimeException activationFailure) { - boolean restored = restorePersistedSnapshot(oldConfigs); + private TenantSecretUpdateReceipt requireReceipt(TenantSecretUpdateReceipt receipt) { + if (receipt == null) { + throw new TenantConfigPersistenceException("Хранилище конфигурации тенантов не подтвердило операцию"); + } + return receipt; + } + + private TenantLifecycleException activationFailureAfterCompensation(TenantSecretUpdateReceipt receipt, + RuntimeException activationFailure) { + TenantSecretCompensationResult compensation = compensate(receipt); logTechnicalFailure("Активация подготовленного tenant pool завершилась ошибкой", activationFailure); - String message = restored - ? "Не удалось активировать подключение тенанта; сохранённая конфигурация восстановлена" - : "Не удалось активировать подключение тенанта; требуется проверить tenant Secret"; + String message = compensationMessage( + "Не удалось активировать подключение тенанта", + compensation + ); return new TenantLifecycleException(message, activationFailure); } - private TenantLifecycleException removalFailureAfterCompensation(Map oldConfigs, - RuntimeException removalFailure) { - boolean restored = restorePersistedSnapshot(oldConfigs); + private TenantLifecycleException removalFailureAfterCompensation(TenantSecretUpdateReceipt receipt, + RuntimeException removalFailure) { + TenantSecretCompensationResult compensation = compensate(receipt); logTechnicalFailure("Локальное удаление тенанта завершилось ошибкой", removalFailure); - String message = restored - ? "Не удалось отключить тенанта; сохранённая конфигурация восстановлена" - : "Не удалось отключить тенанта; требуется проверить tenant Secret"; + String message = compensationMessage("Не удалось отключить тенанта", compensation); return new TenantLifecycleException(message, removalFailure); } - private boolean restorePersistedSnapshot(Map oldConfigs) { + private TenantSecretCompensationResult compensate(TenantSecretUpdateReceipt receipt) { try { - boolean restored = tenantSecretUpdater.updateTenantsConfig(sortedConfigs(oldConfigs)); - if (!restored) { - log.error("Не удалось компенсирующе восстановить tenant Secret"); + TenantSecretCompensationResult result = tenantConfigStore.compensate(receipt); + if (result == null) { + readinessRegistry.markConfigurationFailure(); + log.error("Хранилище конфигурации не вернуло результат компенсации tenant Secret"); + return null; } - return restored; + if (result == TenantSecretCompensationResult.RESTORED && receipt.persisted()) { + readinessRegistry.clearConfigurationFailure(); + readinessRegistry.replaceDesired(receipt.previousTenants()); + } + if (result == TenantSecretCompensationResult.NOT_REQUIRED && receipt.persisted()) { + readinessRegistry.replaceDesired(receipt.committedTenants()); + } + if (result == TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE + || (result == TenantSecretCompensationResult.NOT_REQUIRED && receipt.persisted())) { + readinessRegistry.markConfigurationFailure(); + } + return result; } catch (RuntimeException compensationFailure) { + readinessRegistry.markConfigurationFailure(); logTechnicalFailure("Компенсирующее восстановление tenant Secret завершилось ошибкой", compensationFailure); - return false; + return null; + } + } + + private String compensationMessage(String prefix, TenantSecretCompensationResult result) { + if (result == TenantSecretCompensationResult.RESTORED) { + return prefix + "; сохранённая конфигурация восстановлена"; + } + if (result == TenantSecretCompensationResult.NOT_REQUIRED) { + return prefix + "; tenant Secret не требовал восстановления"; + } + if (result == TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE) { + return prefix + "; tenant Secret уже изменён другим экземпляром, автоматический откат пропущен"; + } + return prefix + "; требуется проверить tenant Secret"; + } + + private void publishSuccessfulMutation(TenantSecretUpdateReceipt receipt, + List localDesired, + TenantConfig migratedConfig) { + try { + List canonicalDesired = receipt.persisted() + ? receipt.committedTenants() + : localDesired.stream() + .filter(config -> !isH2Placeholder(config)) + .toList(); + if (receipt.persisted()) { + readinessRegistry.clearConfigurationFailure(); + } + readinessRegistry.replaceDesired(canonicalDesired); + if (migratedConfig != null) { + readinessRegistry.markMigrationSucceeded(migratedConfig); + readinessRegistry.markConnectivity(migratedConfig.getDomain(), true); + } + } catch (RuntimeException healthFailure) { + readinessRegistry.markConfigurationFailure(); + logTechnicalFailure("Не удалось обновить состояние readiness после tenant lifecycle", healthFailure); } } @@ -277,6 +352,13 @@ public class TenantLifecycleService { return sorted; } + private boolean isH2Placeholder(TenantConfig config) { + return config != null + && "H2 Placeholder".equals(config.getName()) + && config.getUrl() != null + && config.getUrl().trim().startsWith("jdbc:h2:mem:placeholder"); + } + private TenantConfig validateAndNormalize(TenantConfig config) { if (config == null) { throw new IllegalArgumentException("Конфигурация тенанта обязательна"); diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 9ceec05..b87931a 100755 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -13,6 +13,19 @@ spring.jpa.open-in-view=false # Мультитенантность app.tenants.config-path=${TENANTS_CONFIG_PATH:tenants.json} +app.tenants.config-required=${TENANTS_CONFIG_REQUIRED:false} + +# Служебные liveness/readiness probes для Kubernetes +management.endpoints.web.exposure.include=health +management.endpoint.health.probes.enabled=true +management.endpoint.health.group.liveness.include=livenessState +management.endpoint.health.group.readiness.include=readinessState,tenantReadiness +management.endpoint.health.show-details=never +management.endpoint.health.show-components=never +management.health.db.enabled=false + +# Фоновая проверка БД не должна задерживать watcher tenant Secret +spring.task.scheduling.pool.size=2 # JWT авторизация app.jwt.secret=${JWT_SECRET:} diff --git a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java index 039b53c..ea5e02b 100644 --- a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java @@ -39,7 +39,10 @@ import static org.assertj.core.api.Assertions.assertThat; @Testcontainers @SpringBootTest( classes = RefreshTokenServiceConcurrencyIntegrationTest.TestApplication.class, - properties = "app.jwt.refresh-ttl=7d" + properties = { + "app.jwt.refresh-ttl=7d", + "management.endpoint.health.validate-group-membership=false" + } ) class RefreshTokenServiceConcurrencyIntegrationTest { diff --git a/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java b/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java index afea29b..2db3531 100644 --- a/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java +++ b/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java @@ -1,7 +1,10 @@ package com.magistr.app.config.tenant; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import okhttp3.mockwebserver.Dispatcher; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; import okhttp3.mockwebserver.RecordedRequest; @@ -13,50 +16,440 @@ import org.junit.jupiter.api.io.TempDir; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; +import java.time.Duration; +import java.util.ArrayList; import java.util.Base64; import java.util.List; import java.util.UUID; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; class KubernetesTenantSecretUpdaterTest { + private static final TypeReference> TENANT_LIST_TYPE = new TypeReference<>() { + }; + private final ObjectMapper objectMapper = new ObjectMapper(); @TempDir Path tempDirectory; @Test - void updatesSecretThroughTrustedCaWithoutSendingPlainTenantJson() throws Exception { + void readsCurrentSecretAndUsesConditionalPutWithoutPlainCredentials() throws Exception { HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); HeldCertificate serverCertificate = serverCertificate(ca, "localhost"); + TenantConfig tenant = tenant("Тестовый университет", "test", "пароль-" + UUID.randomUUID()); try (MockWebServer server = httpsServer(serverCertificate)) { - server.enqueue(new MockResponse().setResponseCode(200)); - TestFiles files = testFiles(ca); - String rawPassword = UUID.randomUUID().toString(); - TenantConfig tenant = new TenantConfig("Университет", "test", "jdbc:test", "user", rawPassword); - KubernetesTenantSecretUpdater updater = updater(files, server); + server.enqueue(secretResponse("17", List.of())); + server.enqueue(secretResponse("18", List.of(tenant))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server); - boolean updated = updater.updateTenantsConfig(List.of(tenant)); + TenantSecretUpdateReceipt receipt = updater.upsertTenant(tenant); - assertThat(updated).isTrue(); - RecordedRequest request = server.takeRequest(2, TimeUnit.SECONDS); - assertThat(request).isNotNull(); - assertThat(request.getPath()).isEqualTo("/api/v1/namespaces/magistr/secrets/tenants-secret"); - String body = request.getBody().readUtf8(); - assertThat(body).doesNotContain(rawPassword); + assertThat(receipt.persisted()).isTrue(); + assertThat(receipt.changed()).isTrue(); + assertThat(receipt.committedResourceVersion()).isEqualTo("18"); + assertThat(domains(receipt.previousTenants())).isEmpty(); + assertThat(domains(receipt.committedTenants())).containsExactly("test"); - JsonNode patch = objectMapper.readTree(body); - String decoded = new String( - Base64.getDecoder().decode(patch.path("data").path("tenants.json").asText()), - StandardCharsets.UTF_8 - ); - assertThat(decoded).contains("\"domain\" : \"test\""); + RecordedRequest get = server.takeRequest(2, TimeUnit.SECONDS); + RecordedRequest put = server.takeRequest(2, TimeUnit.SECONDS); + assertThat(get).isNotNull(); + assertThat(get.getMethod()).isEqualTo("GET"); + assertThat(get.getPath()).isEqualTo("/api/v1/namespaces/magistr/secrets/tenants-secret"); + assertThat(get.getHeader("Authorization")).isEqualTo("Bearer test-service-account-token"); + + assertThat(put).isNotNull(); + assertThat(put.getMethod()).isEqualTo("PUT"); + assertThat(put.getHeader("Content-Type")).startsWith("application/json"); + String body = put.getBody().readUtf8(); + assertThat(body).doesNotContain(tenant.getPassword()); + JsonNode update = objectMapper.readTree(body); + assertThat(update.path("metadata").path("resourceVersion").asText()).isEqualTo("17"); + assertThat(update.path("data").path("other.key").asText()).isEqualTo("cHJlc2VydmU="); + assertThat(domains(decodeTenants(update))).containsExactly("test"); } } + @Test + void skipsPutWhenUpsertIsIdempotent() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig tenant = tenant("Университет", "same", "секрет"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("5", List.of(tenant))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(tenant); + + assertThat(receipt.persisted()).isTrue(); + assertThat(receipt.changed()).isFalse(); + assertThat(receipt.committedResourceVersion()).isEqualTo("5"); + assertThat(server.getRequestCount()).isEqualTo(1); + } + } + + @Test + void removeTenantKeepsOtherCurrentTenants() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("7", List.of(alpha, beta))); + server.enqueue(secretResponse("8", List.of(beta))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server); + + TenantSecretUpdateReceipt receipt = updater.removeTenant("alpha"); + + assertThat(receipt.changed()).isTrue(); + assertThat(domains(receipt.previousTenants())).containsExactly("alpha", "beta"); + assertThat(domains(receipt.committedTenants())).containsExactly("beta"); + server.takeRequest(2, TimeUnit.SECONDS); + RecordedRequest put = server.takeRequest(2, TimeUnit.SECONDS); + assertThat(domains(decodeTenants(objectMapper.readTree(put.getBody().readUtf8())))) + .containsExactly("beta"); + } + } + + @Test + void retriesConflictAgainstFreshResourceVersion() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("1", List.of())); + server.enqueue(new MockResponse().setResponseCode(409)); + server.enqueue(secretResponse("2", List.of(alpha))); + server.enqueue(secretResponse("3", List.of(alpha, beta))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(beta); + + assertThat(receipt.committedResourceVersion()).isEqualTo("3"); + assertThat(domains(receipt.previousTenants())).containsExactly("alpha"); + assertThat(domains(receipt.committedTenants())).containsExactly("alpha", "beta"); + assertThat(server.getRequestCount()).isEqualTo(4); + + server.takeRequest(2, TimeUnit.SECONDS); + server.takeRequest(2, TimeUnit.SECONDS); + server.takeRequest(2, TimeUnit.SECONDS); + RecordedRequest finalPut = server.takeRequest(2, TimeUnit.SECONDS); + JsonNode body = objectMapper.readTree(finalPut.getBody().readUtf8()); + assertThat(body.path("metadata").path("resourceVersion").asText()).isEqualTo("2"); + assertThat(domains(decodeTenants(body))).containsExactly("alpha", "beta"); + } + } + + @Test + void stopsAfterBoundedNumberOfConflicts() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + for (int attempt = 1; attempt <= 3; attempt++) { + server.enqueue(secretResponse(String.valueOf(attempt), List.of())); + server.enqueue(new MockResponse().setResponseCode(409)); + } + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + assertThatThrownBy(() -> updater.upsertTenant(tenant("Тест", "test", "секрет"))) + .isInstanceOf(TenantConfigPersistenceException.class) + .hasMessageContaining("конкурентных"); + assertThat(server.getRequestCount()).isEqualTo(6); + } + } + + @Test + void reconcilesRetryablePutResponseWithoutCreatingUnsafeCompensationReceipt() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("20", List.of(alpha))); + server.enqueue(new MockResponse().setResponseCode(503)); + server.enqueue(secretResponse("21", List.of(alpha, beta))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(beta); + + assertThat(receipt.changed()).isFalse(); + assertThat(receipt.committedResourceVersion()).isEqualTo("21"); + assertThat(domains(receipt.committedTenants())).containsExactly("alpha", "beta"); + assertThat(updater.compensate(receipt)) + .isEqualTo(TenantSecretCompensationResult.NOT_REQUIRED); + assertThat(server.getRequestCount()).isEqualTo(3); + } + } + + @Test + void reconcilesRequestTimeoutWithoutCreatingUnsafeCompensationReceipt() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("24", List.of(alpha))); + server.enqueue(new MockResponse().setResponseCode(408)); + server.enqueue(secretResponse("25", List.of(alpha, beta))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(beta); + + assertThat(receipt.persisted()).isTrue(); + assertThat(receipt.changed()).isFalse(); + assertThat(receipt.committedResourceVersion()).isEqualTo("25"); + assertThat(domains(receipt.committedTenants())).containsExactly("alpha", "beta"); + assertThat(server.getRequestCount()).isEqualTo(3); + } + } + + @Test + void rejectsSuccessfulMutationResponseWithDifferentTenantContent() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + TenantConfig gamma = tenant("Гамма", "gamma", "секрет-c"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("26", List.of(alpha))); + server.enqueue(secretResponse("27", List.of(alpha, gamma))); + server.enqueue(secretResponse("27", List.of(alpha, gamma))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + assertThatThrownBy(() -> updater.upsertTenant(beta)) + .isInstanceOf(TenantConfigPersistenceException.class) + .hasMessageContaining("не подтвердил сохранённое содержимое"); + assertThat(server.getRequestCount()).isEqualTo(3); + } + } + + @Test + void normalizesDomainsBeforeMergeAndRejectsCaseInsensitiveDuplicates() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig upperAlpha = tenant("Альфа", " ALPHA ", "секрет-a"); + TenantConfig lowerAlpha = tenant("Другая Альфа", "alpha", "секрет-b"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("22", List.of(upperAlpha, lowerAlpha))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + assertThatThrownBy(() -> updater.upsertTenant(tenant("Бета", "beta", "секрет-c"))) + .isInstanceOf(TenantConfigPersistenceException.class) + .hasMessageContaining("повторяющиеся домены"); + assertThat(server.getRequestCount()).isEqualTo(1); + } + } + + @Test + void failsClosedWhenTenantsKeyIsMissing() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + ObjectNode secret = objectMapper.createObjectNode(); + secret.put("apiVersion", "v1"); + secret.put("kind", "Secret"); + secret.putObject("metadata").put("resourceVersion", "23"); + secret.putObject("data"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(new MockResponse() + .setResponseCode(200) + .setHeader("Content-Type", "application/json") + .setBody(objectMapper.writeValueAsString(secret))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + assertThatThrownBy(() -> updater.upsertTenant(tenant("Бета", "beta", "секрет"))) + .isInstanceOf(TenantConfigPersistenceException.class) + .hasMessageContaining("data.tenants.json"); + assertThat(server.getRequestCount()).isEqualTo(1); + } + } + + @Test + void terminalKubernetesErrorIsNotRetried() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(new MockResponse().setResponseCode(403)); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + assertThatThrownBy(() -> updater.upsertTenant(tenant("Бета", "beta", "секрет"))) + .isInstanceOf(TenantConfigPersistenceException.class) + .hasMessageContaining("HTTP 403"); + assertThat(server.getRequestCount()).isEqualTo(1); + } + } + + @Test + void twoConcurrentUpdatersPreserveBothMutations() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + CasDispatcher dispatcher = new CasDispatcher(List.of(), true); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.setDispatcher(dispatcher); + TestFiles files = testFiles(ca); + KubernetesTenantSecretUpdater first = updater(files, server, 4, Duration.ZERO); + KubernetesTenantSecretUpdater second = updater(files, server, 4, Duration.ZERO); + ExecutorService executor = Executors.newFixedThreadPool(2); + try { + Future firstResult = + executor.submit(() -> first.upsertTenant(alpha)); + Future secondResult = + executor.submit(() -> second.upsertTenant(beta)); + + assertThat(firstResult.get(10, TimeUnit.SECONDS).changed()).isTrue(); + assertThat(secondResult.get(10, TimeUnit.SECONDS).changed()).isTrue(); + } finally { + executor.shutdownNow(); + } + + assertThat(domains(dispatcher.currentTenants())).containsExactly("alpha", "beta"); + assertThat(dispatcher.conflictCount()).isGreaterThanOrEqualTo(1); + } + } + + @Test + void compensationRestoresOnlyVersionCommittedByOperation() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("30", List.of(alpha))); + server.enqueue(secretResponse("31", List.of(alpha, beta))); + server.enqueue(secretResponse("31", List.of(alpha, beta))); + server.enqueue(secretResponse("32", List.of(alpha))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(beta); + TenantSecretCompensationResult result = updater.compensate(receipt); + + assertThat(result).isEqualTo(TenantSecretCompensationResult.RESTORED); + assertThat(server.getRequestCount()).isEqualTo(4); + server.takeRequest(2, TimeUnit.SECONDS); + server.takeRequest(2, TimeUnit.SECONDS); + server.takeRequest(2, TimeUnit.SECONDS); + RecordedRequest compensationPut = server.takeRequest(2, TimeUnit.SECONDS); + JsonNode body = objectMapper.readTree(compensationPut.getBody().readUtf8()); + assertThat(body.path("metadata").path("resourceVersion").asText()).isEqualTo("31"); + assertThat(domains(decodeTenants(body))).containsExactly("alpha"); + } + } + + @Test + void compensationDoesNotOverwriteNewerConcurrentChange() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + TenantConfig gamma = tenant("Гамма", "gamma", "секрет-c"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("40", List.of(alpha))); + server.enqueue(secretResponse("41", List.of(alpha, beta))); + server.enqueue(secretResponse("42", List.of(alpha, beta, gamma))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(beta); + TenantSecretCompensationResult result = updater.compensate(receipt); + + assertThat(result).isEqualTo(TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE); + assertThat(server.getRequestCount()).isEqualTo(3); + } + } + + @Test + void compensationDoesNotRetryAfterPutLosesResourceVersionRace() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("50", List.of(alpha))); + server.enqueue(secretResponse("51", List.of(alpha, beta))); + server.enqueue(secretResponse("51", List.of(alpha, beta))); + server.enqueue(new MockResponse().setResponseCode(409)); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(beta); + TenantSecretCompensationResult result = updater.compensate(receipt); + + assertThat(result).isEqualTo(TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE); + assertThat(server.getRequestCount()).isEqualTo(4); + } + } + + @Test + void compensationDoesNotTrustSuccessfulResponseWithDifferentTenantContent() throws Exception { + HeldCertificate ca = certificateAuthority("Доверенный тестовый CA"); + TenantConfig alpha = tenant("Альфа", "alpha", "секрет-a"); + TenantConfig beta = tenant("Бета", "beta", "секрет-b"); + TenantConfig gamma = tenant("Гамма", "gamma", "секрет-c"); + + try (MockWebServer server = httpsServer(serverCertificate(ca, "localhost"))) { + server.enqueue(secretResponse("60", List.of(alpha))); + server.enqueue(secretResponse("61", List.of(alpha, beta))); + server.enqueue(secretResponse("61", List.of(alpha, beta))); + server.enqueue(secretResponse("62", List.of(alpha, gamma))); + server.enqueue(secretResponse("62", List.of(alpha, gamma))); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 3, Duration.ZERO); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(beta); + TenantSecretCompensationResult result = updater.compensate(receipt); + + assertThat(result).isEqualTo(TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE); + assertThat(server.getRequestCount()).isEqualTo(5); + } + } + + @Test + void localModeIsNoopAndDoesNotRequireKubernetesCa() { + Path missingToken = tempDirectory.resolve("missing-token"); + KubernetesTenantSecretUpdater updater = new KubernetesTenantSecretUpdater( + missingToken, + tempDirectory.resolve("missing-namespace"), + tempDirectory.resolve("missing-ca"), + "https://localhost:1", + "tenants-secret", + objectMapper + ); + + TenantSecretUpdateReceipt receipt = updater.upsertTenant(tenant("Локальный", "local", "секрет")); + + assertThat(receipt.persisted()).isFalse(); + assertThat(receipt.changed()).isFalse(); + assertThat(updater.compensate(receipt)) + .isEqualTo(TenantSecretCompensationResult.NOT_REQUIRED); + } + + @Test + void kubernetesModeFailsClosedWhenServiceAccountTokenIsMissing() { + KubernetesTenantSecretUpdater updater = new KubernetesTenantSecretUpdater( + tempDirectory.resolve("missing-kubernetes-token"), + tempDirectory.resolve("missing-kubernetes-namespace"), + tempDirectory.resolve("missing-kubernetes-ca"), + "https://localhost:1", + "tenants-secret", + objectMapper, + 1, + Duration.ZERO, + true + ); + + assertThatThrownBy(() -> updater.upsertTenant(tenant("Тест", "test", "секрет"))) + .isInstanceOf(TenantConfigPersistenceException.class) + .hasMessageContaining("ServiceAccount"); + } + @Test void rejectsServerSignedByDifferentCa() throws Exception { HeldCertificate trustedCa = certificateAuthority("Доверенный тестовый CA"); @@ -64,10 +457,11 @@ class KubernetesTenantSecretUpdaterTest { HeldCertificate serverCertificate = serverCertificate(untrustedCa, "localhost"); try (MockWebServer server = httpsServer(serverCertificate)) { - server.enqueue(new MockResponse().setResponseCode(200)); - KubernetesTenantSecretUpdater updater = updater(testFiles(trustedCa), server); + server.enqueue(secretResponse("1", List.of())); + KubernetesTenantSecretUpdater updater = updater(testFiles(trustedCa), server, 1, Duration.ZERO); - assertThat(updater.updateTenantsConfig(List.of())).isFalse(); + assertThatThrownBy(() -> updater.upsertTenant(tenant("Тест", "test", "секрет"))) + .isInstanceOf(TenantConfigPersistenceException.class); } } @@ -77,10 +471,11 @@ class KubernetesTenantSecretUpdaterTest { HeldCertificate serverCertificate = serverCertificate(ca, "not-localhost.invalid"); try (MockWebServer server = httpsServer(serverCertificate)) { - server.enqueue(new MockResponse().setResponseCode(200)); - KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server); + server.enqueue(secretResponse("1", List.of())); + KubernetesTenantSecretUpdater updater = updater(testFiles(ca), server, 1, Duration.ZERO); - assertThat(updater.updateTenantsConfig(List.of())).isFalse(); + assertThatThrownBy(() -> updater.upsertTenant(tenant("Тест", "test", "секрет"))) + .isInstanceOf(TenantConfigPersistenceException.class); } } @@ -94,21 +489,33 @@ class KubernetesTenantSecretUpdaterTest { files.caPath(), "https://localhost:1", "tenants-secret", - objectMapper + objectMapper, + 1, + Duration.ZERO ); - assertThat(updater.updateTenantsConfig(List.of())).isFalse(); + assertThatThrownBy(() -> updater.upsertTenant(tenant("Тест", "test", "секрет"))) + .isInstanceOf(TenantConfigPersistenceException.class) + .hasMessageContaining("защищённое соединение"); } private KubernetesTenantSecretUpdater updater(TestFiles files, MockWebServer server) { - String apiBase = server.url("/").toString(); + return updater(files, server, 3, Duration.ofMillis(5)); + } + + private KubernetesTenantSecretUpdater updater(TestFiles files, + MockWebServer server, + int maxAttempts, + Duration retryDelay) { return new KubernetesTenantSecretUpdater( files.tokenPath(), files.namespacePath(), files.caPath(), - apiBase, + server.url("/").toString(), "tenants-secret", - objectMapper + objectMapper, + maxAttempts, + retryDelay ); } @@ -122,6 +529,58 @@ class KubernetesTenantSecretUpdaterTest { return new TestFiles(tokenPath, namespacePath, caPath); } + private TenantConfig tenant(String name, String domain, String password) { + return new TenantConfig( + name, + domain, + "jdbc:postgresql://db/" + domain, + "user-" + domain, + password + ); + } + + private MockResponse secretResponse(String resourceVersion, List tenants) { + return new MockResponse() + .setResponseCode(200) + .setHeader("Content-Type", "application/json") + .setBody(secretJson(resourceVersion, tenants)); + } + + private String secretJson(String resourceVersion, List tenants) { + try { + ObjectNode secret = objectMapper.createObjectNode(); + secret.put("apiVersion", "v1"); + secret.put("kind", "Secret"); + ObjectNode metadata = secret.putObject("metadata"); + metadata.put("name", "tenants-secret"); + metadata.put("namespace", "magistr"); + metadata.put("resourceVersion", resourceVersion); + ObjectNode data = secret.putObject("data"); + data.put("tenants.json", encodeTenants(tenants)); + data.put("other.key", "cHJlc2VydmU="); + return objectMapper.writeValueAsString(secret); + } catch (Exception e) { + throw new IllegalStateException(e); + } + } + + private String encodeTenants(List tenants) throws Exception { + return Base64.getEncoder().encodeToString( + objectMapper.writeValueAsBytes(tenants) + ); + } + + private List decodeTenants(JsonNode secret) throws Exception { + byte[] decoded = Base64.getDecoder().decode( + secret.path("data").path("tenants.json").asText() + ); + return objectMapper.readValue(decoded, TENANT_LIST_TYPE); + } + + private List domains(List tenants) { + return tenants.stream().map(TenantConfig::getDomain).sorted().toList(); + } + private HeldCertificate certificateAuthority(String commonName) { return new HeldCertificate.Builder() .certificateAuthority(1) @@ -149,6 +608,68 @@ class KubernetesTenantSecretUpdaterTest { return server; } + private final class CasDispatcher extends Dispatcher { + private final Object monitor = new Object(); + private final CountDownLatch firstReads; + private final AtomicInteger initialReadCount = new AtomicInteger(); + private final AtomicInteger conflicts = new AtomicInteger(); + private List currentTenants; + private int resourceVersion = 1; + + private CasDispatcher(List initialTenants, boolean synchronizeFirstReads) { + this.currentTenants = new ArrayList<>(initialTenants); + this.firstReads = synchronizeFirstReads ? new CountDownLatch(2) : null; + } + + @Override + public MockResponse dispatch(RecordedRequest request) throws InterruptedException { + if ("GET".equals(request.getMethod())) { + MockResponse snapshot; + synchronized (monitor) { + snapshot = secretResponse(String.valueOf(resourceVersion), currentTenants); + } + if (firstReads != null && initialReadCount.incrementAndGet() <= 2) { + firstReads.countDown(); + if (!firstReads.await(5, TimeUnit.SECONDS)) { + return new MockResponse().setResponseCode(500); + } + } + return snapshot; + } + + if ("PUT".equals(request.getMethod())) { + try { + JsonNode body = objectMapper.readTree(request.getBody().readUtf8()); + int expectedVersion = body.path("metadata").path("resourceVersion").asInt(-1); + List requestedTenants = decodeTenants(body); + synchronized (monitor) { + if (expectedVersion != resourceVersion) { + conflicts.incrementAndGet(); + return new MockResponse().setResponseCode(409); + } + currentTenants = new ArrayList<>(requestedTenants); + resourceVersion++; + return secretResponse(String.valueOf(resourceVersion), currentTenants); + } + } catch (Exception e) { + return new MockResponse().setResponseCode(400); + } + } + + return new MockResponse().setResponseCode(405); + } + + private List currentTenants() { + synchronized (monitor) { + return new ArrayList<>(currentTenants); + } + } + + private int conflictCount() { + return conflicts.get(); + } + } + private record TestFiles(Path tokenPath, Path namespacePath, Path caPath) { } } diff --git a/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java b/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java index 7c9409f..79349c1 100644 --- a/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java +++ b/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java @@ -1,5 +1,6 @@ package com.magistr.app.config.tenant; +import com.magistr.app.config.tenant.health.TenantReadinessRegistry; import com.magistr.app.service.RetiredTenantPoolService; import com.magistr.app.service.TenantDatabaseMigrationService; import com.magistr.app.service.TenantLifecycleService; @@ -103,11 +104,15 @@ class TenantConfigWatcherTest { TenantRoutingDataSource routingDataSource = mock(TenantRoutingDataSource.class); TenantLifecycleService lifecycleService = new TenantLifecycleService( routingDataSource, - mock(KubernetesTenantSecretUpdater.class), + mock(TenantConfigStore.class), mock(TenantDatabaseMigrationService.class), - mock(RetiredTenantPoolService.class) + mock(RetiredTenantPoolService.class), + mock(TenantReadinessRegistry.class) + ); + TenantConfigWatcher watcher = new TenantConfigWatcher( + lifecycleService, + mock(TenantReadinessRegistry.class) ); - TenantConfigWatcher watcher = new TenantConfigWatcher(lifecycleService); ReflectionTestUtils.setField(watcher, "tenantsConfigPath", configPath.toString()); CountDownLatch apiMutationReachedRefreshWindow = new CountDownLatch(1); CountDownLatch allowApiRefresh = new CountDownLatch(1); @@ -148,7 +153,10 @@ class TenantConfigWatcherTest { invocation.getArgument(0).run(); return null; }).when(lifecycleService).executeSerialized(any(Runnable.class)); - TenantConfigWatcher watcher = new TenantConfigWatcher(lifecycleService); + TenantConfigWatcher watcher = new TenantConfigWatcher( + lifecycleService, + mock(TenantReadinessRegistry.class) + ); ReflectionTestUtils.setField(watcher, "tenantsConfigPath", configPath.toString()); return watcher; } diff --git a/backend/src/test/java/com/magistr/app/config/tenant/TenantDataSourceConfigTest.java b/backend/src/test/java/com/magistr/app/config/tenant/TenantDataSourceConfigTest.java new file mode 100644 index 0000000..2392ecc --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/tenant/TenantDataSourceConfigTest.java @@ -0,0 +1,93 @@ +package com.magistr.app.config.tenant; + +import com.magistr.app.config.tenant.health.TenantReadinessRegistry; +import com.magistr.app.service.TenantDatabaseMigrationService; +import com.zaxxer.hikari.HikariDataSource; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.springframework.test.util.ReflectionTestUtils; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +class TenantDataSourceConfigTest { + + private static final Duration MAX_CONNECTIVITY_AGE = Duration.ofSeconds(30); + + @TempDir + Path tempDir; + + private final List createdDataSources = new ArrayList<>(); + + @AfterEach + void closeDataSources() { + createdDataSources.forEach(routingDataSource -> routingDataSource + .getTenantDataSource("default") + .filter(HikariDataSource.class::isInstance) + .map(HikariDataSource.class::cast) + .ifPresent(HikariDataSource::close)); + } + + @Test + @DisplayName("Обязательный отсутствующий tenants.json переводит readiness в состояние DOWN") + void requiredMissingConfigMarksConfigurationFailure() { + TenantReadinessRegistry registry = new TenantReadinessRegistry(); + + createDataSource(tempDir.resolve("missing-tenants.json"), true, registry); + + TenantReadinessRegistry.AggregateReadiness readiness = registry.aggregate(MAX_CONNECTIVITY_AGE); + assertThat(readiness.configurationFailure()).isTrue(); + assertThat(readiness.ready()).isFalse(); + } + + @Test + @DisplayName("Невалидный JSON переводит readiness в состояние DOWN") + void invalidJsonMarksConfigurationFailure() throws IOException { + Path configPath = tempDir.resolve("tenants.json"); + Files.writeString(configPath, "{невалидный-json"); + TenantReadinessRegistry registry = new TenantReadinessRegistry(); + + createDataSource(configPath, false, registry); + + TenantReadinessRegistry.AggregateReadiness readiness = registry.aggregate(MAX_CONNECTIVITY_AGE); + assertThat(readiness.configurationFailure()).isTrue(); + assertThat(readiness.ready()).isFalse(); + } + + @Test + @DisplayName("Необязательный отсутствующий tenants.json не создаёт ошибку конфигурации") + void optionalMissingConfigDoesNotMarkConfigurationFailure() { + TenantReadinessRegistry registry = new TenantReadinessRegistry(); + + createDataSource(tempDir.resolve("missing-tenants.json"), false, registry); + + TenantReadinessRegistry.AggregateReadiness readiness = registry.aggregate(MAX_CONNECTIVITY_AGE); + assertThat(readiness.configurationFailure()).isFalse(); + } + + private void createDataSource(Path configPath, + boolean configRequired, + TenantReadinessRegistry registry) { + TenantDataSourceConfig config = new TenantDataSourceConfig(); + ReflectionTestUtils.setField(config, "tenantsConfigPath", configPath.toString()); + ReflectionTestUtils.setField(config, "tenantsConfigRequired", configRequired); + ReflectionTestUtils.setField(config, "defaultDbUrl", ""); + ReflectionTestUtils.setField(config, "defaultDbUsername", ""); + ReflectionTestUtils.setField(config, "defaultDbPassword", ""); + + TenantRoutingDataSource routingDataSource = (TenantRoutingDataSource) config.dataSource( + mock(TenantDatabaseMigrationService.class), + registry + ); + createdDataSources.add(routingDataSource); + } +} diff --git a/backend/src/test/java/com/magistr/app/config/tenant/TenantWebMvcConfigTest.java b/backend/src/test/java/com/magistr/app/config/tenant/TenantWebMvcConfigTest.java new file mode 100644 index 0000000..5929e2f --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/tenant/TenantWebMvcConfigTest.java @@ -0,0 +1,41 @@ +package com.magistr.app.config.tenant; + +import com.magistr.app.config.auth.AuthorizationInterceptor; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.util.AntPathMatcher; +import org.springframework.web.servlet.handler.MappedInterceptor; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +class TenantWebMvcConfigTest { + + @Test + @DisplayName("Actuator probes исключены из проверки домена тенанта") + void actuatorProbesAreExcludedFromTenantInterceptor() { + TenantRoutingDataSource routingDataSource = mock(TenantRoutingDataSource.class); + AuthorizationInterceptor authorizationInterceptor = mock(AuthorizationInterceptor.class); + TenantWebMvcConfig config = new TenantWebMvcConfig(routingDataSource, authorizationInterceptor); + ExposedInterceptorRegistry registry = new ExposedInterceptorRegistry(); + + config.addInterceptors(registry); + + MappedInterceptor tenantInterceptor = (MappedInterceptor) registry.interceptors().get(0); + AntPathMatcher pathMatcher = new AntPathMatcher(); + + assertThat(tenantInterceptor.matches("/actuator/health/liveness", pathMatcher)).isFalse(); + assertThat(tenantInterceptor.matches("/actuator/health/readiness", pathMatcher)).isFalse(); + assertThat(tenantInterceptor.matches("/api/schedule", pathMatcher)).isTrue(); + } + + private static final class ExposedInterceptorRegistry extends InterceptorRegistry { + + private List interceptors() { + return getInterceptors(); + } + } +} diff --git a/backend/src/test/java/com/magistr/app/config/tenant/health/HealthProbeEndpointIntegrationTest.java b/backend/src/test/java/com/magistr/app/config/tenant/health/HealthProbeEndpointIntegrationTest.java new file mode 100644 index 0000000..8293bac --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/tenant/health/HealthProbeEndpointIntegrationTest.java @@ -0,0 +1,106 @@ +package com.magistr.app.config.tenant.health; + +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Bean; +import org.springframework.test.web.servlet.MockMvc; + +import java.time.Clock; +import java.time.Duration; +import java.util.List; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest( + classes = HealthProbeEndpointIntegrationTest.ProbeApplication.class, + webEnvironment = SpringBootTest.WebEnvironment.MOCK, + properties = { + "management.endpoints.web.exposure.include=health", + "management.endpoint.health.probes.enabled=true", + "management.endpoint.health.group.liveness.include=livenessState", + "management.endpoint.health.group.readiness.include=readinessState,tenantReadiness", + "management.endpoint.health.show-details=never", + "management.endpoint.health.show-components=never" + } +) +@AutoConfigureMockMvc +class HealthProbeEndpointIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private TenantReadinessRegistry readinessRegistry; + + @Test + void отказTenantБдСнимаетReadinessНоНеLiveness() throws Exception { + TenantConfig tenant = new TenantConfig( + "Тестовый университет", + "test", + "jdbc:postgresql://database/test", + "user", + "secret" + ); + readinessRegistry.replaceDesired(List.of(tenant)); + readinessRegistry.markMigrationFailed(tenant); + + mockMvc.perform(get("/actuator/health/readiness").header("Host", "10.20.30.40")) + .andExpect(status().isServiceUnavailable()) + .andExpect(jsonPath("$.status").value("DOWN")) + .andExpect(jsonPath("$.components").doesNotExist()); + + mockMvc.perform(get("/actuator/health/liveness").header("Host", "10.20.30.40")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.status").value("UP")) + .andExpect(jsonPath("$.components").doesNotExist()); + + readinessRegistry.markMigrationSucceeded(tenant); + readinessRegistry.markConnectivity(tenant.getDomain(), true); + + mockMvc.perform(get("/actuator/health/readiness").header("Host", "10.20.30.40")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.status").value("UP")); + } + + @SpringBootConfiguration + @EnableAutoConfiguration(exclude = { + DataSourceAutoConfiguration.class, + HibernateJpaAutoConfiguration.class + }) + static class ProbeApplication { + + @Bean + TenantReadinessRegistry tenantReadinessRegistry() { + return new TenantReadinessRegistry(); + } + + @Bean + TenantDatabaseHealthMonitor tenantDatabaseHealthMonitor(TenantReadinessRegistry registry) { + return new TenantDatabaseHealthMonitor( + registry, + new TenantRoutingDataSource(), + 1, + Duration.ofSeconds(1), + Duration.ofSeconds(30), + Clock.systemUTC() + ); + } + + @Bean("tenantReadiness") + TenantReadinessHealthIndicator tenantReadiness( + TenantReadinessRegistry registry, + TenantDatabaseHealthMonitor monitor) { + return new TenantReadinessHealthIndicator(registry, monitor); + } + } +} diff --git a/backend/src/test/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitorTest.java b/backend/src/test/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitorTest.java new file mode 100644 index 0000000..b31c83a --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitorTest.java @@ -0,0 +1,264 @@ +package com.magistr.app.config.tenant.health; + +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import org.junit.jupiter.api.Test; + +import java.nio.charset.StandardCharsets; +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class TenantDatabaseHealthMonitorTest { + + private static final byte[] KEY = "0123456789abcdef0123456789abcdef".getBytes(StandardCharsets.UTF_8); + private static final Instant FAST_COMPLETED_AT = Instant.parse("2026-07-15T10:00:01Z"); + private static final Instant TIMEOUT_RECORDED_AT = Instant.parse("2026-07-15T10:00:02Z"); + private static final Instant SLOW_COMPLETED_AT = Instant.parse("2026-07-15T10:00:03Z"); + + @Test + void проверяетTenantПараллельноНоНеПревышаетЛимит() { + TenantReadinessRegistry registry = registry(); + List tenants = new ArrayList<>(); + for (int index = 0; index < 6; index++) { + tenants.add(config("tenant-" + index)); + } + registry.replaceDesired(tenants); + tenants.forEach(registry::markMigrationSucceeded); + + ControlledRoutingDataSource routing = new ControlledRoutingDataSource(60, true); + TenantDatabaseHealthMonitor monitor = monitor(registry, routing, 2, Duration.ofSeconds(1)); + try { + TenantDatabaseHealthMonitor.RefreshSummary summary = monitor.refreshNow(); + + assertEquals(6, summary.requested()); + assertEquals(6, summary.available()); + assertEquals(0, summary.unavailable()); + assertTrue(routing.maxActive.get() >= 2); + assertTrue(routing.maxActive.get() <= 2); + assertTrue(registry.aggregate(Duration.ofSeconds(30)).ready()); + } finally { + monitor.close(); + } + } + + @Test + void превышениеТаймаутаОтмечаетСоединениеНедоступным() { + TenantReadinessRegistry registry = registry(); + TenantConfig tenant = config("slow"); + registry.replaceDesired(List.of(tenant)); + registry.markMigrationSucceeded(tenant); + + ControlledRoutingDataSource routing = new ControlledRoutingDataSource(300, true); + TenantDatabaseHealthMonitor monitor = monitor(registry, routing, 1, Duration.ofMillis(25)); + try { + TenantDatabaseHealthMonitor.RefreshSummary summary = monitor.refreshNow(); + + assertEquals(1, summary.requested()); + assertEquals(0, summary.available()); + assertEquals(1, summary.unavailable()); + assertFalse(registry.aggregate(Duration.ofSeconds(30)).ready()); + } finally { + monitor.close(); + } + } + + @Test + void таймаутПервогоTenantНеОтменяетУжеЗавершившийсяВторой() { + TenantReadinessRegistry registry = registry(); + TenantConfig slow = config("slow"); + TenantConfig fast = config("fast"); + registry.replaceDesired(List.of(slow, fast)); + registry.markMigrationSucceeded(slow); + registry.markMigrationSucceeded(fast); + + CompletionAwareClock clock = new CompletionAwareClock(); + SlowFirstRoutingDataSource routing = new SlowFirstRoutingDataSource(clock); + TenantDatabaseHealthMonitor monitor = new TenantDatabaseHealthMonitor( + registry, + routing, + 2, + Duration.ofMillis(200), + Duration.ofSeconds(30), + clock); + try { + TenantDatabaseHealthMonitor.RefreshSummary summary = monitor.refreshNow(); + + assertEquals(2, summary.requested()); + assertEquals(1, summary.available()); + assertEquals(1, summary.unavailable()); + + TenantReadinessRegistry.TenantStatus slowStatus = registry.snapshot().get("slow"); + TenantReadinessRegistry.TenantStatus fastStatus = registry.snapshot().get("fast"); + assertEquals(TenantReadinessRegistry.ConnectivityState.UNAVAILABLE, + slowStatus.connectivityState()); + assertEquals(TIMEOUT_RECORDED_AT, slowStatus.connectivityCheckedAt()); + assertEquals(TenantReadinessRegistry.ConnectivityState.AVAILABLE, + fastStatus.connectivityState()); + assertEquals(FAST_COMPLETED_AT, fastStatus.connectivityCheckedAt()); + } finally { + monitor.close(); + } + } + + @Test + void неПроверяетTenantДоУспехаМиграцииИХ2() { + TenantReadinessRegistry registry = registry(); + TenantConfig ready = config("ready"); + TenantConfig pending = config("pending"); + TenantConfig h2 = new TenantConfig("h2", "h2", "jdbc:h2:mem:test", "sa", ""); + registry.replaceDesired(List.of(ready, pending, h2)); + registry.markMigrationSucceeded(ready); + registry.markMigrationStarted(pending); + registry.markMigrationSucceeded(h2); + + ControlledRoutingDataSource routing = new ControlledRoutingDataSource(0, true); + TenantDatabaseHealthMonitor monitor = monitor(registry, routing, 3, Duration.ofSeconds(1)); + try { + TenantDatabaseHealthMonitor.RefreshSummary summary = monitor.refreshNow(); + + assertEquals(1, summary.requested()); + assertEquals(1, routing.total.get()); + assertFalse(registry.aggregate(Duration.ofSeconds(30)).ready()); + } finally { + monitor.close(); + } + } + + @Test + void сообщаетНастроенныйMaxStaleness() { + TenantReadinessRegistry registry = registry(); + TenantDatabaseHealthMonitor monitor = new TenantDatabaseHealthMonitor( + registry, + new ControlledRoutingDataSource(0, true), + 1, + Duration.ofSeconds(1), + Duration.ofSeconds(17), + Clock.systemUTC()); + try { + assertEquals(Duration.ofSeconds(17), monitor.maxStaleness()); + assertEquals(1, monitor.parallelism()); + } finally { + monitor.close(); + } + } + + private TenantReadinessRegistry registry() { + return new TenantReadinessRegistry(Clock.systemUTC(), KEY); + } + + private TenantDatabaseHealthMonitor monitor(TenantReadinessRegistry registry, + TenantRoutingDataSource routing, + int parallelism, + Duration timeout) { + return new TenantDatabaseHealthMonitor( + registry, + routing, + parallelism, + timeout, + Duration.ofSeconds(30), + Clock.systemUTC()); + } + + private TenantConfig config(String domain) { + return new TenantConfig(domain, domain, "jdbc:postgresql://db/" + domain, "user", "secret"); + } + + private static final class ControlledRoutingDataSource extends TenantRoutingDataSource { + private final long delayMillis; + private final boolean result; + private final AtomicInteger active = new AtomicInteger(); + private final AtomicInteger maxActive = new AtomicInteger(); + private final AtomicInteger total = new AtomicInteger(); + + private ControlledRoutingDataSource(long delayMillis, boolean result) { + this.delayMillis = delayMillis; + this.result = result; + } + + @Override + public boolean testConnection(String domain) { + total.incrementAndGet(); + int current = active.incrementAndGet(); + maxActive.accumulateAndGet(current, Math::max); + try { + if (delayMillis > 0) { + Thread.sleep(delayMillis); + } + return result; + } catch (InterruptedException interrupted) { + Thread.currentThread().interrupt(); + return false; + } finally { + active.decrementAndGet(); + } + } + } + + private static final class SlowFirstRoutingDataSource extends TenantRoutingDataSource { + private final CompletionAwareClock clock; + private final CountDownLatch fastCompleted = new CountDownLatch(1); + + private SlowFirstRoutingDataSource(CompletionAwareClock clock) { + this.clock = clock; + } + + @Override + public boolean testConnection(String domain) { + clock.bind(domain); + if ("fast".equals(domain)) { + fastCompleted.countDown(); + return true; + } + + try { + if (!fastCompleted.await(5, TimeUnit.SECONDS)) { + return false; + } + Thread.sleep(1_000); + return true; + } catch (InterruptedException interrupted) { + Thread.currentThread().interrupt(); + return false; + } + } + } + + private static final class CompletionAwareClock extends Clock { + private final ThreadLocal currentDomain = new ThreadLocal<>(); + + private void bind(String domain) { + currentDomain.set(domain); + } + + @Override + public ZoneId getZone() { + return ZoneOffset.UTC; + } + + @Override + public Clock withZone(ZoneId zone) { + return this; + } + + @Override + public Instant instant() { + return switch (String.valueOf(currentDomain.get())) { + case "fast" -> FAST_COMPLETED_AT; + case "slow" -> SLOW_COMPLETED_AT; + default -> TIMEOUT_RECORDED_AT; + }; + } + } +} diff --git a/backend/src/test/java/com/magistr/app/config/tenant/health/TenantReadinessHealthIndicatorTest.java b/backend/src/test/java/com/magistr/app/config/tenant/health/TenantReadinessHealthIndicatorTest.java new file mode 100644 index 0000000..2a1613a --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/tenant/health/TenantReadinessHealthIndicatorTest.java @@ -0,0 +1,69 @@ +package com.magistr.app.config.tenant.health; + +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.health.Status; +import org.springframework.stereotype.Component; + +import java.nio.charset.StandardCharsets; +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.time.ZoneOffset; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class TenantReadinessHealthIndicatorTest { + + private static final Instant NOW = Instant.parse("2026-07-15T10:00:00Z"); + + @Test + void зарегистрированПодИменемTenantReadiness() { + Component annotation = TenantReadinessHealthIndicator.class.getAnnotation(Component.class); + + assertEquals("tenantReadiness", annotation.value()); + } + + @Test + void возвращаетТолькоАгрегированныеДанные() { + Clock clock = Clock.fixed(NOW, ZoneOffset.UTC); + TenantReadinessRegistry registry = new TenantReadinessRegistry( + clock, + "0123456789abcdef0123456789abcdef".getBytes(StandardCharsets.UTF_8)); + TenantConfig tenant = new TenantConfig( + "Secret university", + "alpha", + "jdbc:postgresql://private-host/private-db", + "private-user", + "private-password"); + registry.replaceDesired(List.of(tenant)); + registry.markMigrationSucceeded(tenant); + registry.markConnectivity("alpha", true); + + TenantDatabaseHealthMonitor monitor = new TenantDatabaseHealthMonitor( + registry, + new TenantRoutingDataSource(), + 1, + Duration.ofSeconds(1), + Duration.ofSeconds(30), + clock); + try { + TenantReadinessHealthIndicator indicator = new TenantReadinessHealthIndicator(registry, monitor); + TenantReadinessRegistry.AggregateReadiness readiness = indicator.readiness(); + + assertEquals(Status.UP, indicator.health().getStatus()); + assertTrue(readiness.ready()); + assertEquals("ГОТОВ", readiness.status()); + assertEquals(1, readiness.desiredTenants()); + assertEquals(1, readiness.readyTenants()); + assertEquals(0, readiness.unavailableTenants()); + assertFalse(readiness.configurationFailure()); + } finally { + monitor.close(); + } + } +} diff --git a/backend/src/test/java/com/magistr/app/config/tenant/health/TenantReadinessRegistryTest.java b/backend/src/test/java/com/magistr/app/config/tenant/health/TenantReadinessRegistryTest.java new file mode 100644 index 0000000..5ab66ca --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/tenant/health/TenantReadinessRegistryTest.java @@ -0,0 +1,166 @@ +package com.magistr.app.config.tenant.health; + +import com.magistr.app.config.tenant.TenantConfig; +import org.junit.jupiter.api.Test; + +import java.nio.charset.StandardCharsets; +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.time.ZoneOffset; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class TenantReadinessRegistryTest { + + private static final Instant NOW = Instant.parse("2026-07-15T10:00:00Z"); + private static final Clock CLOCK = Clock.fixed(NOW, ZoneOffset.UTC); + private static final byte[] KEY = "0123456789abcdef0123456789abcdef".getBytes(StandardCharsets.UTF_8); + + @Test + void пустойСписокИH2НеДолжныБытьГотовы() { + TenantReadinessRegistry registry = registry(); + + assertFalse(registry.aggregate(Duration.ofSeconds(30)).ready()); + + TenantConfig h2 = config("default", "jdbc:h2:mem:placeholder", "sa", "секрет"); + registry.replaceDesired(List.of(h2)); + registry.markMigrationSucceeded(h2); + + assertFalse(registry.markConnectivity("default", true)); + TenantReadinessRegistry.AggregateReadiness readiness = registry.aggregate(Duration.ofSeconds(30)); + assertFalse(readiness.ready()); + assertEquals(1, readiness.unsupportedTenants()); + } + + @Test + void готовностьТребуетУспешнуюМиграциюИСвежееСоединение() { + TenantReadinessRegistry registry = registry(); + TenantConfig tenant = config("alpha", "jdbc:postgresql://db/alpha", "user", "secret"); + + registry.replaceDesired(List.of(tenant)); + registry.markMigrationStarted(tenant); + assertFalse(registry.aggregate(Duration.ofSeconds(30)).ready()); + + registry.markMigrationSucceeded(tenant); + assertFalse(registry.aggregate(Duration.ofSeconds(30)).ready()); + + assertTrue(registry.markConnectivity("alpha", true)); + TenantReadinessRegistry.AggregateReadiness readiness = registry.aggregate(Duration.ofSeconds(30)); + assertTrue(readiness.ready()); + assertEquals("ГОТОВ", readiness.status()); + assertEquals(1, readiness.readyTenants()); + } + + @Test + void устаревшаяПроверкаИFingerprintСтаройКонфигурацииИгнорируются() { + TenantReadinessRegistry registry = registry(); + TenantConfig first = config("alpha", "jdbc:postgresql://db/alpha", "user", "first-secret"); + registry.replaceDesired(List.of(first)); + registry.markMigrationSucceeded(first); + TenantReadinessRegistry.ConnectivityTarget oldTarget = registry.connectivityTargets().get(0); + + TenantConfig changed = config("alpha", "jdbc:postgresql://db/alpha", "user", "second-secret"); + registry.replaceDesired(List.of(changed)); + registry.markMigrationSucceeded(changed); + TenantReadinessRegistry.ConnectivityTarget currentTarget = registry.connectivityTargets().get(0); + + assertNotEquals(oldTarget.fingerprint(), currentTarget.fingerprint()); + assertFalse(registry.markConnectivity("alpha", oldTarget.fingerprint(), true, NOW)); + assertTrue(registry.markConnectivity("alpha", currentTarget.fingerprint(), true, NOW)); + assertFalse(registry.markConnectivity( + "alpha", currentTarget.fingerprint(), false, NOW.minusSeconds(1))); + assertTrue(registry.aggregate(Duration.ofSeconds(30)).ready()); + } + + @Test + void эквивалентнаяНормализованнаяКонфигурацияНеСбрасываетГотовность() { + TenantReadinessRegistry registry = registry(); + TenantConfig raw = new TenantConfig( + " Университет ", + " ALPHA ", + " jdbc:postgresql://db/alpha ", + "user", + "secret" + ); + TenantConfig normalized = new TenantConfig( + "Университет", + "alpha", + "jdbc:postgresql://db/alpha", + "user", + "secret" + ); + + registry.replaceDesired(List.of(raw)); + registry.markMigrationSucceeded(raw); + registry.markConnectivity("alpha", true); + String before = registry.snapshot().get("alpha").fingerprint(); + + registry.replaceDesired(List.of(normalized)); + + assertEquals(before, registry.snapshot().get("alpha").fingerprint()); + assertTrue(registry.aggregate(Duration.ofSeconds(30)).ready()); + } + + @Test + void fingerprintНеРаскрываетРеквизиты() { + TenantReadinessRegistry registry = registry(); + TenantConfig tenant = config( + "secret-domain", + "jdbc:postgresql://private-host/private-db", + "private-user", + "private-password"); + + registry.replaceDesired(List.of(tenant)); + String fingerprint = registry.snapshot().get("secret-domain").fingerprint(); + + assertFalse(fingerprint.contains("private-host")); + assertFalse(fingerprint.contains("private-user")); + assertFalse(fingerprint.contains("private-password")); + assertFalse(fingerprint.contains("secret-domain")); + } + + @Test + void явнаяОшибкаКонфигурацииСохраняетсяДоЯвнойОчистки() { + TenantReadinessRegistry registry = registry(); + TenantConfig tenant = config("alpha", "jdbc:postgresql://db/alpha", "user", "secret"); + + registry.markConfigurationFailure(); + registry.replaceDesired(List.of(tenant)); + registry.markMigrationSucceeded(tenant); + registry.markConnectivity("alpha", true); + + assertTrue(registry.aggregate(Duration.ofSeconds(30)).configurationFailure()); + assertFalse(registry.aggregate(Duration.ofSeconds(30)).ready()); + + registry.clearConfigurationFailure(); + assertTrue(registry.aggregate(Duration.ofSeconds(30)).ready()); + } + + @Test + void просроченнаяПроверкаДелаетСервисНеготовым() { + TenantReadinessRegistry registry = registry(); + TenantConfig tenant = config("alpha", "jdbc:postgresql://db/alpha", "user", "secret"); + registry.replaceDesired(List.of(tenant)); + registry.markMigrationSucceeded(tenant); + TenantReadinessRegistry.ConnectivityTarget target = registry.connectivityTargets().get(0); + + registry.markConnectivity("alpha", target.fingerprint(), true, NOW.minusSeconds(31)); + + TenantReadinessRegistry.AggregateReadiness readiness = registry.aggregate(Duration.ofSeconds(30)); + assertFalse(readiness.ready()); + assertEquals(1, readiness.staleConnections()); + } + + private TenantReadinessRegistry registry() { + return new TenantReadinessRegistry(CLOCK, KEY); + } + + private TenantConfig config(String domain, String url, String username, String password) { + return new TenantConfig(domain, domain, url, username, password); + } +} diff --git a/backend/src/test/java/com/magistr/app/controller/DatabaseControllerTest.java b/backend/src/test/java/com/magistr/app/controller/DatabaseControllerTest.java new file mode 100644 index 0000000..62b8db0 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/controller/DatabaseControllerTest.java @@ -0,0 +1,74 @@ +package com.magistr.app.controller; + +import com.magistr.app.config.tenant.TenantConfigWatcher; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.magistr.app.service.TenantLifecycleException; +import com.magistr.app.service.TenantLifecycleService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.test.web.servlet.MockMvc; + +import java.util.Map; +import java.util.function.Supplier; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup; + +class DatabaseControllerTest { + + private TenantLifecycleService lifecycleService; + private TenantConfigWatcher tenantConfigWatcher; + private MockMvc mockMvc; + + @BeforeEach + void setUp() { + TenantRoutingDataSource routingDataSource = mock(TenantRoutingDataSource.class); + lifecycleService = mock(TenantLifecycleService.class); + tenantConfigWatcher = mock(TenantConfigWatcher.class); + mockMvc = standaloneSetup(new DatabaseController( + routingDataSource, + lifecycleService, + tenantConfigWatcher + )).build(); + } + + @Test + void returnsServiceUnavailableInsteadOfFalseSuccessWhenLifecycleFails() throws Exception { + when(lifecycleService.executeSerialized( + org.mockito.ArgumentMatchers.>>>any() + )).thenThrow(new TenantLifecycleException( + "Не удалось выполнить миграции базы данных тенанта", + new IllegalStateException("тестовые технические детали JDBC") + )); + + mockMvc.perform(post("/api/database/tenants") + .contentType(MediaType.APPLICATION_JSON) + .content(""" + { + "name": "Тестовый университет", + "domain": "test", + "url": "jdbc:postgresql://db/test", + "username": "user", + "password": "password" + } + """)) + .andExpect(status().isServiceUnavailable()) + .andExpect(jsonPath("$.success").value(false)) + .andExpect(jsonPath("$.message") + .value("Не удалось выполнить миграции базы данных тенанта")) + .andExpect(jsonPath("$.message") + .value(org.hamcrest.Matchers.not(org.hamcrest.Matchers.containsString("JDBC")))); + + verify(tenantConfigWatcher, never()).refreshHash(); + verify(lifecycleService).executeSerialized(any(Supplier.class)); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java index e287f24..1fe0748 100644 --- a/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java @@ -35,7 +35,10 @@ import static org.mockito.Mockito.verify; @Testcontainers @SpringBootTest( classes = AcademicCalendarGridServiceIntegrationTest.TestApplication.class, - properties = "spring.jpa.open-in-view=false" + properties = { + "spring.jpa.open-in-view=false", + "management.endpoint.health.validate-group-membership=false" + } ) class AcademicCalendarGridServiceIntegrationTest { diff --git a/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java index 56f58c4..60df341 100644 --- a/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java @@ -32,7 +32,8 @@ import static org.assertj.core.api.Assertions.assertThat; classes = PostgreSqlAdvisoryLockIntegrationTest.TestApplication.class, properties = { "spring.flyway.enabled=false", - "spring.jpa.hibernate.ddl-auto=none" + "spring.jpa.hibernate.ddl-auto=none", + "management.endpoint.health.validate-group-membership=false" } ) class PostgreSqlAdvisoryLockIntegrationTest { diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java index 8f5bb68..f164708 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java @@ -45,7 +45,10 @@ import static org.mockito.Mockito.verify; @Testcontainers @SpringBootTest( classes = ScheduleRuleServiceConcurrencyIntegrationTest.TestApplication.class, - properties = "spring.jpa.open-in-view=false" + properties = { + "spring.jpa.open-in-view=false", + "management.endpoint.health.validate-group-membership=false" + } ) class ScheduleRuleServiceConcurrencyIntegrationTest { diff --git a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java index 12cfeae..97f2463 100644 --- a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java @@ -1,9 +1,12 @@ package com.magistr.app.service; -import com.magistr.app.config.tenant.KubernetesTenantSecretUpdater; import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantConfigPersistenceException; +import com.magistr.app.config.tenant.TenantConfigStore; import com.magistr.app.config.tenant.TenantContext; import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.magistr.app.config.tenant.TenantSecretUpdateReceipt; +import com.magistr.app.config.tenant.health.TenantReadinessRegistry; import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -18,6 +21,7 @@ import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.time.Duration; +import java.util.List; import java.util.concurrent.TimeUnit; import static org.assertj.core.api.Assertions.assertThat; @@ -42,7 +46,8 @@ class TenantLifecyclePostgreSqlIntegrationTest { private TenantRoutingDataSource routingDataSource; private TenantDatabaseMigrationService migrationService; - private KubernetesTenantSecretUpdater tenantSecretUpdater; + private TenantConfigStore tenantConfigStore; + private TenantReadinessRegistry readinessRegistry; private TenantLifecycleService lifecycleService; private RetiredTenantPoolService retiredPoolService; private HikariDataSource oldPool; @@ -56,13 +61,15 @@ class TenantLifecyclePostgreSqlIntegrationTest { routingDataSource = new TenantRoutingDataSource(); migrationService = new TenantDatabaseMigrationService(); - tenantSecretUpdater = mock(KubernetesTenantSecretUpdater.class); + tenantConfigStore = mock(TenantConfigStore.class); + readinessRegistry = new TenantReadinessRegistry(); retiredPoolService = new RetiredTenantPoolService(Duration.ofSeconds(2), Duration.ofMillis(25)); lifecycleService = new TenantLifecycleService( routingDataSource, - tenantSecretUpdater, + tenantConfigStore, migrationService, - retiredPoolService + retiredPoolService, + readinessRegistry ); oldConfig = config("Старый tenant", jdbcUrl(OLD_DATABASE), POSTGRES.getPassword()); @@ -77,6 +84,9 @@ class TenantLifecyclePostgreSqlIntegrationTest { oldPool = routingDataSource.prepareTenantDataSource(oldConfig); assertThat(routingDataSource.swapTenant(oldConfig, oldPool)).isNull(); + readinessRegistry.replaceDesired(List.of(oldConfig)); + readinessRegistry.markMigrationSucceeded(oldConfig); + readinessRegistry.markConnectivity(DOMAIN, true); assertOldState(); } @@ -105,10 +115,10 @@ class TenantLifecyclePostgreSqlIntegrationTest { assertThatThrownBy(() -> lifecycleService.addOrUpdateTenant(wrongCredentials)) .isInstanceOf(TenantLifecycleException.class) .hasMessage("Не удалось подключиться к базе данных тенанта"); - verify(tenantSecretUpdater, never()).updateTenantsConfig(any()); + verify(tenantConfigStore, never()).upsertTenant(any()); assertOldState(); - reset(tenantSecretUpdater); + reset(tenantConfigStore); TenantConfig badChecksum = config( "Повреждённый Flyway", jdbcUrl(BAD_CHECKSUM_DATABASE), @@ -117,11 +127,13 @@ class TenantLifecyclePostgreSqlIntegrationTest { assertThatThrownBy(() -> lifecycleService.addOrUpdateTenant(badChecksum)) .isInstanceOf(TenantLifecycleException.class) .hasMessage("Не удалось выполнить миграции базы данных тенанта"); - verify(tenantSecretUpdater, never()).updateTenantsConfig(any()); + verify(tenantConfigStore, never()).upsertTenant(any()); assertOldState(); - reset(tenantSecretUpdater); - when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(false, true); + reset(tenantConfigStore); + when(tenantConfigStore.upsertTenant(any())).thenThrow( + new TenantConfigPersistenceException("Не удалось сохранить конфигурацию тенантов") + ); TenantConfig validCandidate = config( "Новый tenant", jdbcUrl(VALID_DATABASE), @@ -129,12 +141,19 @@ class TenantLifecyclePostgreSqlIntegrationTest { ); assertThatThrownBy(() -> lifecycleService.addOrUpdateTenant(validCandidate)) .isInstanceOf(TenantLifecycleException.class) - .hasMessage("Не удалось сохранить конфигурацию тенантов; прежняя конфигурация восстановлена"); - verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(any()); + .hasMessage("Не удалось сохранить конфигурацию тенантов"); + verify(tenantConfigStore).upsertTenant(any()); + verify(tenantConfigStore, never()).compensate(any()); assertOldState(); - reset(tenantSecretUpdater); - when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true); + reset(tenantConfigStore); + when(tenantConfigStore.upsertTenant(any())).thenReturn(new TenantSecretUpdateReceipt( + true, + true, + "2", + List.of(oldConfig), + List.of(validCandidate) + )); TenantConfig saved; try (Connection inFlightOldConnection = oldPool.getConnection()) { saved = lifecycleService.addOrUpdateTenant(validCandidate); diff --git a/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java b/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java index 5b6e7f2..d07f05e 100644 --- a/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java +++ b/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java @@ -1,8 +1,12 @@ package com.magistr.app.service; -import com.magistr.app.config.tenant.KubernetesTenantSecretUpdater; import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantConfigPersistenceException; +import com.magistr.app.config.tenant.TenantConfigStore; import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.magistr.app.config.tenant.TenantSecretCompensationResult; +import com.magistr.app.config.tenant.TenantSecretUpdateReceipt; +import com.magistr.app.config.tenant.health.TenantReadinessRegistry; import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,6 +20,8 @@ import org.mockito.quality.Strictness; import java.sql.Connection; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -35,12 +41,14 @@ class TenantLifecycleServiceTest { @Mock private TenantRoutingDataSource routingDataSource; @Mock - private KubernetesTenantSecretUpdater tenantSecretUpdater; + private TenantConfigStore tenantConfigStore; @Mock private TenantDatabaseMigrationService migrationService; @Mock private RetiredTenantPoolService retiredPoolService; @Mock + private TenantReadinessRegistry readinessRegistry; + @Mock private HikariDataSource candidate; @Mock private HikariDataSource oldDataSource; @@ -56,9 +64,10 @@ class TenantLifecycleServiceTest { void setUp() throws Exception { service = new TenantLifecycleService( routingDataSource, - tenantSecretUpdater, + tenantConfigStore, migrationService, - retiredPoolService + retiredPoolService, + readinessRegistry ); oldAlpha = config("Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); beta = config("Beta", "beta", "jdbc:beta", "beta-user", "beta-password"); @@ -70,7 +79,11 @@ class TenantLifecycleServiceTest { when(routingDataSource.prepareTenantDataSource(any(TenantConfig.class))).thenReturn(candidate); when(candidate.getConnection()).thenReturn(candidateConnection); when(candidateConnection.isValid(5)).thenReturn(true); - when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true); + when(tenantConfigStore.upsertTenant(any(TenantConfig.class))) + .thenAnswer(invocation -> upsertReceipt(invocation.getArgument(0))); + when(tenantConfigStore.removeTenant(any(String.class))).thenAnswer(invocation -> + removeReceipt(invocation.getArgument(0))); + when(tenantConfigStore.compensate(any())).thenReturn(TenantSecretCompensationResult.RESTORED); when(routingDataSource.swapTenant(any(TenantConfig.class), any())) .thenReturn(new TenantRoutingDataSource.TenantState("alpha", oldAlpha, oldDataSource)); } @@ -85,13 +98,14 @@ class TenantLifecycleServiceTest { assertConfig(saved, "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); ArgumentCaptor preparedConfig = ArgumentCaptor.forClass(TenantConfig.class); - ArgumentCaptor> persistedConfigs = listCaptor(); + ArgumentCaptor persistedConfig = ArgumentCaptor.forClass(TenantConfig.class); InOrder order = inOrder( routingDataSource, candidate, candidateConnection, migrationService, - tenantSecretUpdater, + tenantConfigStore, + readinessRegistry, retiredPoolService ); order.verify(routingDataSource).snapshotTenantConfigs(); @@ -100,19 +114,63 @@ class TenantLifecycleServiceTest { order.verify(candidateConnection).isValid(5); order.verify(candidateConnection).close(); order.verify(migrationService).migrate(candidate); - order.verify(tenantSecretUpdater).updateTenantsConfig(persistedConfigs.capture()); + order.verify(tenantConfigStore).upsertTenant(persistedConfig.capture()); order.verify(routingDataSource).swapTenant(any(TenantConfig.class), any()); + order.verify(readinessRegistry).replaceDesired(any()); + order.verify(readinessRegistry).markMigrationSucceeded(any(TenantConfig.class)); + order.verify(readinessRegistry).markConnectivity("alpha", true); order.verify(retiredPoolService).retire(oldDataSource); assertConfig(preparedConfig.getValue(), "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); - assertThat(persistedConfigs.getValue()).extracting(TenantConfig::getDomain) - .containsExactly("alpha", "beta"); - assertConfig(persistedConfigs.getValue().get(0), + assertConfig(persistedConfig.getValue(), "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); verify(candidate, never()).close(); } + @Test + void addsNewTenantWithoutRetiringExistingPool() { + Map createSnapshot = new LinkedHashMap<>(); + createSnapshot.put("beta", beta); + when(routingDataSource.snapshotTenantConfigs()).thenReturn(createSnapshot); + when(routingDataSource.swapTenant(any(TenantConfig.class), any())).thenReturn(null); + TenantConfig gamma = config( + "Новый Gamma", " GAMMA ", " jdbc:gamma ", "gamma-user", "gamma-password" + ); + + TenantConfig saved = service.addOrUpdateTenant(gamma); + + assertConfig(saved, "Новый Gamma", "gamma", "jdbc:gamma", "gamma-user", "gamma-password"); + ArgumentCaptor persistedConfig = ArgumentCaptor.forClass(TenantConfig.class); + verify(tenantConfigStore).upsertTenant(persistedConfig.capture()); + assertThat(persistedConfig.getValue().getDomain()).isEqualTo("gamma"); + verify(routingDataSource).swapTenant(any(TenantConfig.class), any()); + verify(retiredPoolService, never()).retire(any()); + verify(candidate, never()).close(); + } + + @Test + void doesNotBlindlyCompensateWhenCreatePersistenceFails() { + Map createSnapshot = new LinkedHashMap<>(); + createSnapshot.put("beta", beta); + when(routingDataSource.snapshotTenantConfigs()).thenReturn(createSnapshot); + when(tenantConfigStore.upsertTenant(any())) + .thenThrow(new TenantConfigPersistenceException("Не удалось сохранить конфигурацию тенантов")); + TenantConfig gamma = config( + "Новый Gamma", "gamma", "jdbc:gamma", "gamma-user", "gamma-password" + ); + + assertThatThrownBy(() -> service.addOrUpdateTenant(gamma)) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось сохранить конфигурацию тенантов"); + + verify(tenantConfigStore).upsertTenant(any()); + verify(tenantConfigStore, never()).compensate(any()); + verify(candidate).close(); + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(retiredPoolService, never()).retire(any()); + } + @Test void closesCandidateAndKeepsOldPoolWhenCredentialsAreWrong() throws Exception { when(candidate.getConnection()).thenThrow(new SQLException("тестовая ошибка аутентификации")); @@ -123,11 +181,27 @@ class TenantLifecycleServiceTest { verify(candidate).close(); verify(migrationService, never()).migrate(any()); - verify(tenantSecretUpdater, never()).updateTenantsConfig(any()); + verify(tenantConfigStore, never()).upsertTenant(any()); verify(routingDataSource, never()).swapTenant(any(), any()); verify(retiredPoolService, never()).retire(oldDataSource); } + @Test + void closesCandidateAndDoesNotPersistWhenConnectionIsInvalid() throws Exception { + when(candidateConnection.isValid(5)).thenReturn(false); + + assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("База данных тенанта не подтвердила готовность подключения"); + + verify(candidateConnection).close(); + verify(candidate).close(); + verify(migrationService, never()).migrate(any()); + verify(tenantConfigStore, never()).upsertTenant(any()); + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(retiredPoolService, never()).retire(any()); + } + @Test void closesCandidateAndKeepsOldStateWhenFlywayFails() { org.mockito.Mockito.doThrow(new IllegalStateException("тестовая ошибка Flyway")) @@ -138,134 +212,141 @@ class TenantLifecycleServiceTest { .hasMessage("Не удалось выполнить миграции базы данных тенанта"); verify(candidate).close(); - verify(tenantSecretUpdater, never()).updateTenantsConfig(any()); + verify(tenantConfigStore, never()).upsertTenant(any()); verify(routingDataSource, never()).swapTenant(any(), any()); verify(retiredPoolService, never()).retire(oldDataSource); } @Test - void closesCandidateAndRestoresOldSnapshotWhenPersistenceReturnsFalse() { - when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(false, true); + void persistenceConflictDoesNotStartBlindCompensation() { + when(tenantConfigStore.upsertTenant(any())).thenThrow(new TenantConfigPersistenceException( + "Конфигурация тенантов одновременно изменяется другим экземпляром; повторите запрос" + )); assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) .isInstanceOf(TenantLifecycleException.class) - .hasMessage("Не удалось сохранить конфигурацию тенантов; прежняя конфигурация восстановлена"); + .hasMessage("Конфигурация тенантов одновременно изменяется другим экземпляром; повторите запрос"); - ArgumentCaptor> snapshots = listCaptor(); - verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(snapshots.capture()); - assertThat(snapshots.getAllValues().get(1)).extracting(TenantConfig::getDomain) - .containsExactly("alpha", "beta"); - assertConfig(snapshots.getAllValues().get(1).get(0), - "Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); + verify(tenantConfigStore, never()).compensate(any()); verify(candidate).close(); verify(routingDataSource, never()).swapTenant(any(), any()); - verify(retiredPoolService, never()).retire(oldDataSource); } @Test - void restoresOldSnapshotWhenFirstPersistenceThrows() { - when(tenantSecretUpdater.updateTenantsConfig(any())) - .thenThrow(new IllegalStateException("неопределённый исход PATCH")) - .thenReturn(true); + void unknownPersistenceFailureUsesSafeMessageAndDoesNotCompensate() { + when(tenantConfigStore.upsertTenant(any())) + .thenThrow(new IllegalStateException("неопределённый технический результат PUT")); assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) .isInstanceOf(TenantLifecycleException.class) - .hasMessage("Не удалось сохранить конфигурацию тенантов; прежняя конфигурация восстановлена"); + .hasMessage("Не удалось сохранить конфигурацию тенантов"); - verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(any()); + verify(tenantConfigStore, never()).compensate(any()); verify(candidate).close(); verify(routingDataSource, never()).swapTenant(any(), any()); - verify(retiredPoolService, never()).retire(oldDataSource); } @Test - void reportsDesynchronizationWhenPersistenceAndCompensationFail() { - when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(false, false); - - assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) - .isInstanceOf(TenantLifecycleException.class) - .hasMessage("Не удалось сохранить конфигурацию тенантов; требуется проверить tenant Secret"); - - verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(any()); - verify(candidate).close(); - verify(routingDataSource, never()).swapTenant(any(), any()); - verify(retiredPoolService, never()).retire(oldDataSource); - } - - @Test - void compensatesPersistedSnapshotWhenActivationFails() { + void compensatesOnlyCommittedReceiptWhenActivationFails() { + TenantSecretUpdateReceipt receipt = upsertReceipt(newAlpha()); + when(tenantConfigStore.upsertTenant(any())).thenReturn(receipt); when(routingDataSource.swapTenant(any(), any())) .thenThrow(new IllegalStateException("тестовый отказ активации")); - when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true, true); assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) .isInstanceOf(TenantLifecycleException.class) .hasMessage("Не удалось активировать подключение тенанта; сохранённая конфигурация восстановлена"); - ArgumentCaptor> snapshots = listCaptor(); - verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(snapshots.capture()); - assertThat(snapshots.getAllValues().get(0)).extracting(TenantConfig::getDomain) - .containsExactly("alpha", "beta"); - assertConfig(snapshots.getAllValues().get(0).get(0), - "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); - assertThat(snapshots.getAllValues().get(1)).extracting(TenantConfig::getDomain) - .containsExactly("alpha", "beta"); - assertConfig(snapshots.getAllValues().get(1).get(0), - "Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); + verify(tenantConfigStore).compensate(receipt); verify(candidate).close(); verify(retiredPoolService, never()).retire(oldDataSource); } @Test - void reportsSecretDesynchronizationWhenActivationAndCompensationFail() { + void concurrentChangeSkipsUnsafeCompensationAndMarksReadinessFailed() { + TenantSecretUpdateReceipt receipt = upsertReceipt(newAlpha()); + when(tenantConfigStore.upsertTenant(any())).thenReturn(receipt); + when(tenantConfigStore.compensate(receipt)) + .thenReturn(TenantSecretCompensationResult.SKIPPED_CONCURRENT_CHANGE); when(routingDataSource.swapTenant(any(), any())) .thenThrow(new IllegalStateException("тестовый отказ активации")); - when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true, false); assertThatThrownBy(() -> service.addOrUpdateTenant(newAlpha())) .isInstanceOf(TenantLifecycleException.class) - .hasMessage("Не удалось активировать подключение тенанта; требуется проверить tenant Secret"); + .hasMessage("Не удалось активировать подключение тенанта; tenant Secret уже изменён " + + "другим экземпляром, автоматический откат пропущен"); + verify(readinessRegistry).markConfigurationFailure(); verify(candidate).close(); - verify(retiredPoolService, never()).retire(oldDataSource); } @Test - void removalPersistsDesiredStateBeforeAtomicRemovalAndClosesRemovedPool() { + void removalPersistsOperationBeforeAtomicRemovalAndClosesRemovedPool() { when(routingDataSource.removeTenantAtomically("alpha")) .thenReturn(new TenantRoutingDataSource.TenantState("alpha", oldAlpha, oldDataSource)); TenantConfig removed = service.removeTenant(" ALPHA "); assertConfig(removed, "Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); - ArgumentCaptor> desired = listCaptor(); - InOrder order = inOrder(routingDataSource, tenantSecretUpdater, retiredPoolService); + InOrder order = inOrder(routingDataSource, tenantConfigStore, readinessRegistry, retiredPoolService); order.verify(routingDataSource).snapshotTenantConfigs(); - order.verify(tenantSecretUpdater).updateTenantsConfig(desired.capture()); + order.verify(tenantConfigStore).removeTenant("alpha"); order.verify(routingDataSource).removeTenantAtomically("alpha"); + order.verify(readinessRegistry).replaceDesired(any()); order.verify(retiredPoolService).retire(oldDataSource); - assertThat(desired.getValue()).extracting(TenantConfig::getDomain).containsExactly("beta"); } @Test - void removalFailureRestoresOldPersistedSnapshotAndKeepsPoolOpen() { + void removalFailureCompensatesCommittedReceiptAndKeepsPoolOpen() { + TenantSecretUpdateReceipt receipt = removeReceipt("alpha"); + when(tenantConfigStore.removeTenant("alpha")).thenReturn(receipt); when(routingDataSource.removeTenantAtomically("alpha")) .thenThrow(new IllegalStateException("тестовый отказ удаления")); - when(tenantSecretUpdater.updateTenantsConfig(any())).thenReturn(true, true); assertThatThrownBy(() -> service.removeTenant("alpha")) .isInstanceOf(TenantLifecycleException.class) .hasMessage("Не удалось отключить тенанта; сохранённая конфигурация восстановлена"); - ArgumentCaptor> snapshots = listCaptor(); - verify(tenantSecretUpdater, org.mockito.Mockito.times(2)).updateTenantsConfig(snapshots.capture()); - assertThat(snapshots.getAllValues().get(0)).extracting(TenantConfig::getDomain) - .containsExactly("beta"); - assertThat(snapshots.getAllValues().get(1)).extracting(TenantConfig::getDomain) - .containsExactly("alpha", "beta"); + verify(tenantConfigStore).compensate(receipt); verify(retiredPoolService, never()).retire(oldDataSource); } + @Test + void persistedTenantBecomesReadyOnlyAfterMigrationAndSwap() { + TenantConfig gamma = config("Gamma", "gamma", "jdbc:gamma", "user", "password"); + when(routingDataSource.hasTenant("gamma")).thenReturn(false); + when(routingDataSource.swapTenant(any(TenantConfig.class), any())).thenReturn(null); + + service.synchronizeFromPersistedConfig(List.of(gamma)); + + InOrder order = inOrder(readinessRegistry, migrationService, routingDataSource); + order.verify(readinessRegistry).clearConfigurationFailure(); + order.verify(readinessRegistry).replaceDesired(any()); + order.verify(readinessRegistry).markMigrationStarted(any(TenantConfig.class)); + order.verify(migrationService).migrate(candidate); + order.verify(routingDataSource).swapTenant(any(TenantConfig.class), any()); + order.verify(readinessRegistry).markMigrationSucceeded(any(TenantConfig.class)); + order.verify(readinessRegistry).markConnectivity("gamma", true); + verify(tenantConfigStore, never()).upsertTenant(any()); + } + + @Test + void failedPersistedMigrationLeavesTenantNotReadyForWatcherRetry() { + TenantConfig gamma = config("Gamma", "gamma", "jdbc:gamma", "user", "password"); + when(routingDataSource.hasTenant("gamma")).thenReturn(false); + org.mockito.Mockito.doThrow(new IllegalStateException("тестовая ошибка Flyway")) + .when(migrationService).migrate(candidate); + + assertThatThrownBy(() -> service.synchronizeFromPersistedConfig(List.of(gamma))) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось выполнить миграции базы данных тенанта"); + + verify(readinessRegistry).markMigrationStarted(any(TenantConfig.class)); + verify(readinessRegistry).markMigrationFailed(any(TenantConfig.class)); + verify(readinessRegistry, never()).markMigrationSucceeded(any(TenantConfig.class)); + verify(candidate).close(); + } + @Test void acceptsDnsLabelBoundariesAndRejectsTooLongOrDottedDomain() { String maxLengthDomain = "a".repeat(63); @@ -295,6 +376,36 @@ class TenantLifecycleServiceTest { return config("Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); } + private TenantSecretUpdateReceipt upsertReceipt(TenantConfig tenant) { + Map committed = new LinkedHashMap<>(oldSnapshot); + committed.put(tenant.getDomain(), tenant); + return new TenantSecretUpdateReceipt( + true, + true, + "2", + sortedConfigs(oldSnapshot), + sortedConfigs(committed) + ); + } + + private TenantSecretUpdateReceipt removeReceipt(String domain) { + Map committed = new LinkedHashMap<>(oldSnapshot); + committed.remove(domain); + return new TenantSecretUpdateReceipt( + true, + true, + "2", + sortedConfigs(oldSnapshot), + sortedConfigs(committed) + ); + } + + private List sortedConfigs(Map configs) { + List result = new ArrayList<>(configs.values()); + result.sort(Comparator.comparing(TenantConfig::getDomain)); + return result; + } + private TenantConfig config(String name, String domain, String url, @@ -316,8 +427,4 @@ class TenantLifecycleServiceTest { assertThat(actual.getPassword()).isEqualTo(password); } - @SuppressWarnings({"unchecked", "rawtypes"}) - private ArgumentCaptor> listCaptor() { - return ArgumentCaptor.forClass((Class) List.class); - } } diff --git a/docs/API.md b/docs/API.md index b2750fa..c49d50e 100644 --- a/docs/API.md +++ b/docs/API.md @@ -1,6 +1,7 @@ # 🔌 REST API -Все эндпоинты имеют префикс `/api/`. Ответы возвращаются в формате JSON. +Все прикладные эндпоинты имеют префикс `/api/`. Служебные проверки Kubernetes доступны +под `/actuator/health/`. Ответы возвращаются в формате JSON. Необработанные ошибки проходят через единый `GlobalExceptionHandler`. Для `400`, `404` и `500` используется общий JSON-формат: @@ -18,6 +19,53 @@ --- +## Служебные проверки состояния + +Эти endpoints предназначены для Kubernetes kubelet, не требуют bearer-токен и не зависят +от tenant-домена в заголовке `Host`. Из Actuator наружу опубликован только `health`, а +состав компонентов, домены, JDBC URL и credentials в ответах скрыты. + +### `GET /actuator/health/liveness` + +Проверяет только жизнеспособность процесса. Недоступность tenant-БД не меняет liveness и +не должна создавать цикл перезапусков pod. + +**Ответ работающего процесса (200):** + +```json +{ + "status": "UP" +} +``` + +### `GET /actuator/health/readiness` + +Разрешает направлять трафик в pod только после успешных миграций и свежей успешной +проверки соединения со всеми обязательными tenant-БД. Пустая конфигурация, H2-заглушка, +ошибка чтения tenant-конфигурации, незавершённая или неуспешная миграция, недоступное либо +просроченное соединение делают pod неготовым. + +**Готов (200):** + +```json +{ + "status": "UP" +} +``` + +**Не готов (503):** + +```json +{ + "status": "DOWN" +} +``` + +`UP` и `DOWN` — стандартные машинные значения протокола Spring Boot Actuator, а не +пользовательские сообщения интерфейса. + +--- + ## Аутентификация ### `POST /api/auth/login` @@ -1090,6 +1138,8 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 ## Управление тенантами (Базы данных) +Все endpoints раздела доступны только пользователю с ролью `ADMIN`. + ### `GET /api/database/status` Статус текущего подключения (определяется по домену запроса). @@ -1107,11 +1157,23 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 ### `GET /api/database/tenants` -Список всех тенантов. +Список всех тенантов. Пароль в ответ не включается. + +```json +[ + { + "name": "СВФУ", + "domain": "swsu", + "url": "jdbc:postgresql://db-host:5432/swsu_db", + "username": "dbuser", + "connected": true + } +] +``` ### `POST /api/database/tenants` -Добавление нового тенанта. +Создание нового или обновление существующего тенанта по `domain`. ```json { @@ -1123,19 +1185,56 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 } ``` +`domain` приводится к нижнему регистру и должен быть одной DNS-меткой длиной от 1 до +63 символов. `url` обязателен и должен начинаться с `jdbc:`. Если `name` пуст, вместо +него используется нормализованный `domain`. + **Логика:** -1. Создаёт HikariCP пул для нового тенанта -2. Запускает Flyway миграции на его БД -3. Обновляет внешний Kubernetes Secret `tenants-secret` +1. Создаёт временный HikariCP pool, ещё не доступный маршрутизатору. +2. Открывает соединение и явно проверяет его готовность. +3. Выполняет Flyway-валидацию и миграции tenant-БД. +4. Читает актуальный `tenants-secret`, применяет только upsert запрошенного `domain` и + выполняет условный `PUT` с прочитанным Kubernetes `resourceVersion`. +5. При конфликте повторно читает Secret и заново применяет свою мутацию с ограниченным + retry/backoff; неизменившаяся конфигурация не записывается повторно. +6. Одной атомарной публикацией заменяет связку `TenantConfig + DataSource`. +7. Передаёт прежний pool на отложенное закрытие после завершения активных запросов + либо по истечении защитного таймаута. Backend соединяется с Kubernetes API только через проверенный service-account CA и hostname verification. Если безопасно сохранить tenant-конфигурацию не удалось, операция не возвращается как успешная. Значения credentials никогда не включаются в ответ или лог Kubernetes updater. +При ошибке credentials, проверки соединения, Flyway или сохранения Secret временный pool +закрывается, а прежнее подключение продолжает обслуживать запросы. Если Kubernetes +подтвердил запись, но последующая локальная активация завершилась ошибкой, backend +восстанавливает прежний снимок только пока Secret сохраняет `resourceVersion` этой записи. +Более новое изменение другого pod не перезаписывается. Неопределённый сетевой результат +сначала сверяется повторным чтением и не создаёт основания для небезопасной компенсации. +Ошибка lifecycle возвращается как безопасный русский ответ без JDBC/Flyway details: + +```json +{ + "success": false, + "message": "Не удалось выполнить миграции базы данных тенанта" +} +``` + +HTTP-статусы: `400` для некорректного payload и `503` для ошибки подключения, миграции, +персистенции или активации. + +Вне Kubernetes обновление Secret пропускается, поэтому добавленный через API tenant живёт +только до перезапуска процесса. Для постоянной локальной конфигурации используется +неотслеживаемый файл `backend/tenants.json`. + ### `DELETE /api/database/tenants/{domain}` -Удаление тенанта. +Удаление тенанта. Backend читает актуальный Secret, удаляет только запрошенный `domain` и +выполняет условный `PUT` по `resourceVersion`, затем атомарно исключает tenant из локальной +маршрутизации и передаёт pool на отложенное закрытие. При отказе локального удаления +компенсация также допускается только для подтверждённой версии и не затирает более новое +изменение другого pod. Неизвестный `domain` возвращает `404`, lifecycle-ошибка — `503`. ### `POST /api/database/test` @@ -1166,5 +1265,8 @@ Kubernetes updater. | `200` | Успех | | `400` | Ошибка валидации или некорректные параметры запроса | | `401` | Неверные учётные данные | +| `403` | Недостаточно прав для операции | | `404` | Ресурс / тенант не найден | +| `409` | Конфликт бизнес-инвариантов или конкурентного изменения | | `500` | Внутренняя ошибка сервера | +| `503` | Внешняя БД или обязательная инфраструктура временно недоступна | diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 03dd79c..3d493a2 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -78,11 +78,18 @@ sequenceDiagram |-------|-----------| | `TenantInterceptor` | Извлекает поддомен из заголовка `Host` и определяет тенант | | `TenantContext` | `ThreadLocal`-хранилище имени текущего тенанта | -| `TenantRoutingDataSource` | Наследует `AbstractRoutingDataSource`, маршрутизирует запросы к нужной БД | +| `TenantRoutingDataSource` | Маршрутизирует запросы и атомарно публикует неизменяемый снимок `TenantConfig + DataSource` | | `TenantDataSourceConfig` | Загружает конфигурацию тенантов из JSON-файла, создаёт HikariCP пулы | | `TenantWebMvcConfig` | Регистрирует `TenantInterceptor` и `AuthorizationInterceptor` в MVC-слое | | `TenantConfigWatcher` | Периодически (каждые 30 сек) перечитывает `tenants.json`, синхронизирует тенантов | -| `KubernetesTenantSecretUpdater` | Обновляет Kubernetes Secret с tenant-конфигурацией через API, проверяя TLS по service-account CA | +| `TenantConfigStore` | Задаёт явные атомарные операции upsert/remove и условную компенсацию persisted-конфигурации | +| `KubernetesTenantSecretUpdater` | Реализует `TenantConfigStore` через GET и условный PUT Kubernetes Secret по `resourceVersion`, проверяя TLS по service-account CA | +| `TenantLifecycleService` | Сериализует prepare/validate/migrate/persist/swap/remove и выполняет компенсацию при отказе | +| `TenantDatabaseMigrationService` | Запускает Flyway для подготовленного, ещё не опубликованного pool | +| `RetiredTenantPoolService` | После swap дожидается завершения активных подключений старого pool и закрывает его | +| `TenantReadinessRegistry` | Хранит атомарный снимок обязательных tenant, миграций и свежести проверок соединения | +| `TenantDatabaseHealthMonitor` | Ограниченно-параллельно проверяет соединения с обязательными tenant-БД в фоне | +| `TenantReadinessHealthIndicator` | Включает агрегированную готовность tenant-БД в Actuator readiness group | | `TenantConfig` | POJO с параметрами тенанта: `name`, `domain`, `url`, `username`, `password` | ### Определение тенанта @@ -121,16 +128,84 @@ sequenceDiagram ### Жизненный цикл тенанта -1. **Добавление через API:** `POST /api/database/tenants` → создаёт HikariCP пул → запускает Flyway миграции → обновляет `tenants-secret` -2. **Синхронизация подов:** `TenantConfigWatcher` каждые 30 сек проверяет смонтированный `tenants.json` → добавляет новые / удаляет отсутствующие тенанты -3. **Удаление:** `DELETE /api/database/tenants/{domain}` → закрывает пул → обновляет `tenants-secret` +1. **Добавление или обновление через API:** `TenantLifecycleService` нормализует конфигурацию, + создаёт непубликуемый HikariCP candidate, проверяет реальное соединение и выполняет + Flyway. Затем `TenantConfigStore` читает актуальный Secret и применяет к нему только + upsert запрошенного домена. +2. **Межподовая запись:** `KubernetesTenantSecretUpdater` выполняет `GET` текущего + `tenants-secret`, нормализует и сортирует список, после чего отправляет полный объект + условным `PUT` с прочитанным `metadata.resourceVersion`. При `409 Conflict` актуальное + состояние читается заново, а собственная мутация повторно применяется к нему. Число + попыток ограничено тремя, задержка между попытками возрастает; идемпотентная операция + не отправляет лишний `PUT`. +3. **Атомарная локальная публикация:** только после успешной или подтверждённой повторным + чтением персистенции одной публикацией заменяется связка `TenantConfig + DataSource`. +4. **Безопасный отказ и компенсация:** ошибка credentials, соединения, Flyway или Secret + закрывает candidate, не меняя действующий route. Компенсация прежним снимком разрешена + только для подтверждённой записи и только пока текущий Secret сохраняет выданный ей + `resourceVersion`. Если другой pod уже записал более новую версию, автоматический откат + пропускается. Неопределённый сетевой результат сначала сверяется повторным `GET` и не + создаёт квитанцию для небезопасной компенсации. HTTP-граница получает русское безопасное + сообщение без JDBC/Flyway details. +5. **Drain старого pool:** после успешного swap новые запросы сразу используют candidate, + а прежний Hikari pool закрывается после завершения активных подключений либо по истечении + настраиваемого grace timeout. +6. **Синхронизация подов:** `TenantConfigWatcher` каждые 30 секунд проверяет смонтированный + `tenants.json` и применяет добавление/удаление под тем же локальным lifecycle-monitor. +7. **Удаление:** `DELETE /api/database/tenants/{domain}` применяет к актуальному Secret только + удаление указанного домена через тот же условный `PUT`, затем атомарно исключает tenant + из маршрутизации и передаёт pool на drain. Для отказа локального удаления действуют те же + ограничения компенсации по `resourceVersion`. + +Сериализация lifecycle и атомарный снимок защищают запросы внутри одного backend-процесса. +Между pod потерянное обновление предотвращает optimistic locking Kubernetes: каждый конфликт +заставляет заново прочитать Secret и повторно применить только свою доменную мутацию. Локальный +monitor по-прежнему не считается межподовой блокировкой. + +Вне Kubernetes `KubernetesTenantSecretUpdater` работает как runtime-only адаптер: Secret и +локальный `tenants.json` не изменяются. Постоянная локальная конфигурация задаётся файлом до +запуска приложения. Для обращения к Kubernetes API backend загружает `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`, использует стандартную PKIX-проверку цепочки и обязательную проверку hostname. Trust-all fallback отсутствует: ошибка CA или TLS завершает персистенцию безопасным отказом. -`TenantConfigWatcher` сравнивает содержимое `tenants.json` по SHA-256, а не по `String.hashCode()`, чтобы изменение ConfigMap не пропускалось из-за 32-битной коллизии. +`TenantConfigWatcher` сравнивает содержимое смонтированного из Secret `tenants.json` по +SHA-256, а не по `String.hashCode()`, чтобы изменение файла не пропускалось из-за +32-битной коллизии. На текущем этапе watcher активирует новые домены и удаляет отсутствующие, +но ещё не заменяет подключение существующего домена при изменении его URL или credentials. +Полная синхронизация такого изменения относится к проблеме №13; до её выполнения новое +значение сбрасывает readiness этого tenant в состояние ожидания, а pod не должен считаться +готовым по старому подключению. + +### Liveness и readiness + +Spring Boot Actuator публикует две независимые служебные группы: + +- `GET /actuator/health/liveness` включает только `livenessState` приложения. Отказ любой + tenant-БД не переводит процесс в liveness failure и не создаёт restart storm; +- `GET /actuator/health/readiness` включает `readinessState` и `tenantReadiness`. Ответ имеет + статус `UP` только если задан непустой набор обязательных tenant, миграция каждого успешно + завершена и для каждого есть свежая успешная проверка соединения. + +`TenantDataSourceConfig` регистрирует обязательный набор до startup-активации и сохраняет +неуспешную миграцию как readiness failure. H2-заглушка позволяет инициализировать Spring JPA, +но никогда не делает приложение готовым к production-трафику. Ошибка чтения обязательного +`tenants.json` также фиксируется отдельно от состояния процесса. + +`TenantDatabaseHealthMonitor` по умолчанию запускается через секунду после старта, затем +проверяет соединения каждые 10 секунд пакетами до четырёх параллельных задач. Таймаут пакета +составляет 6 секунд: по его истечении отменяются только незавершённые задачи, а уже полученные +результаты сохраняются с фактическим временем завершения проверки. Результат старше 30 секунд +считается просроченным. Запоздалый результат привязан к HMAC-fingerprint конкретной конфигурации +и не может отметить новую конфигурацию готовой; исходные credentials в fingerprint и +health-ответ не попадают. Планировщик использует два потока, поэтому ожидающий health-pass не +задерживает периодическое чтение tenant Secret. + +Tenant interceptor исключает `/actuator/**`, а authorization interceptor применяется только +к `/api/**`. При этом наружу опубликован только endpoint `health`, его details и components +скрыты: kubelet получает минимальный `UP`/`DOWN` без доменов и реквизитов tenant-БД. ### Fallback при отсутствии тенантов @@ -138,6 +213,9 @@ sequenceDiagram 1. Проверяется наличие `spring.datasource.url` → создаётся тенант `default` 2. Если datasource тоже нет → создаётся H2 in-memory заглушка для инициализации Spring JPA +Для production обязательность смонтированной конфигурации задаётся +`TENANTS_CONFIG_REQUIRED=true`; отсутствие или ошибка чтения файла снимают readiness. + `TenantContext` хранит имя текущего тенанта в `ThreadLocal` и очищается интерцептором после завершения запроса. Виртуальные потоки в приложении не включены; если их включать в будущем, нужно отдельно проверить перенос и очистку tenant/auth context на асинхронных участках. --- diff --git a/docs/INFRASTRUCTURE.md b/docs/INFRASTRUCTURE.md index 795eb45..842df9d 100644 --- a/docs/INFRASTRUCTURE.md +++ b/docs/INFRASTRUCTURE.md @@ -59,7 +59,9 @@ RUN chown -R www-data:www-data /usr/local/apache2/htdocs/ ### Расположение конфигурации -Файлы Kubernetes манифестов: `../k8s/` +Ожидаемое расположение production-манифестов: `../k8s/`. В текущей рабочей копии этот +внешний каталог недоступен, поэтому приведённые ниже изменения являются обязательным +runbook для оператора, а не утверждением о применённом или проверенном состоянии кластера. ### Ключевые ресурсы @@ -92,21 +94,146 @@ RUN chown -R www-data:www-data /usr/local/apache2/htdocs/ | `otel-postgres-secret` | Credentials PostgreSQL receivers для OTel Collector | | `gitea-registry` | Доступ Kubernetes к registry | -Secret `tenants-secret` монтируется в pod backend по пути `/config/tenants.json`. +Backend ожидает ключ `tenants.json` из Secret `tenants-secret` по пути +`/config/tenants.json`. Чтобы kubelet доставлял последующие обновления Secret, необходимо +монтировать каталог `/config`, а не отдельный файл через `subPath`: + +```yaml +volumeMounts: + - name: tenants-config + mountPath: /config + readOnly: true + +volumes: + - name: tenants-config + secret: + secretName: tenants-secret + optional: false + items: + - key: tenants.json + path: tenants.json +``` + +В production для backend также требуется: + +```yaml +env: + - name: TENANTS_CONFIG_REQUIRED + value: "true" +``` + +При обязательной конфигурации отсутствие, пустой список или ошибка разбора `tenants.json` +снимают readiness; резервная H2-БД не считается готовой tenant-БД. При добавлении тенанта через API: -1. `DatabaseController` обновляет in-memory DataSource -2. `KubernetesTenantSecretUpdater` обновляет Secret через Kubernetes API -3. `TenantConfigWatcher` на остальных pod подхватывает смонтированное изменение (каждые 30 сек) +1. `TenantLifecycleService` создаёт отдельный candidate pool, проверяет соединение и Flyway +2. `KubernetesTenantSecretUpdater` выполняет `GET` актуального Secret и применяет к списку + только upsert запрошенного домена +3. полный объект Secret отправляется условным `PUT` с текущим `metadata.resourceVersion`; + при `409 Conflict` выполняются повторное чтение и повторное применение своей мутации +4. `TenantRoutingDataSource` атомарно публикует candidate только после успешной либо + подтверждённой повторным чтением персистенции +5. старый pool перестаёт принимать новые запросы и закрывается после drain/grace timeout +6. `TenantConfigWatcher` на остальных pod видит обновлённый файл и каждые 30 секунд + применяет добавление или удаление домена + +Удаление использует тот же persistence-first порядок и применяет к актуальному Secret только +remove указанного домена. Число попыток записи ограничено тремя, задержка между повторами +возрастает, а идемпотентное состояние не записывается повторно. + +Если после подтверждённой записи Secret локальная активация или удаление завершаются ошибкой, +backend восстанавливает прежний снимок только пока Secret сохраняет `resourceVersion` этой +записи. Более новое межподовое изменение останавливает компенсацию и не перезаписывается. +Неопределённый сетевой результат сначала сверяется повторным `GET`; совпавшее целевое +состояние принимается без квитанции, допускающей небезопасный автоматический откат. + +Watcher пока не заменяет подключение существующего домена при изменении URL или credentials. +Такое изменение сбрасывает readiness, но полное применение на другом pod относится к +проблеме №13. До её исправления нельзя считать watcher механизмом полной синхронизации всех +полей `TenantConfig`. Kubernetes-клиент доверяет только service-account CA и проверяет hostname API server. -RBAC ограничен объектом `tenants-secret`. Скрипт `../k8s/deploy.sh` проверяет наличие -объектов и ключей до rollout, не читая и не печатая их значения. +Поскольку реализация использует HTTP `GET` и `PUT`, минимальная Role должна разрешать только +Kubernetes verbs `get` и `update` для одного существующего Secret: + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: backend-tenant-secret + namespace: magistr +rules: + - apiGroups: [""] + resources: ["secrets"] + resourceNames: ["tenants-secret"] + verbs: ["get", "update"] +``` + +`patch`, `list`, `watch`, `create` и `delete` текущему Kubernetes-клиенту не нужны. RoleBinding +должен связывать эту Role с фактическим `spec.template.spec.serviceAccountName` backend в +namespace `magistr`. Secret должен существовать заранее и не иметь `immutable: true`. Создание, ротация, отзыв скомпрометированных значений и очистка истории описаны в [`SECURITY_RUNBOOK.md`](SECURITY_RUNBOOK.md). Эти действия требуют полномочий оператора и не выполняются автоматически. +### Liveness и readiness probes backend + +TCP probe подтверждает только открытый порт и не отражает готовность обязательных tenant-БД. +В production Deployment необходимо использовать раздельные HTTP probes: + +```yaml +livenessProbe: + httpGet: + path: /actuator/health/liveness + port: 8080 + +readinessProbe: + httpGet: + path: /actuator/health/readiness + port: 8080 +``` + +Liveness зависит только от состояния процесса. Readiness возвращает `200 UP` после успешных +миграций и свежей успешной проверки всех обязательных tenant-БД, иначе — `503 DOWN` и pod +исключается из приёма трафика без перезапуска. Actuator не публикует components, домены, +JDBC URL или credentials. + +Параметры `initialDelaySeconds`, `periodSeconds`, `timeoutSeconds` и `failureThreshold` нужно +согласовать с текущим Deployment; замена механизма probe не подтверждает автоматически +корректность этих порогов. + +### Внешние действия для production Kubernetes + +Каталог `../k8s/` не изменялся и не проверялся в рамках текущей рабочей копии. Оператору после +получения доступа к нему необходимо: + +1. обновить backend Deployment: directory mount без `subPath`, + `TENANTS_CONFIG_REQUIRED=true` и две HTTP probes; +2. добавить либо сузить Role до `get`/`update` одного `tenants-secret` и проверить RoleBinding + фактического ServiceAccount; +3. убедиться, что внешний `tenants-secret` существует, содержит непустой ключ `tenants.json` + и допускает обновление; +4. отрендерить манифесты и выполнить серверную проверку без применения: + +```bash +kubectl kustomize ../k8s >/dev/null +kubectl apply --dry-run=server -k ../k8s +``` + +5. отдельно проверить полномочия фактического ServiceAccount: + +```bash +BACKEND_SERVICE_ACCOUNT='укажите-фактический-service-account' +kubectl auth can-i get secret/tenants-secret \ + --as="system:serviceaccount:magistr:${BACKEND_SERVICE_ACCOUNT}" -n magistr +kubectl auth can-i update secret/tenants-secret \ + --as="system:serviceaccount:magistr:${BACKEND_SERVICE_ACCOUNT}" -n magistr +``` + +Применение манифестов, rollout и проверка реальных pod являются отдельными внешними +операциями и без разрешения автоматически не выполняются. + ### Обновление backend ```bash From 3d798c13e3239d98bc83496746bfbf3e62d4dcf2 Mon Sep 17 00:00:00 2001 From: alekan Date: Fri, 17 Jul 2026 01:27:02 +0300 Subject: [PATCH 07/14] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20?= =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80=D0=B0=202=D1=87.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BUG_FIX_PROGRESS.md | 104 +++- .../config/tenant/TenantConfigWatcher.java | 355 +++++++++-- .../app/controller/DatabaseController.java | 15 +- .../TenantLifecycleMutationResult.java | 41 ++ .../app/service/TenantLifecycleService.java | 108 +++- .../KubernetesTenantSecretUpdaterTest.java | 5 +- .../tenant/TenantConfigWatcherTest.java | 552 +++++++++++++++--- .../controller/DatabaseControllerTest.java | 132 ++++- ...antLifecyclePostgreSqlIntegrationTest.java | 47 ++ .../service/TenantLifecycleServiceTest.java | 201 ++++++- docs/API.md | 27 +- docs/ARCHITECTURE.md | 45 +- docs/FRONTEND.md | 19 + docs/INFRASTRUCTURE.md | 37 +- frontend/admin/css/components.css | 71 +++ frontend/admin/js/dashboard-conflicts.js | 214 +++++++ frontend/admin/js/views/dashboard.js | 138 +++-- frontend/admin/views/dashboard.html | 4 +- frontend/package.json | 12 + frontend/tests/dashboard-conflicts.test.mjs | 151 +++++ 20 files changed, 2003 insertions(+), 275 deletions(-) create mode 100644 backend/src/main/java/com/magistr/app/service/TenantLifecycleMutationResult.java create mode 100644 frontend/admin/js/dashboard-conflicts.js create mode 100644 frontend/package.json create mode 100644 frontend/tests/dashboard-conflicts.test.mjs diff --git a/BUG_FIX_PROGRESS.md b/BUG_FIX_PROGRESS.md index 430a417..c3f724b 100644 --- a/BUG_FIX_PROGRESS.md +++ b/BUG_FIX_PROGRESS.md @@ -1,6 +1,6 @@ # Журнал исправления проблем -Обновлено: 2026-07-15 (Europe/Moscow). +Обновлено: 2026-07-17 (Europe/Moscow). ## Область и неизменяемые данные @@ -56,9 +56,9 @@ | 8 | исправлено и проверено | `saveGrid` удалял данные до полной валидации и ловил исключение внутри transactional controller-метода, поэтому Spring коммитил delete и уже обработанные строки. | `AcademicCalendarGridService` полностью валидирует и строит replacement до delete, атомарно заменяет строки и очищает кэш через `afterCommit`; контроллер стал HTTP-адаптером. | 8 unit + 1 PostgreSQL proxy test; fingerprint старой сетки после отказа неизменен; полный backend 111/0/0/0. | | 9 | исправлено и проверено | При update старый pool закрывался до создания нового; Hikari допускал ленивый нерабочий pool, Flyway проглатывал ошибку, а отказ persistence мог сочетаться с изменённым локальным состоянием. | `TenantLifecycleService` выполняет prepare → connection validation → Flyway → Secret persistence → atomic snapshot swap; candidate закрывается при отказе, прежний route сохраняется, Secret компенсируется, старый pool закрывается после drain. | 18 целевых unit/MockMvc/PostgreSQL tests; create/update, credentials, invalid connection, Flyway, persistence, swap, HTTP `503` и in-flight connection. Полный backend: 132/0/0/0. | | 10 | требуется внешнее действие | Два pod перезаписывали целый tenant-документ без `resourceVersion`; TCP probes не отражали готовность tenant-БД. | Backend применяет доменные upsert/remove через GET → условный PUT по `resourceVersion`, ограниченный retry и безопасную компенсацию; Actuator разделяет process-only liveness и readiness обязательных tenant-БД. Оператору остаются RBAC `get/update`, mount без `subPath`, `TENANTS_CONFIG_REQUIRED=true` и HTTP probes в отсутствующем `../k8s`. | 64 целевых теста; полный backend 169/0/0/0; LF-хеши V1–V4 совпадают. Kustomize не выполнен: `../k8s` отсутствует. | -| 11 | не начато | Sunday вычисляется повторным мутированием даты; ошибки запросов превращаются в пустые результаты и зелёный статус. | Чистая local-date утилита и три явных состояния проверки. | 2026-07-02, переход года, частичная/полная ошибка API. | +| 11 | исправлено и проверено | Воскресенье вычислялось повторным мутированием одной даты, date-only строился через UTC, а ошибки кафедральных запросов превращались в пустой успешный результат. | `dashboard-conflicts.js` формирует локальный диапазон на отдельных объектах, загружает кафедры через `Promise.allSettled` и fail-closed различает `COMPLETE`/`PARTIAL`/`NOT_RUN`; зелёная карточка разрешена только для полного результата без конфликтов. | 12 `node:test`: 02.07.2026 00:15 Europe/Moscow, переход года, полный/частичный/нулевой успех и строгий UI-контракт; `npm run check` и синтаксис 25 JS/MJS-файлов — успешно. | | 12 | не начато | Access JWT хранится в Web Storage; origin исполняет удалённые модули; CSP допускает несовместимые сценарии. | Access JWT только в памяти, восстановление через HttpOnly refresh-cookie; локальные pinned assets; строгий CSP и удаление inline JS. | Login/refresh/logout/reload tests; статический аудит CSP/storage/imports. | -| 13 | не начато | Watcher сравнивает только домены и фиксирует hash до успешной полной синхронизации. | Нормализованное сравнение полного `TenantConfig`, hash после успеха, bounded backoff. | Изменение URL/credentials и retry после ошибки. | +| 13 | исправлено и проверено | Watcher сравнивал только домены, подтверждал hash до полного успеха, а API после мутации мог принять запаздывающую mounted-проекцию за актуальную. | Полное нормализованное сравнение, prepare/verify/Flyway/atomic swap без повторной записи Secret, hash-after-success, retry 30–300 секунд и semantic snapshot fence по `TenantSecretUpdateReceipt`. | 53 целевых теста, 2 PostgreSQL lifecycle-теста; полный backend 200/0/0/0. | | 14 | исправлено и проверено | Kubernetes HTTP-клиент имел trust-all TLS fallback. | `KubernetesTenantSecretUpdater` загружает service-account CA, строит PKIX trust store, включает HTTPS hostname verification и не имеет небезопасного fallback. | Mock HTTPS: доверенный CA принят; чужой CA, неверный hostname и отсутствующий CA отклонены. Backend 45/0/0. | | 15 | не начато | Не проверяются `start < end` и пересечения; duration доверяется клиенту; используемый DEFAULT scope можно изменить. | Централизованный валидатор, backend duration, DB/concurrency protection. | Overlap/adjacent/scope/concurrency tests. | | 16 | не начато | Create/update проверяют лишь порядок дат, но не пересечения и принадлежность семестра году. | Единый calendar validator и PostgreSQL range/exclusion constraints. | Create/update + конкурентные PostgreSQL tests. | @@ -324,8 +324,8 @@ маскирует отказ. Actuator endpoints исключены из tenant-interceptor и не раскрывают components, домены, JDBC URL или credentials. - AutoUpdateDocs синхронизировал `docs/API.md`, `docs/ARCHITECTURE.md` и - `docs/INFRASTRUCTURE.md`. Ограничение watcher по обновлению URL/credentials существующего - домена явно оставлено проблеме № 13. + `docs/INFRASTRUCTURE.md`. На этом этапе ограничение watcher по обновлению URL/credentials + существующего домена было оставлено проблеме № 13 и устранено следующим этапом. - В текущей рабочей копии отсутствует внешний каталог `../k8s`, поэтому манифесты не менялись и Kustomize не запускался. Для production обязательны directory mount без `subPath`, `TENANTS_CONFIG_REQUIRED=true`, Role `get/update` для `tenants-secret` и HTTP liveness / @@ -343,18 +343,92 @@ | Повторные LF-нормализованные SHA-256 V1/V2/V3/V4 | Совпадают с ранее зафиксированными значениями. | | `kubectl kustomize ../k8s` | Не выполнено: внешний каталог `../k8s` отсутствует в текущем workspace. | +### № 13 — полная и повторяемая синхронизация tenant-конфигурации + +- `TenantLifecycleService.synchronizeFromPersistedConfig()` валидирует весь входной список, + отклоняет нормализованные дубли до изменения runtime/readiness и сравнивает `name`, `domain`, + `url`, `username`, `password`. Новый или изменённый tenant проходит candidate prepare, + проверку соединения, Flyway и атомарный swap; persisted-путь не вызывает `TenantConfigStore`. +- Hash mounted `tenants.json` становится применённым только после успешного разбора и полной + lifecycle-синхронизации. Ошибка сохраняет прежний hash и повторяется с экспоненциальной + задержкой 30–300 секунд; новая ревизия обходит backoff. Required missing/read/empty также + наблюдаемы через readiness и русский лог без credentials, hash или fingerprint. +- Перед `POST`/`DELETE` watcher под общим reentrant monitor применяет ещё не обработанный + semantic baseline. Ошибка чтения/разбора/sync возвращает безопасный `503` до начала мутации. + `TenantLifecycleMutationResult` возвращает controller-у immutable-квитанцию персистенции, + но не раскрывает её в HTTP. +- Snapshot fence ставится только для реально сохранённой изменённой версии + (`persisted && changed`) и сравнивает нормализованные `previous/committed` snapshots, а не + сырые JSON-хеши. Поэтому H0/H1 не откатывают две быстрые мутации до H2, форматирование JSON + не влияет на решение, merged snapshot другого pod применяется, а local/no-op receipt ничего + не блокирует. +- Ошибка публикации readiness после успешного swap больше не помечает активный новый pool как + `FAILED`: повтор проверяет действующее соединение и восстанавливает readiness без второго + Flyway/swap. Старый pool передаётся на drain сразу после успешной атомарной публикации. +- PostgreSQL 16.3/Testcontainers подтверждает сохранность прежнего route при неверных + credentials и Flyway checksum, успешную замену на валидную БД, работу in-flight соединения, + drain старого pool и отсутствие повторной записи Secret в persisted-пути. +- Windows/Docker portability TLS-теста стабилизирована явным `https://localhost:`, + совпадающим с SAN тестового сертификата; production hostname verification не ослаблялась. +- AutoUpdateDocs повторно синхронизировал `docs/API.md`, `docs/ARCHITECTURE.md` и + `docs/INFRASTRUCTURE.md` с финальной receipt/snapshot-схемой. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `TenantConfigWatcherTest,TenantLifecycleServiceTest,DatabaseControllerTest,TenantRoutingDataSourceTest` | 53 теста, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `TenantLifecyclePostgreSqlIntegrationTest` | 2 теста, 0 failures, 0 errors, 0 skipped; реальный PostgreSQL 16.3/Testcontainers. | +| `KubernetesTenantSecretUpdaterTest` | 21 тест, 0 failures, 0 errors, 0 skipped; TLS, CAS, reconciliation и компенсация. | +| Полный `mvn -Dapi.version=1.44 test` | 200 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `git diff --check` | Успешно. | +| Повторные LF-нормализованные SHA-256 V1/V2/V3/V4 | Совпадают с ранее зафиксированными значениями; миграционные файлы не изменялись. | + +### № 11 — достоверный статус проверки конфликтов на дашборде + +- `formatLocalDate()` формирует `YYYY-MM-DD` из локальных компонентов `Date` без + `toISOString()`. `currentWeekDateRange()` создаёт отдельный понедельник и вычисляет + воскресенье как `понедельник + 6 дней`, поэтому начало месяца и переход года не мутируют + исходную дату повторно. +- Расписания кафедр загружаются независимо через `Promise.allSettled`. Результат хранит число + ответивших кафедр и одно из состояний: `COMPLETE`, `PARTIAL` или `NOT_RUN`; технические + причины отказов не входят в UI-модель. +- `conflictCheckPresentation()` проверяет диапазон, количество конфликтов и согласованность + счётчиков fail-closed. Зелёная карточка разрешена только для `COMPLETE`, когда проверены все + кафедры и конфликтов нет. `PARTIAL` всегда показывает предупреждение и не скрывает найденные + по доступной части конфликты, а полный отказ отображается как «Проверка не выполнена». +- Карточки используют русские безопасные тексты, экранирование, явные success/warning/error + состояния, период и число проверенных кафедр. Контейнер получил live-region и `aria-busy`, + кнопка — `type="button"`; после ошибки начальной загрузки «Перепроверить» повторно получает + справочники, а не анализирует пустой список. +- Тот же локальный formatter устранит сдвиг даты сегодняшнего расписания до 03:00 по Москве. + Остальная часть общей timezone-проблемы остаётся в объёме № 29. +- Добавлены dependency-free тесты на встроенном `node:test` и воспроизводимые npm-команды. + AutoUpdateDocs синхронизировал структуру, контракт Red Zone и команды проверки в + `docs/FRONTEND.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `npm test` в `frontend/` | 12 тестов, 12 passed, 0 failed; локальная полночь `2026-07-02 00:15 Europe/Moscow`, диапазон `2026-06-29…2026-07-05`, переход года и состояния отказов. | +| `npm run check` в `frontend/` | Синтаксис `dashboard-conflicts.js` и `dashboard.js`, затем 12 тестов — успешно. | +| Рекурсивный `node --check` для `frontend/**/*.js` и `frontend/**/*.mjs` | 25 файлов, ошибок нет. | +| Полный backend-регресс | Backend на этапе № 11 не изменялся; последний полный прогон этапа № 13 остаётся зелёным: 200/0/0/0. | +| `git diff --check` | Успешно. | +| Защищённые файлы | `BUG_REPORT.md` и существующие Flyway-миграции не изменялись. | + ## Точка продолжения -Текущий этап: **№ 13 — полная синхронизация изменённых tenant credentials/URL watcher-ом**. +Текущий этап: **№ 12 — access JWT и удалённый JavaScript в одном origin**. Следующая операция: -1. сравнивать полную нормализованную активную конфигурацию с persisted snapshot, а не только - набор доменов; -2. при изменении URL/username/password выполнять prepare → verify → Flyway → atomic swap без - повторной записи Secret; -3. считать hash применённым только после полной успешной синхронизации и не подтверждать - произвольное содержимое mount через `refreshHash()` после API-мутации; -4. добавить bounded retry/backoff и тесты изменения credentials, восстановления прежнего - файла после ошибки и межподового merged snapshot; -5. выполнить полный прогон и AutoUpdateDocs перед изменением статуса № 13. +1. инвентаризировать `localStorage`/`sessionStorage`, refresh-cookie, удалённые `import()` и + inline-скрипты во всех frontend entrypoints и HTTP/CSP-конфигурации; +2. выбрать единый контракт access JWT только в памяти с восстановлением через HttpOnly + refresh-cookie, не оставляя токен в Web Storage после login/refresh/logout/reload; +3. локализовать и зафиксировать внешние runtime-зависимости, затем ввести CSP без + `unsafe-inline`/`unsafe-eval` и устранить несовместимые inline-вставки; +4. покрыть login/refresh/logout/reload тестами и выполнить статический аудит storage/imports/CSP + перед AutoUpdateDocs и изменением статуса № 12. diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java index 7d067ac..64b205b 100755 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java @@ -3,6 +3,7 @@ package com.magistr.app.config.tenant; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.magistr.app.config.tenant.health.TenantReadinessRegistry; +import com.magistr.app.service.TenantLifecycleException; import com.magistr.app.service.TenantLifecycleService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,24 +11,35 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import java.io.File; +import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Comparator; import java.util.HexFormat; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Locale; +import java.util.Objects; +import java.util.Set; +import java.util.function.LongSupplier; /** - * Периодически перечитывает tenants.json (mounted Secret). - * Если Secret был обновлён через K8s API, этот компонент - * подхватит изменения и синхронизирует in-memory datasource'ы. - * - * Также отвечает за инициализацию БД (init.sql) для новых тенантов. + * Периодически применяет конфигурацию тенантов из смонтированного tenants.json. + * Все чтения и lifecycle-изменения сериализуются одним monitor'ом сервиса. */ @Component public class TenantConfigWatcher { private static final Logger log = LoggerFactory.getLogger(TenantConfigWatcher.class); + private static final String MISSING_FAILURE_KEY = "missing"; + private static final String READ_FAILURE_KEY = "read"; + + static final long RETRY_BASE_DELAY_MILLIS = 30_000L; + static final long RETRY_MAX_DELAY_MILLIS = 300_000L; private final TenantLifecycleService tenantLifecycleService; private final TenantReadinessRegistry readinessRegistry; @@ -39,9 +51,23 @@ public class TenantConfigWatcher { @Value("${app.tenants.config-required:false}") private boolean tenantsConfigRequired; - // Хеш последнего прочитанного конфига — чтобы не перезагружать зря + /** Хеш означает только полностью применённое содержимое файла. */ private String lastConfigHash = ""; + private ConfigSnapshot lastAppliedSnapshot; + + private String failedRevisionKey = ""; + private int consecutiveFailures; + private long retryNotBeforeMillis; + + /** + * Fence хранит семантические снимки, а не байтовые представления JSON. + * Поэтому форматирование файла не может ошибочно снять или установить fence. + */ + private ConfigSnapshot expectedCommittedSnapshot; + private final Set deferredSnapshots = new LinkedHashSet<>(); + private boolean configurationUnavailable; + private LongSupplier currentTimeMillis = System::currentTimeMillis; public TenantConfigWatcher(TenantLifecycleService tenantLifecycleService, TenantReadinessRegistry readinessRegistry) { @@ -49,73 +75,135 @@ public class TenantConfigWatcher { this.readinessRegistry = readinessRegistry; } - /** - * Каждые 30 секунд проверяет, изменился ли tenants.json. - */ @Scheduled(fixedDelay = 30_000, initialDelay = 30_000) public void watchForChanges() { tenantLifecycleService.executeSerialized(this::watchForChangesSerialized); } private void watchForChangesSerialized() { + long now = currentTimeMillis.getAsLong(); + Path path = Path.of(tenantsConfigPath); + if (!Files.exists(path)) { + if (tenantsConfigRequired) { + handleRequiredMissingFile(now); + } + return; + } + + if (isRetryDeferred(READ_FAILURE_KEY, now)) { + logDeferredRetry(now); + return; + } + + String failureKey = READ_FAILURE_KEY; try { - File file = new File(tenantsConfigPath); - if (!file.exists()) { - if (tenantsConfigRequired) { - readinessRegistry.markConfigurationFailure(); - if (!configurationUnavailable) { - log.error("Обязательный файл конфигурации тенантов недоступен"); - } - configurationUnavailable = true; - } + String content = Files.readString(path, StandardCharsets.UTF_8); + String hash = configHash(content); + failureKey = hash; + Projection projection = parseProjection(content, hash); + + // Даже неизменившееся содержимое сначала разбирается: fence никогда не + // принимает решение по сырым байтам до проверки структуры JSON. + if (hash.equals(lastConfigHash) && !configurationUnavailable) { + clearFenceWhenExpectedSnapshotIsAlreadyApplied(projection.snapshot()); + return; + } + if (isRetryDeferred(hash, now)) { + logDeferredRetry(now); + return; + } + if (!hash.equals(failedRevisionKey)) { + resetRetryState(); + } + if (shouldDefer(projection.snapshot())) { return; } - String content = new String(java.nio.file.Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8); - String hash = configHash(content); - - if (hash.equals(lastConfigHash) && !configurationUnavailable) { - return; // Ничего не изменилось - } - - log.info("Обнаружено изменение tenants.json (хеш: {} -> {}), перечитываем конфиг", lastConfigHash, hash); - List newTenants = objectMapper.readValue(content, new TypeReference<>() {}); - syncTenants(newTenants); - lastConfigHash = hash; - configurationUnavailable = false; - - } catch (Exception e) { - readinessRegistry.markConfigurationFailure(); - configurationUnavailable = true; - log.error("Ошибка при проверке конфига тенантов: errorType={}", e.getClass().getSimpleName()); - log.debug("Технические детали синхронизации конфига тенантов", e); + log.info("Обнаружено изменение tenants.json, выполняется синхронизация конфигурации тенантов"); + syncTenants(projection.tenants()); + markApplied(projection); + } catch (Exception failure) { + recordFailure(failureKey, failure); } } /** - * Обновляет хеш конфига после ручного обновления Secret с этого же пода. + * Перед API-мутацией приводит runtime к актуальной безопасной проекции файла. + * Ошибка чтения или синхронизации не скрывается: API-операция не должна начинаться + * с неизвестного baseline. */ - public void refreshHash() { - tenantLifecycleService.executeSerialized(this::refreshHashSerialized); + public void prepareForApiMutation() { + tenantLifecycleService.executeSerialized(this::prepareForApiMutationSerialized); } - private void refreshHashSerialized() { - try { - File file = new File(tenantsConfigPath); - if (file.exists()) { - String content = new String(java.nio.file.Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8); - lastConfigHash = configHash(content); - } else if (tenantsConfigRequired) { - readinessRegistry.markConfigurationFailure(); - configurationUnavailable = true; + private void prepareForApiMutationSerialized() { + Path path = Path.of(tenantsConfigPath); + if (!Files.exists(path)) { + if (!tenantsConfigRequired) { + return; } - } catch (Exception e) { - readinessRegistry.markConfigurationFailure(); - configurationUnavailable = true; - log.warn("Не удалось обновить хеш конфига тенантов: errorType={}", - e.getClass().getSimpleName()); - log.debug("Технические детали обновления хеша тенантов", e); + TenantLifecycleException failure = new TenantLifecycleException( + "Обязательный файл конфигурации тенантов недоступен" + ); + recordFailure(MISSING_FAILURE_KEY, failure); + throw failure; } + + String failureKey = READ_FAILURE_KEY; + try { + String content = Files.readString(path, StandardCharsets.UTF_8); + String hash = configHash(content); + failureKey = hash; + Projection projection = parseProjection(content, hash); + + if (hash.equals(lastConfigHash) && !configurationUnavailable) { + clearFenceWhenExpectedSnapshotIsAlreadyApplied(projection.snapshot()); + return; + } + if (shouldDefer(projection.snapshot())) { + return; + } + + syncTenants(projection.tenants()); + markApplied(projection); + } catch (Exception failure) { + recordFailure(failureKey, failure); + if (failure instanceof TenantLifecycleException lifecycleFailure) { + throw lifecycleFailure; + } + throw new TenantLifecycleException( + "Не удалось подготовить актуальную конфигурацию тенантов перед изменением", + failure + ); + } + } + + /** + * Устанавливает snapshot fence только после подтверждённой записи в общее + * хранилище. Локальные и no-op операции не создают ложных ожиданий от mount. + */ + public void registerSuccessfulMutation(TenantSecretUpdateReceipt receipt) { + Objects.requireNonNull(receipt, "Квитанция изменения tenant Secret не задана"); + tenantLifecycleService.executeSerialized(() -> registerSuccessfulMutationSerialized(receipt)); + } + + private void registerSuccessfulMutationSerialized(TenantSecretUpdateReceipt receipt) { + if (!receipt.persisted() || !receipt.changed()) { + return; + } + + ConfigSnapshot previous = snapshotOf(receipt.previousTenants()); + ConfigSnapshot committed = snapshotOf(receipt.committedTenants()); + + if (lastAppliedSnapshot != null) { + deferredSnapshots.add(lastAppliedSnapshot); + } + if (expectedCommittedSnapshot != null) { + deferredSnapshots.add(expectedCommittedSnapshot); + } + deferredSnapshots.add(previous); + deferredSnapshots.remove(committed); + expectedCommittedSnapshot = committed; } static String configHash(String content) { @@ -127,11 +215,158 @@ public class TenantConfigWatcher { } } - /** - * Синхронизирует in-memory тенантов с конфигом из файла. - */ - private void syncTenants(List newTenants) { - tenantLifecycleService.synchronizeFromPersistedConfig(newTenants); + private Projection parseProjection(String content, String hash) throws IOException { + List tenants = objectMapper.readValue(content, new TypeReference<>() { }); + if (tenants == null) { + throw new IllegalArgumentException( + "Корневое значение конфигурации тенантов должно быть массивом" + ); + } + if (tenantsConfigRequired && tenants.isEmpty()) { + throw new IllegalArgumentException( + "Обязательная конфигурация тенантов не может быть пустой" + ); + } + return new Projection(hash, List.copyOf(tenants), snapshotOf(tenants)); } + private ConfigSnapshot snapshotOf(List tenants) { + Objects.requireNonNull(tenants, "Список конфигураций тенантов не задан"); + List normalized = new ArrayList<>(tenants.size()); + for (TenantConfig tenant : tenants) { + Objects.requireNonNull(tenant, "Конфигурация тенанта не задана"); + String domain = normalizeDomain(tenant.getDomain()); + String name = tenant.getName() == null || tenant.getName().isBlank() + ? domain + : tenant.getName().trim(); + String url = tenant.getUrl() == null ? null : tenant.getUrl().trim(); + normalized.add(new NormalizedTenantConfig( + name, + domain, + url, + tenant.getUsername(), + tenant.getPassword() + )); + } + normalized.sort(NormalizedTenantConfig.ORDER); + return new ConfigSnapshot(normalized); + } + + private String normalizeDomain(String domain) { + return domain == null ? null : domain.trim().toLowerCase(Locale.ROOT); + } + + private void syncTenants(List tenants) { + tenantLifecycleService.synchronizeFromPersistedConfig(tenants); + } + + private boolean shouldDefer(ConfigSnapshot snapshot) { + return expectedCommittedSnapshot != null && deferredSnapshots.contains(snapshot); + } + + private void clearFenceWhenExpectedSnapshotIsAlreadyApplied(ConfigSnapshot snapshot) { + if (snapshot.equals(expectedCommittedSnapshot)) { + clearSnapshotFence(); + } + } + + private void markApplied(Projection projection) { + lastConfigHash = projection.hash(); + lastAppliedSnapshot = projection.snapshot(); + configurationUnavailable = false; + resetRetryState(); + clearSnapshotFence(); + } + + private void handleRequiredMissingFile(long now) { + if (isRetryDeferred(MISSING_FAILURE_KEY, now)) { + logDeferredRetry(now); + return; + } + recordFailure( + MISSING_FAILURE_KEY, + new TenantLifecycleException("Обязательный файл конфигурации тенантов недоступен") + ); + } + + private boolean isRetryDeferred(String failureKey, long now) { + return failureKey.equals(failedRevisionKey) && now < retryNotBeforeMillis; + } + + private void logDeferredRetry(long now) { + log.debug("Повторная синхронизация tenants.json отложена ещё на {} мс", + Math.max(0L, retryNotBeforeMillis - now)); + } + + private void recordFailure(String failureKey, Exception failure) { + readinessRegistry.markConfigurationFailure(); + configurationUnavailable = true; + long retryDelay = registerFailure(failureKey); + log.error("Ошибка синхронизации конфигурации тенантов: попытка={}, " + + "следующий повтор не ранее чем через {} мс, errorType={}", + consecutiveFailures, + retryDelay, + failure.getClass().getSimpleName()); + log.debug("Технические детали синхронизации конфигурации тенантов", failure); + } + + private long registerFailure(String failureKey) { + if (failureKey.equals(failedRevisionKey) && consecutiveFailures > 0) { + consecutiveFailures = Math.min(consecutiveFailures + 1, 31); + } else { + failedRevisionKey = failureKey; + consecutiveFailures = 1; + } + long delay = retryDelayMillis(consecutiveFailures); + retryNotBeforeMillis = safeAdd(currentTimeMillis.getAsLong(), delay); + return delay; + } + + static long retryDelayMillis(int failureCount) { + long delay = RETRY_BASE_DELAY_MILLIS; + for (int attempt = 1; attempt < failureCount && delay < RETRY_MAX_DELAY_MILLIS; attempt++) { + delay = Math.min(delay * 2, RETRY_MAX_DELAY_MILLIS); + } + return delay; + } + + private long safeAdd(long value, long increment) { + return value > Long.MAX_VALUE - increment ? Long.MAX_VALUE : value + increment; + } + + private void resetRetryState() { + failedRevisionKey = ""; + consecutiveFailures = 0; + retryNotBeforeMillis = 0L; + } + + private void clearSnapshotFence() { + expectedCommittedSnapshot = null; + deferredSnapshots.clear(); + } + + private record Projection(String hash, List tenants, ConfigSnapshot snapshot) { + } + + private record ConfigSnapshot(List tenants) { + private ConfigSnapshot { + tenants = List.copyOf(tenants); + } + } + + private record NormalizedTenantConfig( + String name, + String domain, + String url, + String username, + String password + ) { + private static final Comparator NULL_SAFE_TEXT = Comparator.nullsFirst(String::compareTo); + private static final Comparator ORDER = + Comparator.comparing(NormalizedTenantConfig::domain, NULL_SAFE_TEXT) + .thenComparing(NormalizedTenantConfig::name, NULL_SAFE_TEXT) + .thenComparing(NormalizedTenantConfig::url, NULL_SAFE_TEXT) + .thenComparing(NormalizedTenantConfig::username, NULL_SAFE_TEXT) + .thenComparing(NormalizedTenantConfig::password, NULL_SAFE_TEXT); + } } diff --git a/backend/src/main/java/com/magistr/app/controller/DatabaseController.java b/backend/src/main/java/com/magistr/app/controller/DatabaseController.java index 48ecbc1..df34969 100755 --- a/backend/src/main/java/com/magistr/app/controller/DatabaseController.java +++ b/backend/src/main/java/com/magistr/app/controller/DatabaseController.java @@ -7,6 +7,7 @@ import com.magistr.app.config.tenant.TenantContext; import com.magistr.app.config.tenant.TenantRoutingDataSource; import com.magistr.app.model.Role; import com.magistr.app.service.TenantLifecycleException; +import com.magistr.app.service.TenantLifecycleMutationResult; import com.magistr.app.service.TenantLifecycleService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -90,8 +91,11 @@ public class DatabaseController { public ResponseEntity> addTenant(@RequestBody TenantConfig config) { try { return tenantLifecycleService.executeSerialized(() -> { - TenantConfig saved = tenantLifecycleService.addOrUpdateTenant(config); - tenantConfigWatcher.refreshHash(); + tenantConfigWatcher.prepareForApiMutation(); + TenantLifecycleMutationResult mutation = + tenantLifecycleService.addOrUpdateTenantWithReceipt(config); + tenantConfigWatcher.registerSuccessfulMutation(mutation.receipt()); + TenantConfig saved = mutation.tenant(); Map result = new HashMap<>(); result.put("success", true); result.put("message", "Тенант '" + saved.getDomain() + "' добавлен"); @@ -111,8 +115,11 @@ public class DatabaseController { public ResponseEntity> removeTenant(@PathVariable("domain") String domain) { try { return tenantLifecycleService.executeSerialized(() -> { - TenantConfig removed = tenantLifecycleService.removeTenant(domain); - tenantConfigWatcher.refreshHash(); + tenantConfigWatcher.prepareForApiMutation(); + TenantLifecycleMutationResult mutation = + tenantLifecycleService.removeTenantWithReceipt(domain); + tenantConfigWatcher.registerSuccessfulMutation(mutation.receipt()); + TenantConfig removed = mutation.tenant(); Map result = new HashMap<>(); result.put("success", true); result.put("message", "Тенант '" + removed.getDomain() + "' удалён"); diff --git a/backend/src/main/java/com/magistr/app/service/TenantLifecycleMutationResult.java b/backend/src/main/java/com/magistr/app/service/TenantLifecycleMutationResult.java new file mode 100644 index 0000000..da8ea0b --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/TenantLifecycleMutationResult.java @@ -0,0 +1,41 @@ +package com.magistr.app.service; + +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantSecretUpdateReceipt; + +import java.util.Objects; + +/** + * Результат успешной lifecycle-мутации тенанта вместе с квитанцией персистенции. + * + *

Конфигурация копируется при создании и чтении, чтобы вызывающий код не мог изменить + * уже активированный runtime-снимок через изменяемый DTO.

+ */ +public final class TenantLifecycleMutationResult { + + private final TenantConfig tenant; + private final TenantSecretUpdateReceipt receipt; + + public TenantLifecycleMutationResult(TenantConfig tenant, TenantSecretUpdateReceipt receipt) { + this.tenant = copy(Objects.requireNonNull(tenant, "Конфигурация тенанта не задана")); + this.receipt = Objects.requireNonNull(receipt, "Квитанция изменения tenant Secret не задана"); + } + + public TenantConfig tenant() { + return copy(tenant); + } + + public TenantSecretUpdateReceipt receipt() { + return receipt; + } + + private static TenantConfig copy(TenantConfig source) { + return new TenantConfig( + source.getName(), + source.getDomain(), + source.getUrl(), + source.getUsername(), + source.getPassword() + ); + } +} diff --git a/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java b/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java index 4de1592..2105925 100644 --- a/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java +++ b/backend/src/main/java/com/magistr/app/service/TenantLifecycleService.java @@ -21,10 +21,9 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.NoSuchElementException; -import java.util.Set; +import java.util.Objects; import java.util.regex.Pattern; import java.util.function.Supplier; -import java.util.stream.Collectors; @Service public class TenantLifecycleService { @@ -72,6 +71,13 @@ public class TenantLifecycleService { * Добавляет или обновляет tenant без разрыва действующего подключения. */ public synchronized TenantConfig addOrUpdateTenant(TenantConfig requestedConfig) { + return addOrUpdateTenantWithReceipt(requestedConfig).tenant(); + } + + /** + * Добавляет или обновляет tenant и возвращает подтверждённый результат персистенции. + */ + public synchronized TenantLifecycleMutationResult addOrUpdateTenantWithReceipt(TenantConfig requestedConfig) { TenantConfig config = validateAndNormalize(requestedConfig); Map oldConfigs = routingDataSource.snapshotTenantConfigs(); Map desiredConfigs = new LinkedHashMap<>(oldConfigs); @@ -96,7 +102,7 @@ public class TenantLifecycleService { publishSuccessfulMutation(receipt, sortedConfigs(desiredConfigs), config); retireDataSource(previous == null ? null : previous.dataSource()); log.info("Lifecycle тенанта '{}' успешно применён", config.getDomain()); - return copyConfig(config); + return new TenantLifecycleMutationResult(config, receipt); } finally { if (!activated) { closeCandidateDataSource(candidate); @@ -108,6 +114,13 @@ public class TenantLifecycleService { * Сначала сохраняет desired-конфигурацию, затем локально отключает tenant. */ public synchronized TenantConfig removeTenant(String requestedDomain) { + return removeTenantWithReceipt(requestedDomain).tenant(); + } + + /** + * Удаляет tenant и возвращает подтверждённый результат персистенции. + */ + public synchronized TenantLifecycleMutationResult removeTenantWithReceipt(String requestedDomain) { String domain = validateAndNormalizeDomain(requestedDomain); Map oldConfigs = routingDataSource.snapshotTenantConfigs(); TenantConfig existing = oldConfigs.get(domain); @@ -132,13 +145,14 @@ public class TenantLifecycleService { publishSuccessfulMutation(receipt, sortedConfigs(desiredConfigs), null); retireDataSource(removed.dataSource()); log.info("Lifecycle тенанта '{}' удалён", domain); - return copyConfig(existing); + return new TenantLifecycleMutationResult(existing, receipt); } /** * Синхронизирует уже персистированный список из mounted Secret. Метод не пишет * Secret повторно и использует тот же monitor, что ручные API add/update/remove. - * Обновление параметров существующего domain остаётся отдельной задачей watcher №13. + * Для нового или изменённого домена подключение сначала полностью подготавливается, + * проверяется и мигрируется, после чего атомарно заменяет прежний runtime-снимок. */ public synchronized void synchronizeFromPersistedConfig(List requestedConfigs) { if (requestedConfigs == null) { @@ -146,47 +160,55 @@ public class TenantLifecycleService { } List configs = requestedConfigs.stream() .map(this::validateAndNormalize) + .sorted(Comparator.comparing(TenantConfig::getDomain)) .toList(); - Set desiredDomains = configs.stream() - .map(TenantConfig::getDomain) - .collect(Collectors.toSet()); - - readinessRegistry.clearConfigurationFailure(); - readinessRegistry.replaceDesired(configs); - if (desiredDomains.size() != configs.size()) { - throw new IllegalArgumentException("Конфигурация содержит повторяющиеся домены тенантов"); - } + Map desiredConfigs = new LinkedHashMap<>(); for (TenantConfig config : configs) { - if (!routingDataSource.hasTenant(config.getDomain())) { - log.info("Активируем нового тенанта '{}' из persisted-конфигурации", config.getDomain()); - activatePersistedConfig(config); + if (desiredConfigs.put(config.getDomain(), config) != null) { + throw new IllegalArgumentException("Конфигурация содержит повторяющиеся домены тенантов"); } } - for (String existingDomain : new ArrayList<>(routingDataSource.snapshotTenantConfigs().keySet())) { - if (!desiredDomains.contains(existingDomain)) { + Map currentConfigs = routingDataSource.snapshotTenantConfigs(); + readinessRegistry.replaceDesired(configs); + + for (TenantConfig config : configs) { + TenantConfig currentConfig = currentConfigs.get(config.getDomain()); + if (currentConfig == null) { + log.info("Активируем нового тенанта '{}' из persisted-конфигурации", config.getDomain()); + activatePersistedConfig(config); + } else if (!sameConfig(currentConfig, config)) { + log.info("Заменяем подключение тенанта '{}' из persisted-конфигурации", config.getDomain()); + activatePersistedConfig(config); + } else { + recoverPersistedReadinessIfNeeded(config); + } + } + + for (String existingDomain : new ArrayList<>(currentConfigs.keySet())) { + if (!desiredConfigs.containsKey(existingDomain)) { log.info("Отключаем тенанта '{}' — его нет в persisted-конфигурации", existingDomain); TenantRoutingDataSource.TenantState removed = routingDataSource.removeTenantAtomically(existingDomain); retireDataSource(removed == null ? null : removed.dataSource()); } } + + readinessRegistry.clearConfigurationFailure(); } private void activatePersistedConfig(TenantConfig config) { HikariDataSource candidate = null; boolean activated = false; + TenantRoutingDataSource.TenantState previous; readinessRegistry.markMigrationStarted(config); try { candidate = prepareCandidate(config); verifyConnection(candidate); migrateCandidate(candidate); - TenantRoutingDataSource.TenantState previous = routingDataSource.swapTenant(config, candidate); + previous = routingDataSource.swapTenant(config, candidate); activated = true; - readinessRegistry.markMigrationSucceeded(config); - readinessRegistry.markConnectivity(config.getDomain(), true); - retireDataSource(previous == null ? null : previous.dataSource()); } catch (RuntimeException activationFailure) { readinessRegistry.markMigrationFailed(config); throw activationFailure; @@ -195,6 +217,29 @@ public class TenantLifecycleService { closeCandidateDataSource(candidate); } } + + // После swap новый pool уже является рабочим. Ошибка публикации readiness не должна + // ошибочно помечать успешно мигрированный pool как FAILED: следующий retry восстановит + // состояние по активному подключению без повторной замены DataSource. + retireDataSource(previous == null ? null : previous.dataSource()); + readinessRegistry.markMigrationSucceeded(config); + readinessRegistry.markConnectivity(config.getDomain(), true); + } + + private void recoverPersistedReadinessIfNeeded(TenantConfig config) { + TenantReadinessRegistry.TenantStatus status = + readinessRegistry.snapshot().get(config.getDomain()); + if (status == null + || status.migrationState() == TenantReadinessRegistry.MigrationState.SUCCEEDED) { + return; + } + if (!routingDataSource.testConnection(config.getDomain())) { + throw new TenantLifecycleException( + "Активное подключение тенанта не прошло проверку после предыдущей синхронизации" + ); + } + readinessRegistry.markMigrationSucceeded(config); + readinessRegistry.markConnectivity(config.getDomain(), true); } private HikariDataSource prepareCandidate(TenantConfig config) { @@ -398,9 +443,24 @@ public class TenantLifecycleService { ); } + private boolean sameConfig(TenantConfig first, TenantConfig second) { + TenantConfig normalizedFirst = validateAndNormalize(first); + TenantConfig normalizedSecond = validateAndNormalize(second); + return Objects.equals(normalizedFirst.getName(), normalizedSecond.getName()) + && Objects.equals(normalizedFirst.getDomain(), normalizedSecond.getDomain()) + && Objects.equals(normalizedFirst.getUrl(), normalizedSecond.getUrl()) + && Objects.equals(normalizedFirst.getUsername(), normalizedSecond.getUsername()) + && Objects.equals(normalizedFirst.getPassword(), normalizedSecond.getPassword()); + } + private void retireDataSource(DataSource dataSource) { if (dataSource != null) { - retiredPoolService.retire(dataSource); + try { + retiredPoolService.retire(dataSource); + } catch (RuntimeException retirementFailure) { + logTechnicalFailure("Не удалось передать прежний tenant pool на отложенное закрытие", + retirementFailure); + } } } diff --git a/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java b/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java index 2db3531..04e14e0 100644 --- a/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java +++ b/backend/src/test/java/com/magistr/app/config/tenant/KubernetesTenantSecretUpdaterTest.java @@ -511,7 +511,10 @@ class KubernetesTenantSecretUpdaterTest { files.tokenPath(), files.namespacePath(), files.caPath(), - server.url("/").toString(), + // MockWebServer на Windows может вернуть canonical loopback hostname + // kubernetes.docker.internal. Фиксируем имя из SAN тестового сертификата, + // сохраняя реальную проверку hostname в клиенте. + "https://localhost:" + server.getPort(), "tenants-secret", objectMapper, maxAttempts, diff --git a/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java b/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java index 79349c1..067d7f7 100644 --- a/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java +++ b/backend/src/test/java/com/magistr/app/config/tenant/TenantConfigWatcherTest.java @@ -1,33 +1,35 @@ package com.magistr.app.config.tenant; import com.magistr.app.config.tenant.health.TenantReadinessRegistry; -import com.magistr.app.service.RetiredTenantPoolService; -import com.magistr.app.service.TenantDatabaseMigrationService; +import com.magistr.app.service.TenantLifecycleException; import com.magistr.app.service.TenantLifecycleService; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.io.TempDir; +import org.mockito.ArgumentCaptor; +import org.springframework.boot.test.system.CapturedOutput; +import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.test.util.ReflectionTestUtils; import java.nio.file.Files; import java.nio.file.Path; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; +import java.util.function.LongSupplier; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyList; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.never; +@ExtendWith(OutputCaptureExtension.class) class TenantConfigWatcherTest { @TempDir @@ -48,29 +50,62 @@ class TenantConfigWatcherTest { .isNotEqualTo(TenantConfigWatcher.configHash("tenant-b")); } + @Test + void prepareForApiMutationSynchronizesUnappliedBaselineOnce() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + String content = json("alpha"); + Files.writeString(configPath, content); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + + watcher.prepareForApiMutation(); + watcher.prepareForApiMutation(); + + verify(lifecycleService).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) + .isEqualTo(TenantConfigWatcher.configHash(content)); + assertThat(ReflectionTestUtils.getField(watcher, "lastAppliedSnapshot")).isNotNull(); + } + + @Test + void prepareForApiMutationPropagatesReadFailure() throws Exception { + Path configPath = Files.createDirectory(tempDirectory.resolve("tenants.json")); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantReadinessRegistry readinessRegistry = mock(TenantReadinessRegistry.class); + TenantConfigWatcher watcher = watcher( + lifecycleService, + readinessRegistry, + configPath, + new AtomicLong(1_000L) + ); + + assertThatThrownBy(watcher::prepareForApiMutation) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось подготовить актуальную конфигурацию тенантов перед изменением"); + + verify(readinessRegistry).markConfigurationFailure(); + verify(lifecycleService, never()).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "configurationUnavailable")).isEqualTo(true); + } + @Test void advancesHashOnlyAfterSuccessfulLifecycleSynchronization() throws Exception { Path configPath = tempDirectory.resolve("tenants.json"); - String content = """ - [{ - "name": "Тестовый tenant", - "domain": "alpha", - "url": "jdbc:postgresql://db/alpha", - "username": "alpha", - "password": "тестовый-пароль" - }] - """; + String content = json("alpha"); Files.writeString(configPath, content); TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); doThrow(new IllegalStateException("тестовая ошибка синхронизации")) .doNothing() .when(lifecycleService).synchronizeFromPersistedConfig(anyList()); - TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + AtomicLong now = new AtomicLong(1_000L); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath, now); watcher.watchForChanges(); assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")).isEqualTo(""); + now.addAndGet(TenantConfigWatcher.RETRY_BASE_DELAY_MILLIS); watcher.watchForChanges(); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) .isEqualTo(TenantConfigWatcher.configHash(content)); verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(anyList()); @@ -80,112 +115,441 @@ class TenantConfigWatcherTest { } @Test - void successfulHashPreventsRepeatedSynchronizationOfSameContent() throws Exception { + void retriesSameRevisionOnlyAfterBackoffAndResetsStateAfterSuccess() throws Exception { Path configPath = tempDirectory.resolve("tenants.json"); String content = "[]"; Files.writeString(configPath, content); TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); - doNothing().when(lifecycleService).synchronizeFromPersistedConfig(anyList()); - TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + doThrow(new IllegalStateException("первая тестовая ошибка")) + .doThrow(new IllegalStateException("вторая тестовая ошибка")) + .doNothing() + .when(lifecycleService).synchronizeFromPersistedConfig(anyList()); + AtomicLong now = new AtomicLong(10_000L); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath, now); watcher.watchForChanges(); watcher.watchForChanges(); - verify(lifecycleService).synchronizeFromPersistedConfig(anyList()); + + now.addAndGet(TenantConfigWatcher.RETRY_BASE_DELAY_MILLIS); + watcher.watchForChanges(); + verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(anyList()); + + now.addAndGet(TenantConfigWatcher.RETRY_BASE_DELAY_MILLIS * 2 - 1); + watcher.watchForChanges(); + verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(anyList()); + + now.incrementAndGet(); + watcher.watchForChanges(); + + verify(lifecycleService, times(3)).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "consecutiveFailures")).isEqualTo(0); + assertThat(ReflectionTestUtils.getField(watcher, "retryNotBeforeMillis")).isEqualTo(0L); assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) .isEqualTo(TenantConfigWatcher.configHash(content)); } @Test - void watcherCannotReadBetweenSerializedApiMutationAndRefreshHash() throws Exception { + void retryDelayGrowsExponentiallyAndIsCapped() { + assertThat(TenantConfigWatcher.retryDelayMillis(1)).isEqualTo(30_000L); + assertThat(TenantConfigWatcher.retryDelayMillis(2)).isEqualTo(60_000L); + assertThat(TenantConfigWatcher.retryDelayMillis(3)).isEqualTo(120_000L); + assertThat(TenantConfigWatcher.retryDelayMillis(4)).isEqualTo(240_000L); + assertThat(TenantConfigWatcher.retryDelayMillis(5)).isEqualTo(300_000L); + assertThat(TenantConfigWatcher.retryDelayMillis(31)).isEqualTo(300_000L); + } + + @Test + void newRevisionBypassesBackoffImmediately() throws Exception { Path configPath = tempDirectory.resolve("tenants.json"); - String content = "[]"; - Files.writeString(configPath, content); - TenantRoutingDataSource routingDataSource = mock(TenantRoutingDataSource.class); - TenantLifecycleService lifecycleService = new TenantLifecycleService( - routingDataSource, - mock(TenantConfigStore.class), - mock(TenantDatabaseMigrationService.class), - mock(RetiredTenantPoolService.class), - mock(TenantReadinessRegistry.class) - ); - TenantConfigWatcher watcher = new TenantConfigWatcher( + Files.writeString(configPath, "[]"); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + doThrow(new IllegalStateException("тестовая ошибка")) + .doNothing() + .when(lifecycleService).synchronizeFromPersistedConfig(anyList()); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath, new AtomicLong(1_000L)); + + watcher.watchForChanges(); + Files.writeString(configPath, "[ ]"); + watcher.watchForChanges(); + + verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) + .isEqualTo(TenantConfigWatcher.configHash("[ ]")); + } + + @Test + void restoredLastAppliedRevisionIsReconciledAfterFailedChange() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + String firstRevision = "[]"; + String failedRevision = "[ ]"; + Files.writeString(configPath, firstRevision); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + doNothing() + .doThrow(new IllegalStateException("тестовая ошибка новой ревизии")) + .doNothing() + .when(lifecycleService).synchronizeFromPersistedConfig(anyList()); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath, new AtomicLong(1_000L)); + + watcher.watchForChanges(); + Files.writeString(configPath, failedRevision); + watcher.watchForChanges(); + Files.writeString(configPath, firstRevision); + watcher.watchForChanges(); + + verify(lifecycleService, times(3)).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) + .isEqualTo(TenantConfigWatcher.configHash(firstRevision)); + assertThat(ReflectionTestUtils.getField(watcher, "configurationUnavailable")).isEqualTo(false); + } + + @Test + void semanticFenceDefersStaleProjectionWithDifferentFormatting() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + String baseline = json("alpha"); + Files.writeString(configPath, baseline); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + watcher.prepareForApiMutation(); + watcher.registerSuccessfulMutation(receipt( + true, + true, + tenants("alpha"), + tenants("alpha", "beta") + )); + + Files.writeString(configPath, prettyJson("alpha")); + watcher.watchForChanges(); + + verify(lifecycleService).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) + .isEqualTo(TenantConfigWatcher.configHash(baseline)); + assertThat(ReflectionTestUtils.getField(watcher, "expectedCommittedSnapshot")).isNotNull(); + } + + @Test + void prepareForNextMutationDoesNotApplyKnownStaleProjection() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + Files.writeString(configPath, json("alpha")); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + watcher.prepareForApiMutation(); + watcher.registerSuccessfulMutation(receipt( + true, + true, + tenants("alpha"), + tenants("alpha", "beta") + )); + + watcher.prepareForApiMutation(); + + verify(lifecycleService).synchronizeFromPersistedConfig(anyList()); + } + + @Test + void nonPersistedReceiptDoesNotArmFence() { + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantConfigWatcher watcher = watcher( lifecycleService, - mock(TenantReadinessRegistry.class) + tempDirectory.resolve("tenants.json") ); - ReflectionTestUtils.setField(watcher, "tenantsConfigPath", configPath.toString()); - CountDownLatch apiMutationReachedRefreshWindow = new CountDownLatch(1); - CountDownLatch allowApiRefresh = new CountDownLatch(1); - AtomicReference watcherThread = new AtomicReference<>(); - ExecutorService executor = Executors.newFixedThreadPool(2); - try { - Future api = executor.submit(() -> lifecycleService.executeSerialized(() -> { - apiMutationReachedRefreshWindow.countDown(); - await(allowApiRefresh, "Ожидание разрешения refreshHash прервано"); - watcher.refreshHash(); - })); - assertThat(apiMutationReachedRefreshWindow.await(5, TimeUnit.SECONDS)).isTrue(); + watcher.registerSuccessfulMutation(receipt( + false, + true, + tenants("alpha"), + tenants("alpha", "beta") + )); - Future concurrentWatcher = executor.submit(() -> { - watcherThread.set(Thread.currentThread()); - watcher.watchForChanges(); - }); - awaitBlocked(watcherThread); - assertThat(concurrentWatcher).isNotDone(); + assertThat(ReflectionTestUtils.getField(watcher, "expectedCommittedSnapshot")).isNull(); + assertThat((Iterable) ReflectionTestUtils.getField(watcher, "deferredSnapshots")).isEmpty(); + } - allowApiRefresh.countDown(); - api.get(5, TimeUnit.SECONDS); - concurrentWatcher.get(5, TimeUnit.SECONDS); + @Test + void persistedNoOpDoesNotSuppressMergedProjection() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + Files.writeString(configPath, json("alpha")); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + watcher.prepareForApiMutation(); + watcher.registerSuccessfulMutation(receipt( + true, + false, + tenants("alpha"), + tenants("alpha") + )); - assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")) - .isEqualTo(TenantConfigWatcher.configHash(content)); - verify(routingDataSource, never()).snapshotTenantConfigs(); - } finally { - allowApiRefresh.countDown(); - executor.shutdownNow(); - assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); - } + Files.writeString(configPath, json("alpha", "gamma")); + watcher.watchForChanges(); + + ArgumentCaptor> captor = tenantListCaptor(); + verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(captor.capture()); + assertThat(captor.getAllValues().get(1)) + .extracting(TenantConfig::getDomain) + .containsExactly("alpha", "gamma"); + assertThat(ReflectionTestUtils.getField(watcher, "expectedCommittedSnapshot")).isNull(); + } + + @Test + void twoRapidMutationsDeferIntermediateProjectionUntilLatestCommit() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + Files.writeString(configPath, json("alpha")); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + watcher.prepareForApiMutation(); + + watcher.registerSuccessfulMutation(receipt( + true, + true, + tenants("alpha"), + tenants("alpha", "beta") + )); + watcher.registerSuccessfulMutation(receipt( + true, + true, + tenants("alpha", "beta"), + tenants("alpha", "beta", "gamma") + )); + + Files.writeString(configPath, json("alpha", "beta")); + watcher.watchForChanges(); + verify(lifecycleService).synchronizeFromPersistedConfig(anyList()); + + Files.writeString(configPath, json("alpha", "beta", "gamma")); + watcher.watchForChanges(); + + ArgumentCaptor> captor = tenantListCaptor(); + verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(captor.capture()); + assertThat(captor.getAllValues().get(1)) + .extracting(TenantConfig::getDomain) + .containsExactly("alpha", "beta", "gamma"); + assertThat(ReflectionTestUtils.getField(watcher, "expectedCommittedSnapshot")).isNull(); + assertThat((Iterable) ReflectionTestUtils.getField(watcher, "deferredSnapshots")).isEmpty(); + } + + @Test + void cyclicRapidMutationsClearFenceWhenLatestCommitIsAlreadyApplied() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + Files.writeString(configPath, json("alpha")); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + watcher.prepareForApiMutation(); + + watcher.registerSuccessfulMutation(receipt( + true, + true, + tenants("alpha"), + tenants("alpha", "beta") + )); + watcher.registerSuccessfulMutation(receipt( + true, + true, + tenants("alpha", "beta"), + tenants("alpha") + )); + + watcher.watchForChanges(); + + verify(lifecycleService).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "expectedCommittedSnapshot")).isNull(); + assertThat((Iterable) ReflectionTestUtils.getField(watcher, "deferredSnapshots")).isEmpty(); + } + + @Test + void unknownConcurrentSnapshotSupersedesExpectedAndIsApplied() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + Files.writeString(configPath, json("alpha")); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath); + watcher.prepareForApiMutation(); + watcher.registerSuccessfulMutation(receipt( + true, + true, + tenants("alpha"), + tenants("alpha", "beta") + )); + + Files.writeString(configPath, json("alpha", "gamma")); + watcher.watchForChanges(); + + ArgumentCaptor> captor = tenantListCaptor(); + verify(lifecycleService, times(2)).synchronizeFromPersistedConfig(captor.capture()); + assertThat(captor.getAllValues().get(1)) + .extracting(TenantConfig::getDomain) + .containsExactly("alpha", "gamma"); + assertThat(ReflectionTestUtils.getField(watcher, "expectedCommittedSnapshot")).isNull(); + assertThat((Iterable) ReflectionTestUtils.getField(watcher, "deferredSnapshots")).isEmpty(); + } + + @Test + void requiredMissingFileUsesBackoff() { + Path configPath = tempDirectory.resolve("tenants.json"); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantReadinessRegistry readinessRegistry = mock(TenantReadinessRegistry.class); + AtomicLong now = new AtomicLong(1_000L); + TenantConfigWatcher watcher = watcher(lifecycleService, readinessRegistry, configPath, now); + ReflectionTestUtils.setField(watcher, "tenantsConfigRequired", true); + + watcher.watchForChanges(); + watcher.watchForChanges(); + + verify(readinessRegistry).markConfigurationFailure(); + assertThat(ReflectionTestUtils.getField(watcher, "consecutiveFailures")).isEqualTo(1); + + now.addAndGet(TenantConfigWatcher.RETRY_BASE_DELAY_MILLIS); + watcher.watchForChanges(); + + verify(readinessRegistry, times(2)).markConfigurationFailure(); + assertThat(ReflectionTestUtils.getField(watcher, "consecutiveFailures")).isEqualTo(2); + } + + @Test + void readFailureUsesBackoff() throws Exception { + Path configPath = Files.createDirectory(tempDirectory.resolve("tenants.json")); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantReadinessRegistry readinessRegistry = mock(TenantReadinessRegistry.class); + AtomicLong now = new AtomicLong(1_000L); + TenantConfigWatcher watcher = watcher(lifecycleService, readinessRegistry, configPath, now); + + watcher.watchForChanges(); + watcher.watchForChanges(); + + verify(readinessRegistry).markConfigurationFailure(); + assertThat(ReflectionTestUtils.getField(watcher, "consecutiveFailures")).isEqualTo(1); + + now.addAndGet(TenantConfigWatcher.RETRY_BASE_DELAY_MILLIS); + watcher.watchForChanges(); + + verify(readinessRegistry, times(2)).markConfigurationFailure(); + assertThat(ReflectionTestUtils.getField(watcher, "consecutiveFailures")).isEqualTo(2); + } + + @Test + void requiredEmptyConfigMarksFailureAndKeepsHashUnapplied() throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + Files.writeString(configPath, "[]"); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + TenantReadinessRegistry readinessRegistry = mock(TenantReadinessRegistry.class); + TenantConfigWatcher watcher = watcher( + lifecycleService, + readinessRegistry, + configPath, + new AtomicLong(1_000L) + ); + ReflectionTestUtils.setField(watcher, "tenantsConfigRequired", true); + + watcher.watchForChanges(); + + verify(readinessRegistry).markConfigurationFailure(); + verify(lifecycleService, never()).synchronizeFromPersistedConfig(anyList()); + assertThat(ReflectionTestUtils.getField(watcher, "lastConfigHash")).isEqualTo(""); + } + + @Test + void failureLogsRetryMetadataWithoutSecretsOrFingerprints(CapturedOutput output) throws Exception { + Path configPath = tempDirectory.resolve("tenants.json"); + String content = """ + [{"domain":"alpha","url":"jdbc:postgresql://secret-host/db", + "username":"secret-user","password":"secret-password"}] + """; + Files.writeString(configPath, content); + TenantLifecycleService lifecycleService = mock(TenantLifecycleService.class); + doThrow(new IllegalStateException("секретные технические детали")) + .when(lifecycleService).synchronizeFromPersistedConfig(anyList()); + TenantConfigWatcher watcher = watcher(lifecycleService, configPath, new AtomicLong(1_000L)); + + watcher.watchForChanges(); + + assertThat(output) + .contains("Ошибка синхронизации конфигурации тенантов") + .contains("попытка=1") + .contains("через 30000 мс") + .doesNotContain("secret-host") + .doesNotContain("secret-user") + .doesNotContain("secret-password") + .doesNotContain(TenantConfigWatcher.configHash(content)) + .doesNotContain("revision=") + .doesNotContain("fingerprint") + .doesNotContain("хеш:"); } private TenantConfigWatcher watcher(TenantLifecycleService lifecycleService, Path configPath) { + return watcher(lifecycleService, configPath, new AtomicLong(1_000L)); + } + + private TenantConfigWatcher watcher(TenantLifecycleService lifecycleService, + Path configPath, + AtomicLong now) { + return watcher(lifecycleService, mock(TenantReadinessRegistry.class), configPath, now); + } + + private TenantConfigWatcher watcher(TenantLifecycleService lifecycleService, + TenantReadinessRegistry readinessRegistry, + Path configPath, + AtomicLong now) { doAnswer(invocation -> { invocation.getArgument(0).run(); return null; }).when(lifecycleService).executeSerialized(any(Runnable.class)); - TenantConfigWatcher watcher = new TenantConfigWatcher( - lifecycleService, - mock(TenantReadinessRegistry.class) - ); + TenantConfigWatcher watcher = new TenantConfigWatcher(lifecycleService, readinessRegistry); ReflectionTestUtils.setField(watcher, "tenantsConfigPath", configPath.toString()); + ReflectionTestUtils.setField(watcher, "currentTimeMillis", (LongSupplier) now::get); return watcher; } - private void await(CountDownLatch latch, String message) { - try { - if (!latch.await(5, TimeUnit.SECONDS)) { - throw new IllegalStateException(message); - } - } catch (InterruptedException exception) { - Thread.currentThread().interrupt(); - throw new IllegalStateException(message, exception); - } + private TenantSecretUpdateReceipt receipt(boolean persisted, + boolean changed, + List previous, + List committed) { + return new TenantSecretUpdateReceipt( + persisted, + changed, + persisted ? "resource-version" : null, + previous, + committed + ); } - private void awaitBlocked(AtomicReference threadReference) { - long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(5); - while (System.nanoTime() < deadline) { - Thread thread = threadReference.get(); - if (thread != null && thread.getState() == Thread.State.BLOCKED) { - return; - } - try { - Thread.sleep(10); - } catch (InterruptedException exception) { - Thread.currentThread().interrupt(); - throw new IllegalStateException("Ожидание блокировки watcher прервано", exception); - } - } - throw new IllegalStateException("Watcher не заблокировался на общем lifecycle coordinator"); + private List tenants(String... domains) { + return java.util.Arrays.stream(domains).map(this::tenant).toList(); + } + + private TenantConfig tenant(String domain) { + return new TenantConfig( + domain, + domain, + "jdbc:postgresql://db/" + domain, + domain, + "password-" + domain + ); + } + + private String json(String... domains) { + return "[" + java.util.Arrays.stream(domains) + .map(domain -> "{\"name\":\"" + domain + + "\",\"domain\":\"" + domain + + "\",\"url\":\"jdbc:postgresql://db/" + domain + + "\",\"username\":\"" + domain + + "\",\"password\":\"password-" + domain + "\"}") + .collect(java.util.stream.Collectors.joining(",")) + "]"; + } + + private String prettyJson(String domain) { + return """ + [ + { + "password": "password-%1$s", + "username": "%1$s", + "url": "jdbc:postgresql://db/%1$s", + "domain": "%1$s", + "name": "%1$s" + } + ] + """.formatted(domain); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + private ArgumentCaptor> tenantListCaptor() { + return (ArgumentCaptor) ArgumentCaptor.forClass(List.class); } } diff --git a/backend/src/test/java/com/magistr/app/controller/DatabaseControllerTest.java b/backend/src/test/java/com/magistr/app/controller/DatabaseControllerTest.java index 62b8db0..d31bcfe 100644 --- a/backend/src/test/java/com/magistr/app/controller/DatabaseControllerTest.java +++ b/backend/src/test/java/com/magistr/app/controller/DatabaseControllerTest.java @@ -1,23 +1,32 @@ package com.magistr.app.controller; import com.magistr.app.config.tenant.TenantConfigWatcher; +import com.magistr.app.config.tenant.TenantConfig; import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.magistr.app.config.tenant.TenantSecretUpdateReceipt; import com.magistr.app.service.TenantLifecycleException; +import com.magistr.app.service.TenantLifecycleMutationResult; import com.magistr.app.service.TenantLifecycleService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.InOrder; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.test.web.servlet.MockMvc; +import java.util.List; import java.util.Map; import java.util.function.Supplier; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -68,7 +77,128 @@ class DatabaseControllerTest { .andExpect(jsonPath("$.message") .value(org.hamcrest.Matchers.not(org.hamcrest.Matchers.containsString("JDBC")))); - verify(tenantConfigWatcher, never()).refreshHash(); + verify(tenantConfigWatcher, never()).prepareForApiMutation(); + verify(tenantConfigWatcher, never()).registerSuccessfulMutation(any()); verify(lifecycleService).executeSerialized(any(Supplier.class)); } + + @Test + void successfulAddPreparesProjectionAndRegistersPersistenceReceipt() throws Exception { + executeSerializedActionsImmediately(); + TenantConfig saved = new TenantConfig( + "Тестовый университет", + "test", + "jdbc:postgresql://db/test", + "user", + "password" + ); + TenantSecretUpdateReceipt receipt = receipt(saved); + when(lifecycleService.addOrUpdateTenantWithReceipt(any(TenantConfig.class))) + .thenReturn(new TenantLifecycleMutationResult(saved, receipt)); + + mockMvc.perform(post("/api/database/tenants") + .contentType(MediaType.APPLICATION_JSON) + .content(""" + { + "name": "Тестовый университет", + "domain": "test", + "url": "jdbc:postgresql://db/test", + "username": "user", + "password": "password" + } + """)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.success").value(true)); + + InOrder order = inOrder(lifecycleService, tenantConfigWatcher); + order.verify(lifecycleService).executeSerialized(any(Supplier.class)); + order.verify(tenantConfigWatcher).prepareForApiMutation(); + order.verify(lifecycleService).addOrUpdateTenantWithReceipt(any(TenantConfig.class)); + order.verify(tenantConfigWatcher).registerSuccessfulMutation(receipt); + } + + @Test + void successfulRemovalPreparesProjectionAndRegistersPersistenceReceipt() throws Exception { + executeSerializedActionsImmediately(); + TenantConfig removed = new TenantConfig( + "Тестовый университет", + "test", + "jdbc:postgresql://db/test", + "user", + "password" + ); + TenantSecretUpdateReceipt receipt = receipt(); + when(lifecycleService.removeTenantWithReceipt("test")) + .thenReturn(new TenantLifecycleMutationResult(removed, receipt)); + + mockMvc.perform(delete("/api/database/tenants/test")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.success").value(true)); + + InOrder order = inOrder(lifecycleService, tenantConfigWatcher); + order.verify(lifecycleService).executeSerialized(any(Supplier.class)); + order.verify(tenantConfigWatcher).prepareForApiMutation(); + order.verify(lifecycleService).removeTenantWithReceipt("test"); + order.verify(tenantConfigWatcher).registerSuccessfulMutation(receipt); + } + + @Test + void projectionReadFailurePreventsAddAndReturnsServiceUnavailable() throws Exception { + executeSerializedActionsImmediately(); + doThrow(new TenantLifecycleException( + "Не удалось прочитать конфигурацию тенантов перед изменением", + new IllegalStateException("тестовая ошибка чтения") + )).when(tenantConfigWatcher).prepareForApiMutation(); + + mockMvc.perform(post("/api/database/tenants") + .contentType(MediaType.APPLICATION_JSON) + .content(""" + { + "name": "Тестовый университет", + "domain": "test", + "url": "jdbc:postgresql://db/test", + "username": "user", + "password": "password" + } + """)) + .andExpect(status().isServiceUnavailable()) + .andExpect(jsonPath("$.success").value(false)) + .andExpect(jsonPath("$.message") + .value("Не удалось прочитать конфигурацию тенантов перед изменением")); + + verify(lifecycleService, never()).addOrUpdateTenantWithReceipt(any()); + verify(tenantConfigWatcher, never()).registerSuccessfulMutation(any()); + } + + @Test + void projectionReadFailurePreventsRemovalAndReturnsServiceUnavailable() throws Exception { + executeSerializedActionsImmediately(); + doThrow(new TenantLifecycleException( + "Не удалось прочитать конфигурацию тенантов перед изменением", + new IllegalStateException("тестовая ошибка чтения") + )).when(tenantConfigWatcher).prepareForApiMutation(); + + mockMvc.perform(delete("/api/database/tenants/test")) + .andExpect(status().isServiceUnavailable()) + .andExpect(jsonPath("$.success").value(false)); + + verify(lifecycleService, never()).removeTenantWithReceipt(any()); + verify(tenantConfigWatcher, never()).registerSuccessfulMutation(any()); + } + + private void executeSerializedActionsImmediately() { + doAnswer(invocation -> invocation.>getArgument(0).get()) + .when(lifecycleService) + .executeSerialized(org.mockito.ArgumentMatchers.>any()); + } + + private TenantSecretUpdateReceipt receipt(TenantConfig... tenants) { + return new TenantSecretUpdateReceipt( + true, + true, + "resource-version", + List.of(), + List.of(tenants) + ); + } } diff --git a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java index 97f2463..5885699 100644 --- a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java @@ -178,6 +178,52 @@ class TenantLifecyclePostgreSqlIntegrationTest { assertThat(currentDatabaseThroughRouter()).isEqualTo(VALID_DATABASE); } + @Test + void persistedConfigReplacementKeepsOldPoolOnFailureAndSwapsWithoutSecretWrite() throws Exception { + TenantConfig wrongCredentials = config( + "Неверные credentials из проекции", + jdbcUrl(OLD_DATABASE), + POSTGRES.getPassword() + "-wrong" + ); + + assertThatThrownBy(() -> lifecycleService.synchronizeFromPersistedConfig(List.of(wrongCredentials))) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось подключиться к базе данных тенанта"); + assertOldState(); + + TenantConfig badChecksum = config( + "Повреждённый Flyway из проекции", + jdbcUrl(BAD_CHECKSUM_DATABASE), + POSTGRES.getPassword() + ); + assertThatThrownBy(() -> lifecycleService.synchronizeFromPersistedConfig(List.of(badChecksum))) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось выполнить миграции базы данных тенанта"); + assertOldState(); + + TenantConfig validCandidate = config( + "Новый tenant из проекции", + jdbcUrl(VALID_DATABASE), + POSTGRES.getPassword() + ); + try (Connection inFlightOldConnection = oldPool.getConnection()) { + lifecycleService.synchronizeFromPersistedConfig(List.of(validCandidate)); + + assertThat(oldPool.isClosed()).isFalse(); + try (Statement statement = inFlightOldConnection.createStatement(); + ResultSet result = statement.executeQuery("SELECT current_database()")) { + assertThat(result.next()).isTrue(); + assertThat(result.getString(1)).isEqualTo(OLD_DATABASE); + } + } + + awaitPoolClosed(oldPool); + assertThat(currentDatabaseThroughRouter()).isEqualTo(VALID_DATABASE); + verify(tenantConfigStore, never()).upsertTenant(any()); + verify(tenantConfigStore, never()).removeTenant(any()); + verify(tenantConfigStore, never()).compensate(any()); + } + private void awaitPoolClosed(HikariDataSource pool) { long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(3); while (!pool.isClosed() && System.nanoTime() < deadline) { @@ -218,6 +264,7 @@ class TenantLifecyclePostgreSqlIntegrationTest { private void createDatabase(String databaseName) throws Exception { try (Connection connection = POSTGRES.createConnection(""); Statement statement = connection.createStatement()) { + statement.execute("DROP DATABASE IF EXISTS " + databaseName + " WITH (FORCE)"); statement.execute("CREATE DATABASE " + databaseName); } } diff --git a/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java b/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java index d07f05e..4484883 100644 --- a/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java +++ b/backend/src/test/java/com/magistr/app/service/TenantLifecycleServiceTest.java @@ -11,6 +11,9 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import org.mockito.ArgumentCaptor; import org.mockito.InOrder; import org.mockito.Mock; @@ -20,17 +23,21 @@ import org.mockito.quality.Strictness; import java.sql.Connection; import java.sql.SQLException; +import java.time.Instant; import java.util.ArrayList; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -128,6 +135,25 @@ class TenantLifecycleServiceTest { verify(candidate, never()).close(); } + @Test + void returnsConfirmedReceiptWithSuccessfulUpsert() { + TenantConfig requested = newAlpha(); + TenantSecretUpdateReceipt receipt = new TenantSecretUpdateReceipt( + true, + false, + "resource-version-noop", + List.of(requested), + List.of(requested) + ); + when(tenantConfigStore.upsertTenant(any())).thenReturn(receipt); + + TenantLifecycleMutationResult result = service.addOrUpdateTenantWithReceipt(requested); + + assertThat(result.receipt()).isSameAs(receipt); + assertConfig(result.tenant(), + "Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); + } + @Test void addsNewTenantWithoutRetiringExistingPool() { Map createSnapshot = new LinkedHashMap<>(); @@ -296,6 +322,26 @@ class TenantLifecycleServiceTest { order.verify(retiredPoolService).retire(oldDataSource); } + @Test + void returnsLocalOnlyReceiptWithSuccessfulRemoval() { + TenantSecretUpdateReceipt receipt = new TenantSecretUpdateReceipt( + false, + false, + null, + List.of(oldAlpha), + List.of(beta) + ); + when(tenantConfigStore.removeTenant("alpha")).thenReturn(receipt); + when(routingDataSource.removeTenantAtomically("alpha")) + .thenReturn(new TenantRoutingDataSource.TenantState("alpha", oldAlpha, oldDataSource)); + + TenantLifecycleMutationResult result = service.removeTenantWithReceipt("alpha"); + + assertThat(result.receipt()).isSameAs(receipt); + assertConfig(result.tenant(), + "Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "old-password"); + } + @Test void removalFailureCompensatesCommittedReceiptAndKeepsPoolOpen() { TenantSecretUpdateReceipt receipt = removeReceipt("alpha"); @@ -314,22 +360,156 @@ class TenantLifecycleServiceTest { @Test void persistedTenantBecomesReadyOnlyAfterMigrationAndSwap() { TenantConfig gamma = config("Gamma", "gamma", "jdbc:gamma", "user", "password"); - when(routingDataSource.hasTenant("gamma")).thenReturn(false); when(routingDataSource.swapTenant(any(TenantConfig.class), any())).thenReturn(null); service.synchronizeFromPersistedConfig(List.of(gamma)); InOrder order = inOrder(readinessRegistry, migrationService, routingDataSource); - order.verify(readinessRegistry).clearConfigurationFailure(); order.verify(readinessRegistry).replaceDesired(any()); order.verify(readinessRegistry).markMigrationStarted(any(TenantConfig.class)); order.verify(migrationService).migrate(candidate); order.verify(routingDataSource).swapTenant(any(TenantConfig.class), any()); order.verify(readinessRegistry).markMigrationSucceeded(any(TenantConfig.class)); order.verify(readinessRegistry).markConnectivity("gamma", true); + order.verify(readinessRegistry).clearConfigurationFailure(); verify(tenantConfigStore, never()).upsertTenant(any()); } + @ParameterizedTest + @MethodSource("changedPersistedAlphaConfigs") + void replacesExistingPersistedTenantWhenAnyNormalizedFieldChanges(TenantConfig changedConfig) { + when(routingDataSource.snapshotTenantConfigs()).thenReturn(Map.of("alpha", oldAlpha)); + + service.synchronizeFromPersistedConfig(List.of(changedConfig)); + + ArgumentCaptor preparedConfig = ArgumentCaptor.forClass(TenantConfig.class); + verify(routingDataSource).prepareTenantDataSource(preparedConfig.capture()); + verify(migrationService).migrate(candidate); + verify(routingDataSource).swapTenant(any(TenantConfig.class), any()); + verify(retiredPoolService).retire(oldDataSource); + verify(tenantConfigStore, never()).upsertTenant(any()); + verify(tenantConfigStore, never()).removeTenant(any()); + assertConfig( + preparedConfig.getValue(), + changedConfig.getName().trim(), + "alpha", + changedConfig.getUrl().trim(), + changedConfig.getUsername(), + changedConfig.getPassword() + ); + } + + @Test + void normalizedEquivalentPersistedTenantDoesNotRecreatePool() { + when(routingDataSource.snapshotTenantConfigs()).thenReturn(Map.of("alpha", oldAlpha)); + TenantConfig equivalent = config( + " Старый Alpha ", + " ALPHA ", + " jdbc:old-alpha ", + "old-user", + "old-password" + ); + + service.synchronizeFromPersistedConfig(List.of(equivalent)); + + verify(routingDataSource, never()).prepareTenantDataSource(any()); + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(routingDataSource, never()).removeTenantAtomically(any()); + verify(migrationService, never()).migrate(any()); + verify(retiredPoolService, never()).retire(any()); + verify(readinessRegistry).clearConfigurationFailure(); + } + + @Test + void failedPersistedReplacementKeepsOldPoolAndClosesCandidate() { + when(routingDataSource.snapshotTenantConfigs()).thenReturn(Map.of("alpha", oldAlpha)); + org.mockito.Mockito.doThrow(new IllegalStateException("тестовая ошибка Flyway")) + .when(migrationService).migrate(candidate); + + assertThatThrownBy(() -> service.synchronizeFromPersistedConfig(List.of(newAlpha()))) + .isInstanceOf(TenantLifecycleException.class) + .hasMessage("Не удалось выполнить миграции базы данных тенанта"); + + verify(routingDataSource, never()).swapTenant(any(), any()); + verify(retiredPoolService, never()).retire(oldDataSource); + verify(candidate).close(); + verify(readinessRegistry).markMigrationFailed(any(TenantConfig.class)); + verify(readinessRegistry, never()).clearConfigurationFailure(); + verify(tenantConfigStore, never()).upsertTenant(any()); + } + + @Test + void retryRestoresReadinessAfterPostSwapPublicationFailureWithoutSecondSwap() { + TenantConfig changed = newAlpha(); + Map activatedSnapshot = new LinkedHashMap<>(); + activatedSnapshot.put("alpha", changed); + activatedSnapshot.put("beta", beta); + when(routingDataSource.snapshotTenantConfigs()) + .thenReturn(oldSnapshot, activatedSnapshot); + TenantReadinessRegistry.TenantStatus interruptedStatus = new TenantReadinessRegistry.TenantStatus( + "alpha", + "тестовый-fingerprint", + TenantReadinessRegistry.MigrationState.IN_PROGRESS, + TenantReadinessRegistry.ConnectivityState.UNKNOWN, + null, + false, + Instant.EPOCH + ); + when(readinessRegistry.snapshot()).thenReturn(Map.of("alpha", interruptedStatus)); + when(routingDataSource.testConnection("alpha")).thenReturn(true); + doThrow(new IllegalStateException("тестовый отказ публикации readiness")) + .doNothing() + .when(readinessRegistry).markMigrationSucceeded(any(TenantConfig.class)); + + assertThatThrownBy(() -> service.synchronizeFromPersistedConfig(List.of(changed, beta))) + .isInstanceOf(IllegalStateException.class); + + service.synchronizeFromPersistedConfig(List.of(changed, beta)); + + verify(routingDataSource).swapTenant(any(TenantConfig.class), any()); + verify(migrationService).migrate(candidate); + verify(retiredPoolService).retire(oldDataSource); + verify(readinessRegistry, never()).markMigrationFailed(any(TenantConfig.class)); + verify(routingDataSource).testConnection("alpha"); + verify(readinessRegistry).markConnectivity("alpha", true); + verify(readinessRegistry).clearConfigurationFailure(); + } + + @Test + void appliesMergedPersistedSnapshotWithoutWritingSecret() { + TenantConfig gamma = config("Gamma", "gamma", "jdbc:gamma", "gamma-user", "gamma-password"); + TenantConfig newBeta = config("Новый Beta", "beta", "jdbc:new-beta", "new-beta-user", "new-beta-password"); + when(routingDataSource.snapshotTenantConfigs()).thenReturn(Map.of( + "alpha", oldAlpha, + "gamma", gamma + )); + when(routingDataSource.removeTenantAtomically("gamma")) + .thenReturn(new TenantRoutingDataSource.TenantState("gamma", gamma, oldDataSource)); + + service.synchronizeFromPersistedConfig(List.of(newAlpha(), newBeta)); + + verify(routingDataSource, times(2)).prepareTenantDataSource(any(TenantConfig.class)); + verify(routingDataSource, times(2)).swapTenant(any(TenantConfig.class), any()); + verify(routingDataSource).removeTenantAtomically("gamma"); + verify(tenantConfigStore, never()).upsertTenant(any()); + verify(tenantConfigStore, never()).removeTenant(any()); + verify(tenantConfigStore, never()).compensate(any()); + } + + @Test + void rejectsDuplicateNormalizedDomainsBeforeRuntimeOrReadinessMutation() { + TenantConfig first = config("Alpha 1", "alpha", "jdbc:alpha-1", "user", "password"); + TenantConfig second = config("Alpha 2", " ALPHA ", "jdbc:alpha-2", "user", "password"); + + assertThatThrownBy(() -> service.synchronizeFromPersistedConfig(List.of(first, second))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Конфигурация содержит повторяющиеся домены тенантов"); + + verify(routingDataSource, never()).snapshotTenantConfigs(); + verify(routingDataSource, never()).prepareTenantDataSource(any()); + verify(readinessRegistry, never()).replaceDesired(any()); + } + @Test void failedPersistedMigrationLeavesTenantNotReadyForWatcherRetry() { TenantConfig gamma = config("Gamma", "gamma", "jdbc:gamma", "user", "password"); @@ -376,6 +556,23 @@ class TenantLifecycleServiceTest { return config("Новый Alpha", "alpha", "jdbc:new-alpha", "new-user", "new-password"); } + private static Stream changedPersistedAlphaConfigs() { + return Stream.of( + Arguments.of(new TenantConfig( + "Новое имя", "alpha", "jdbc:old-alpha", "old-user", "old-password" + )), + Arguments.of(new TenantConfig( + "Старый Alpha", "alpha", "jdbc:new-alpha", "old-user", "old-password" + )), + Arguments.of(new TenantConfig( + "Старый Alpha", "alpha", "jdbc:old-alpha", "new-user", "old-password" + )), + Arguments.of(new TenantConfig( + "Старый Alpha", "alpha", "jdbc:old-alpha", "old-user", "new-password" + )) + ); + } + private TenantSecretUpdateReceipt upsertReceipt(TenantConfig tenant) { Map committed = new LinkedHashMap<>(oldSnapshot); committed.put(tenant.getDomain(), tenant); diff --git a/docs/API.md b/docs/API.md index c49d50e..a9d5b2a 100644 --- a/docs/API.md +++ b/docs/API.md @@ -1190,16 +1190,20 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 него используется нормализованный `domain`. **Логика:** -1. Создаёт временный HikariCP pool, ещё не доступный маршрутизатору. -2. Открывает соединение и явно проверяет его готовность. -3. Выполняет Flyway-валидацию и миграции tenant-БД. -4. Читает актуальный `tenants-secret`, применяет только upsert запрошенного `domain` и +1. До мутации разбирает и при необходимости полностью применяет текущую mounted-проекцию + tenant-конфигурации как безопасный baseline; ошибка подготовки возвращает `503`. +2. Создаёт временный HikariCP pool, ещё не доступный маршрутизатору. +3. Открывает соединение и явно проверяет его готовность. +4. Выполняет Flyway-валидацию и миграции tenant-БД. +5. Читает актуальный `tenants-secret`, применяет только upsert запрошенного `domain` и выполняет условный `PUT` с прочитанным Kubernetes `resourceVersion`. -5. При конфликте повторно читает Secret и заново применяет свою мутацию с ограниченным +6. При конфликте повторно читает Secret и заново применяет свою мутацию с ограниченным retry/backoff; неизменившаяся конфигурация не записывается повторно. -6. Одной атомарной публикацией заменяет связку `TenantConfig + DataSource`. -7. Передаёт прежний pool на отложенное закрытие после завершения активных запросов +7. Одной атомарной публикацией заменяет связку `TenantConfig + DataSource`. +8. Передаёт прежний pool на отложенное закрытие после завершения активных запросов либо по истечении защитного таймаута. +9. Возвращает внутри backend `TenantLifecycleMutationResult` с подтверждённой + `TenantSecretUpdateReceipt` для согласования mounted-проекции. Backend соединяется с Kubernetes API только через проверенный service-account CA и hostname verification. Если безопасно сохранить tenant-конфигурацию не удалось, операция @@ -1236,6 +1240,15 @@ HTTP-статусы: `400` для некорректного payload и `503` д компенсация также допускается только для подтверждённой версии и не затирает более новое изменение другого pod. Неизвестный `domain` возвращает `404`, lifecycle-ошибка — `503`. +Для `POST` и `DELETE` baseline готовится до API-мутации под общим lifecycle monitor. +После успеха backend использует семантические `previousTenants` и `committedTenants` из +`TenantSecretUpdateReceipt`. Fence создаётся только для реального изменения общего Secret +(`persisted=true`, `changed=true`): известные старые и промежуточные снимки временно +откладываются, ожидаемый committed-снимок применяется полностью. Persisted no-op и локальная +операция fence не создают, а неизвестный merged snapshot другого pod синхронизируется сразу. +SHA-256 файла подтверждается только после полного успешного sync; ошибки повторяются с +экспоненциальной задержкой от 30 до 300 секунд. + ### `POST /api/database/test` Тест подключения к произвольной БД (без регистрации тенанта). diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 3d493a2..400e350 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -81,7 +81,7 @@ sequenceDiagram | `TenantRoutingDataSource` | Маршрутизирует запросы и атомарно публикует неизменяемый снимок `TenantConfig + DataSource` | | `TenantDataSourceConfig` | Загружает конфигурацию тенантов из JSON-файла, создаёт HikariCP пулы | | `TenantWebMvcConfig` | Регистрирует `TenantInterceptor` и `AuthorizationInterceptor` в MVC-слое | -| `TenantConfigWatcher` | Периодически (каждые 30 сек) перечитывает `tenants.json`, синхронизирует тенантов | +| `TenantConfigWatcher` | Периодически перечитывает `tenants.json`, сравнивает полный нормализованный снимок и повторяет неудачную синхронизацию с ограниченным backoff | | `TenantConfigStore` | Задаёт явные атомарные операции upsert/remove и условную компенсацию persisted-конфигурации | | `KubernetesTenantSecretUpdater` | Реализует `TenantConfigStore` через GET и условный PUT Kubernetes Secret по `resourceVersion`, проверяя TLS по service-account CA | | `TenantLifecycleService` | Сериализует prepare/validate/migrate/persist/swap/remove и выполняет компенсацию при отказе | @@ -128,10 +128,11 @@ sequenceDiagram ### Жизненный цикл тенанта -1. **Добавление или обновление через API:** `TenantLifecycleService` нормализует конфигурацию, - создаёт непубликуемый HikariCP candidate, проверяет реальное соединение и выполняет - Flyway. Затем `TenantConfigStore` читает актуальный Secret и применяет к нему только - upsert запрошенного домена. +1. **Добавление или обновление через API:** перед мутацией `TenantConfigWatcher` разбирает, + нормализует и при необходимости полностью применяет текущую mounted-проекцию как baseline. + Ошибка подготовки baseline прерывает API-операцию. Затем `TenantLifecycleService` создаёт + непубликуемый HikariCP candidate, проверяет реальное соединение, выполняет Flyway, а + `TenantConfigStore` читает актуальный Secret и применяет к нему только upsert домена. 2. **Межподовая запись:** `KubernetesTenantSecretUpdater` выполняет `GET` текущего `tenants-secret`, нормализует и сортирует список, после чего отправляет полный объект условным `PUT` с прочитанным `metadata.resourceVersion`. При `409 Conflict` актуальное @@ -140,6 +141,9 @@ sequenceDiagram не отправляет лишний `PUT`. 3. **Атомарная локальная публикация:** только после успешной или подтверждённой повторным чтением персистенции одной публикацией заменяется связка `TenantConfig + DataSource`. + Успешный lifecycle возвращает внутренний `TenantLifecycleMutationResult` с конфигурацией + и `TenantSecretUpdateReceipt`, содержащей признаки `persisted`/`changed`, а также + семантические снимки `previousTenants` и `committedTenants`. 4. **Безопасный отказ и компенсация:** ошибка credentials, соединения, Flyway или Secret закрывает candidate, не меняя действующий route. Компенсация прежним снимком разрешена только для подтверждённой записи и только пока текущий Secret сохраняет выданный ей @@ -151,7 +155,10 @@ sequenceDiagram а прежний Hikari pool закрывается после завершения активных подключений либо по истечении настраиваемого grace timeout. 6. **Синхронизация подов:** `TenantConfigWatcher` каждые 30 секунд проверяет смонтированный - `tenants.json` и применяет добавление/удаление под тем же локальным lifecycle-monitor. + `tenants.json` и сравнивает все поля нормализованного `TenantConfig`: `name`, `domain`, + `url`, `username` и `password`. Для нового или изменённого тенанта lifecycle без повторной + записи Secret выполняет prepare → проверку соединения → Flyway → атомарный swap; отсутствующие + домены удаляются под тем же локальным monitor. 7. **Удаление:** `DELETE /api/database/tenants/{domain}` применяет к актуальному Secret только удаление указанного домена через тот же условный `PUT`, затем атомарно исключает tenant из маршрутизации и передаёт pool на drain. Для отказа локального удаления действуют те же @@ -171,13 +178,25 @@ monitor по-прежнему не считается межподовой бл цепочки и обязательную проверку hostname. Trust-all fallback отсутствует: ошибка CA или TLS завершает персистенцию безопасным отказом. -`TenantConfigWatcher` сравнивает содержимое смонтированного из Secret `tenants.json` по -SHA-256, а не по `String.hashCode()`, чтобы изменение файла не пропускалось из-за -32-битной коллизии. На текущем этапе watcher активирует новые домены и удаляет отсутствующие, -но ещё не заменяет подключение существующего домена при изменении его URL или credentials. -Полная синхронизация такого изменения относится к проблеме №13; до её выполнения новое -значение сбрасывает readiness этого tenant в состояние ожидания, а pod не должен считаться -готовым по старому подключению. +`TenantConfigWatcher` использует SHA-256 содержимого `tenants.json` как идентификатор файловой +ревизии, но решения о запаздывающих проекциях принимает по нормализованным семантическим +снимкам `name`/`domain`/`url`/`username`/`password`. Хеш становится последним применённым +только после успешного разбора и полного lifecycle sync. Ошибка сохраняет прежний хеш, +снимает readiness и запускает экспоненциальные повторы через 30–300 секунд; другая неудачная +файловая ревизия получает собственную попытку без ожидания backoff предыдущей. + +После API-операции snapshot fence устанавливается только если `TenantSecretUpdateReceipt` +подтверждает реальное общее изменение: `persisted=true` и `changed=true`. Снимок до записи +и ранее ожидавшиеся committed-снимки временно считаются deferred, а новый committed-снимок — +ожидаемым. Поэтому при быстрых мутациях H0 → H1 → H2 запаздывающие H0 и H1 не откатывают +runtime, а H2 полностью синхронизируется и снимает fence. Неизвестный объединённый снимок, +которого нет среди deferred-состояний, также немедленно проходит полный sync и не теряет +изменение другого pod. Локальная персистенция (`persisted=false`) и подтверждённый no-op +(`changed=false`) fence не создают. + +Если ошибка readiness произошла уже после успешного swap, следующий watcher retry видит +совпадающую активную конфигурацию, проверяет действующее соединение и восстанавливает +readiness без повторной миграции и второго swap. ### Liveness и readiness diff --git a/docs/FRONTEND.md b/docs/FRONTEND.md index a793505..bc43226 100644 --- a/docs/FRONTEND.md +++ b/docs/FRONTEND.md @@ -16,6 +16,9 @@ ``` frontend/ +├── package.json # Dependency-free проверки frontend через node:test +├── tests/ +│ └── dashboard-conflicts.test.mjs # Регрессии дат и состояний проверки конфликтов ├── index.html # 🔐 Страница авторизации (общая) ├── script.js # Логика авторизации ├── style.css # Стили страницы авторизации @@ -34,6 +37,7 @@ frontend/ │ ├── js/ │ │ ├── main.js # Инициализация, маршрутизация, навигация │ │ ├── api.js # HTTP-обёртка (fetch + Authorization) +│ │ ├── dashboard-conflicts.js # Чистые функции дат, загрузки и состояний Red Zone │ │ ├── utils.js # Утилиты │ │ ├── otel.js # OpenTelemetry (клиентская телеметрия, только прод) │ │ └── views/ # Модули представлений @@ -125,6 +129,7 @@ frontend/ | Tab | Описание | API | |-----|----------|-----| +| `dashboard` | Сводные метрики и проверка конфликтов текущей недели с явным статусом полноты данных | `/api/departments`, `/api/classrooms`, `/api/groups`, `/api/users/teachers`, `/api/schedule/search`, `/api/admin/time-slots` | | `teacher-requests` | Очередь заявок кафедр на создание преподавателей с редактированием перед одобрением | `/api/teacher-requests`, `/api/departments` | | `users` | CRUD пользователей | `/api/users` | | `groups` | CRUD групп, мультифильтр списка по формам обучения, настройка 0/2/3 подгрупп для лабораторных и назначения графиков | `/api/groups`, `/api/subgroups` | @@ -139,6 +144,7 @@ frontend/ ### Особенности админских вкладок +- Вкладка `dashboard` формирует date-only значения из локальных компонентов даты, а текущую неделю — от отдельного объекта понедельника до `понедельник + 6 дней`. Расписания кафедр загружаются независимо через `Promise.allSettled`: `COMPLETE` означает ответы всех кафедр, `PARTIAL` — только части, `NOT_RUN` — отсутствие пригодных ответов или кафедр. Зелёная карточка «Конфликты расписания не обнаружены» разрешена только для `COMPLETE` без найденных конфликтов; частичный результат всегда остаётся предупреждением, а полный отказ показывается как «Проверка не выполнена». Технические причины отказов в DOM не выводятся. - Вкладка `groups` загружает кафедры, специальности, профили, учебные годы и календарные графики. Список групп открывается через `/api/groups?includeArchived=true`, поэтому в таблице видны активные, будущие, завершившие обучение и архивные группы со статусом. Группа создаётся через `/api/groups` с `specialtyId` и `specialtyProfileId`, а модалка редактирования использует широкую сетку полей без внутреннего пустого скролла. Блок подгрупп использует `/api/subgroups` и `/api/groups/{id}/subgroups`, а блок назначений использует `/api/groups/{id}/calendar-assignments`. После назначения графика в таблице назначений сразу выводятся дисциплины графика, сгруппированные по номерам семестров. В селекты подгрупп и назначений попадают только группы с `active=true`. - Вкладка `teacher-requests` показывает pending-заявки кафедр на создание преподавателей. Администратор может скорректировать кафедру, логин, ФИО и должность, задать пароль минимум 8 символов, затем одобрить заявку через `/api/teacher-requests/{id}/approve` или отклонить её через `/api/teacher-requests/{id}/reject`. Для роли `ADMIN` счётчик pending-заявок выводится в пункте меню «Заявки» и рядом с заголовком страницы, чтобы очередь была видна без открытия вкладки. - Вкладка `department-workspace` в блоке преподавателей объединяет данные `/api/department/teachers` и `/api/workload/teachers`: каждый преподаватель показывается одной карточкой с должностью и нагрузкой за выбранный период, преподаватели без занятий получают нулевую нагрузку, а преподаватели из расписания добавляются без дублей. Если дата начала периода выбрана позже даты окончания, поле окончания очищается, а расчёт нагрузки ждёт корректный период. @@ -208,6 +214,19 @@ export const api = { --- +## Frontend-тесты + +Регрессионные проверки frontend используют встроенный `node:test` без сторонних npm-зависимостей (Node.js 18+). Тесты `dashboard-conflicts.test.mjs` покрывают локальные даты `Europe/Moscow` в интервале 00:00–03:00, первые дни месяца, переход года, полную/частичную/не выполненную загрузку и запрет ложного зелёного статуса. + +Команды выполняются из каталога `frontend/`: + +```bash +npm test # unit-тесты дат, загрузки кафедр и UI-состояний +npm run check # синтаксис модулей дашборда + unit-тесты +``` + +--- + ## Аутентификация (Frontend) ### Страница входа (`/index.html`) diff --git a/docs/INFRASTRUCTURE.md b/docs/INFRASTRUCTURE.md index 842df9d..73e7948 100644 --- a/docs/INFRASTRUCTURE.md +++ b/docs/INFRASTRUCTURE.md @@ -126,16 +126,24 @@ env: снимают readiness; резервная H2-БД не считается готовой tenant-БД. При добавлении тенанта через API: -1. `TenantLifecycleService` создаёт отдельный candidate pool, проверяет соединение и Flyway -2. `KubernetesTenantSecretUpdater` выполняет `GET` актуального Secret и применяет к списку +1. `TenantConfigWatcher` до мутации разбирает и при необходимости применяет текущую + mounted-проекцию как безопасный baseline; ошибка подготовки прерывает операцию +2. `TenantLifecycleService` создаёт отдельный candidate pool, проверяет соединение и Flyway +3. `KubernetesTenantSecretUpdater` выполняет `GET` актуального Secret и применяет к списку только upsert запрошенного домена -3. полный объект Secret отправляется условным `PUT` с текущим `metadata.resourceVersion`; +4. полный объект Secret отправляется условным `PUT` с текущим `metadata.resourceVersion`; при `409 Conflict` выполняются повторное чтение и повторное применение своей мутации -4. `TenantRoutingDataSource` атомарно публикует candidate только после успешной либо +5. `TenantRoutingDataSource` атомарно публикует candidate только после успешной либо подтверждённой повторным чтением персистенции -5. старый pool перестаёт принимать новые запросы и закрывается после drain/grace timeout -6. `TenantConfigWatcher` на остальных pod видит обновлённый файл и каждые 30 секунд - применяет добавление или удаление домена +6. старый pool перестаёт принимать новые запросы и передаётся на закрытие после + drain/grace timeout +7. lifecycle возвращает `TenantLifecycleMutationResult` с `TenantSecretUpdateReceipt`; + semantic fence регистрируется только для фактически записанного изменения + (`persisted=true`, `changed=true`) +8. `TenantConfigWatcher` на остальных pod видит обновлённый файл и каждые 30 секунд + синхронизирует полный нормализованный `TenantConfig`, включая изменения `name`, `domain`, + `url`, `username` и `password`; новый или изменённый pool проходит проверку соединения, Flyway + и атомарный swap без повторной записи Secret Удаление использует тот же persistence-first порядок и применяет к актуальному Secret только remove указанного домена. Число попыток записи ограничено тремя, задержка между повторами @@ -147,10 +155,17 @@ backend восстанавливает прежний снимок только Неопределённый сетевой результат сначала сверяется повторным `GET`; совпавшее целевое состояние принимается без квитанции, допускающей небезопасный автоматический откат. -Watcher пока не заменяет подключение существующего домена при изменении URL или credentials. -Такое изменение сбрасывает readiness, но полное применение на другом pod относится к -проблеме №13. До её исправления нельзя считать watcher механизмом полной синхронизации всех -полей `TenantConfig`. +Watcher подтверждает SHA-256 файловой ревизии только после полного успешного применения +снимка. При ошибке прежний применённый хеш сохраняется, readiness снимается, а синхронизация +повторяется с экспоненциальной задержкой от 30 до 300 секунд. + +Защита от задержки kubelet основана не на raw hash, а на полном нормализованном снимке. +Квитанция фактической persisted-мутации задаёт `previousTenants` и `committedTenants`: +previous и промежуточные committed-снимки временно deferred, последний committed ожидается. +Поэтому последовательность H0 → H1 → H2 не откатывается при доставке H0/H1, а H2 применяется. +Неизвестный merged snapshot, не совпадающий с deferred-состояниями, применяется сразу. +Persisted no-op и локальная операция fence не создают. Если sync оборвался после swap на +публикации readiness, retry проверяет уже активное соединение и не выполняет второй swap. Kubernetes-клиент доверяет только service-account CA и проверяет hostname API server. Поскольку реализация использует HTTP `GET` и `PUT`, минимальная Role должна разрешать только diff --git a/frontend/admin/css/components.css b/frontend/admin/css/components.css index 9cb01b8..b1e51ba 100755 --- a/frontend/admin/css/components.css +++ b/frontend/admin/css/components.css @@ -246,6 +246,77 @@ border-color: var(--button-secondary-border); } +.dashboard-check-state { + --check-accent: var(--text-secondary); + --check-surface: rgba(148, 163, 184, 0.08); + --check-border: rgba(148, 163, 184, 0.22); + display: grid; + grid-template-columns: auto minmax(0, 1fr); + gap: 0.9rem; + align-items: start; + padding: 1rem 1.1rem; + color: var(--text-primary); + background: linear-gradient(115deg, var(--check-surface), transparent 72%); + border: 1px solid var(--check-border); + border-left: 4px solid var(--check-accent); + border-radius: var(--radius-sm); +} + +.dashboard-check-state--success { + --check-accent: var(--success); + --check-surface: rgba(16, 185, 129, 0.1); + --check-border: rgba(16, 185, 129, 0.24); +} + +.dashboard-check-state--warning { + --check-accent: var(--warning); + --check-surface: rgba(245, 158, 11, 0.1); + --check-border: rgba(245, 158, 11, 0.26); +} + +.dashboard-check-state--error { + --check-accent: var(--error); + --check-surface: rgba(239, 68, 68, 0.1); + --check-border: rgba(239, 68, 68, 0.26); +} + +.dashboard-check-state__icon { + display: grid; + place-items: center; + width: 40px; + height: 40px; + color: var(--check-accent); + background: var(--check-surface); + border: 1px solid var(--check-border); + border-radius: var(--radius-sm); +} + +.dashboard-check-state__body { + display: flex; + min-width: 0; + flex-direction: column; + gap: 0.2rem; +} + +.dashboard-check-state__body strong { + color: var(--check-accent); + font-size: 0.95rem; + line-height: 1.35; +} + +.dashboard-check-state__body > span { + color: var(--text-primary); + font-size: 0.86rem; + line-height: 1.5; +} + +.dashboard-check-state__body small { + margin-top: 0.25rem; + color: var(--text-secondary); + font-size: 0.76rem; + line-height: 1.4; +} + @media (max-width: 1200px) { .dashboard-metrics-grid { grid-template-columns: repeat(2, minmax(180px, 1fr)); diff --git a/frontend/admin/js/dashboard-conflicts.js b/frontend/admin/js/dashboard-conflicts.js new file mode 100644 index 0000000..1c82680 --- /dev/null +++ b/frontend/admin/js/dashboard-conflicts.js @@ -0,0 +1,214 @@ +export const CONFLICT_CHECK_STATE = Object.freeze({ + COMPLETE: 'COMPLETE', + PARTIAL: 'PARTIAL', + NOT_RUN: 'NOT_RUN' +}); + +export const CONFLICT_CHECK_REASON = Object.freeze({ + NO_DEPARTMENTS: 'NO_DEPARTMENTS', + ALL_REQUESTS_FAILED: 'ALL_REQUESTS_FAILED' +}); + +/** Формирует date-only строку из локальных компонентов без UTC-конвертации. */ +export function formatLocalDate(date) { + if (!(date instanceof Date) || Number.isNaN(date.getTime())) { + throw new TypeError('Для форматирования требуется корректная дата'); + } + return [ + String(date.getFullYear()).padStart(4, '0'), + String(date.getMonth() + 1).padStart(2, '0'), + String(date.getDate()).padStart(2, '0') + ].join('-'); +} + +/** Возвращает локальные границы недели с понедельника по воскресенье включительно. */ +export function currentWeekDateRange(referenceDate = new Date()) { + if (!(referenceDate instanceof Date) || Number.isNaN(referenceDate.getTime())) { + throw new TypeError('Для расчёта недели требуется корректная дата'); + } + + const localDate = new Date( + referenceDate.getFullYear(), + referenceDate.getMonth(), + referenceDate.getDate() + ); + const dayOfWeek = localDate.getDay(); + const daysFromMonday = dayOfWeek === 0 ? -6 : 1 - dayOfWeek; + const monday = addLocalDays(localDate, daysFromMonday); + const sunday = addLocalDays(monday, 6); + + return { + startDate: formatLocalDate(monday), + endDate: formatLocalDate(sunday) + }; +} + +/** + * Загружает расписания независимо и сохраняет факт каждого отказа. + * Технические причины намеренно не возвращаются в UI-модель. + */ +export async function loadDepartmentSchedules(departments, loadSchedule) { + if (!Array.isArray(departments)) { + throw new TypeError('Список кафедр должен быть массивом'); + } + if (typeof loadSchedule !== 'function') { + throw new TypeError('Функция загрузки расписания обязательна'); + } + + if (departments.length === 0) { + return { + state: CONFLICT_CHECK_STATE.NOT_RUN, + reason: CONFLICT_CHECK_REASON.NO_DEPARTMENTS, + lessons: [], + totalDepartmentCount: 0, + checkedDepartmentCount: 0, + failedDepartments: [] + }; + } + + const results = await Promise.allSettled(departments.map(async department => { + const lessons = await loadSchedule(department); + if (!Array.isArray(lessons)) { + throw new TypeError('API расписания вернул некорректный формат данных'); + } + return lessons; + })); + + const lessons = []; + const failedDepartments = []; + let checkedDepartmentCount = 0; + + results.forEach((result, index) => { + if (result.status === 'fulfilled') { + checkedDepartmentCount += 1; + lessons.push(...result.value); + return; + } + failedDepartments.push(publicDepartment(departments[index], index)); + }); + + const state = checkedDepartmentCount === 0 + ? CONFLICT_CHECK_STATE.NOT_RUN + : failedDepartments.length > 0 + ? CONFLICT_CHECK_STATE.PARTIAL + : CONFLICT_CHECK_STATE.COMPLETE; + + return { + state, + reason: state === CONFLICT_CHECK_STATE.NOT_RUN + ? CONFLICT_CHECK_REASON.ALL_REQUESTS_FAILED + : null, + lessons, + totalDepartmentCount: departments.length, + checkedDepartmentCount, + failedDepartments + }; +} + +/** Возвращает безопасную UI-модель итогового состояния проверки. */ +export function conflictCheckPresentation(scheduleLoad, conflictCount, range) { + assertPresentationInput(scheduleLoad, conflictCount, range); + + const count = conflictCount; + const startDate = range.startDate; + const endDate = range.endDate; + const rangeLabel = `${startDate} — ${endDate}`; + + if (scheduleLoad?.state === CONFLICT_CHECK_STATE.NOT_RUN) { + const noDepartments = scheduleLoad.reason === CONFLICT_CHECK_REASON.NO_DEPARTMENTS; + return { + tone: 'error', + title: 'Проверка не выполнена', + description: noDepartments + ? 'Нет кафедр, расписание которых можно проверить.' + : 'Не удалось получить расписание ни одной кафедры. Подтвердить отсутствие конфликтов нельзя.', + meta: `Период: ${rangeLabel}` + }; + } + + if (scheduleLoad?.state === CONFLICT_CHECK_STATE.PARTIAL) { + return { + tone: 'warning', + title: 'Проверка выполнена частично', + description: count > 0 + ? 'Показаны найденные конфликты, но подтвердить полноту результата нельзя.' + : 'В доступной части расписания конфликтов не найдено, но подтвердить их отсутствие во всём расписании нельзя.', + meta: `Проверено кафедр: ${scheduleLoad.checkedDepartmentCount} из ` + + `${scheduleLoad.totalDepartmentCount} · Период: ${rangeLabel}` + }; + } + + if (scheduleLoad?.state === CONFLICT_CHECK_STATE.COMPLETE && count === 0) { + return { + tone: 'success', + title: 'Конфликты расписания не обнаружены', + description: 'Проверены накладки преподавателей и аудиторий, а также вместимость помещений.', + meta: `Проверено кафедр: ${scheduleLoad.checkedDepartmentCount} из ` + + `${scheduleLoad.totalDepartmentCount} · Период: ${rangeLabel}` + }; + } + + return null; +} + +function addLocalDays(date, days) { + const result = new Date(date); + result.setDate(result.getDate() + days); + return result; +} + +function assertPresentationInput(scheduleLoad, conflictCount, range) { + if (!Number.isInteger(conflictCount) || conflictCount < 0) { + throw new TypeError('Количество конфликтов должно быть целым неотрицательным числом'); + } + + if (!isValidDateOnly(range?.startDate) || !isValidDateOnly(range?.endDate) + || range.startDate > range.endDate) { + throw new TypeError('Для результата проверки требуется корректный локальный диапазон дат'); + } + + const total = scheduleLoad?.totalDepartmentCount; + const checked = scheduleLoad?.checkedDepartmentCount; + if (!Number.isInteger(total) || total < 0 + || !Number.isInteger(checked) || checked < 0 || checked > total) { + throw new TypeError('Количество проверенных кафедр не соответствует результату проверки'); + } + + if (scheduleLoad.state === CONFLICT_CHECK_STATE.COMPLETE) { + if (total === 0 || checked !== total) { + throw new TypeError('Полная проверка должна охватывать все кафедры'); + } + return; + } + + if (scheduleLoad.state === CONFLICT_CHECK_STATE.PARTIAL) { + if (checked === 0 || checked === total) { + throw new TypeError('Частичная проверка должна охватывать только часть кафедр'); + } + return; + } + + if (scheduleLoad.state === CONFLICT_CHECK_STATE.NOT_RUN && checked === 0) { + return; + } + + throw new TypeError('Неизвестное состояние проверки конфликтов'); +} + +function isValidDateOnly(value) { + const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value || ''); + if (!match) return false; + + const [, year, month, day] = match.map(Number); + const date = new Date(year, month - 1, day); + return date.getFullYear() === year + && date.getMonth() === month - 1 + && date.getDate() === day; +} + +function publicDepartment(department, index) { + return { + id: department?.id ?? null, + name: department?.departmentName || department?.name || `Кафедра ${index + 1}` + }; +} diff --git a/frontend/admin/js/views/dashboard.js b/frontend/admin/js/views/dashboard.js index 6b9d8c0..d594266 100644 --- a/frontend/admin/js/views/dashboard.js +++ b/frontend/admin/js/views/dashboard.js @@ -1,5 +1,12 @@ import { api } from '../api.js'; -import { escapeHtml, showAlert, hideAlert } from '../utils.js'; +import { escapeHtml } from '../utils.js'; +import { + CONFLICT_CHECK_STATE, + conflictCheckPresentation, + currentWeekDateRange, + formatLocalDate, + loadDepartmentSchedules +} from '../dashboard-conflicts.js'; export async function initDashboard() { // DOM Элементы @@ -20,16 +27,27 @@ export async function initDashboard() { let teachers = []; let todayLessons = []; let timeSlots = []; + let dashboardDataReady = false; btnRecheck.addEventListener('click', async () => { btnRecheck.disabled = true; - btnRecheck.textContent = '...'; - await checkConflicts(); - btnRecheck.textContent = 'Перепроверить'; - btnRecheck.disabled = false; + btnRecheck.setAttribute('aria-busy', 'true'); + btnRecheck.textContent = 'Проверка…'; + try { + if (dashboardDataReady) { + await checkConflicts(); + } else { + await loadData(); + } + } finally { + btnRecheck.textContent = 'Перепроверить'; + btnRecheck.disabled = false; + btnRecheck.removeAttribute('aria-busy'); + } }); async function loadData() { + dashboardDataReady = false; try { // Загружаем базовые справочники [departments, classrooms, groups, teachers] = await Promise.all([ @@ -45,7 +63,7 @@ export async function initDashboard() { metricStudents.textContent = totalStudents; metricTeachers.textContent = teachers.length; - const todayStr = new Date().toISOString().split('T')[0]; + const todayStr = formatLocalDate(new Date()); // Загружаем временные слоты и сегодняшнее расписание const lessonsPromises = departments.map(d => @@ -75,10 +93,18 @@ export async function initDashboard() { metricClassrooms.textContent = `${classPercent}% (${occupiedClassroomIds.size}/${activeClassrooms.length})`; updateRealtimeMonitoring(); + dashboardDataReady = true; await checkConflicts(); } catch (e) { - console.error("Dashboard data load error", e); - conflictsContainer.innerHTML = `
Ошибка загрузки панели: ${escapeHtml(e.message)}
`; + dashboardDataReady = false; + console.error('Не удалось загрузить данные панели', { + errorType: e?.name || 'Error' + }); + conflictsContainer.innerHTML = renderCheckStateCard({ + tone: 'error', + title: 'Проверка не выполнена', + description: 'Не удалось загрузить данные панели. Нажмите «Перепроверить», чтобы повторить попытку.' + }); } } @@ -147,25 +173,25 @@ export async function initDashboard() { // --- Анализ конфликтов (Red Zone) --- async function checkConflicts() { + conflictsContainer.setAttribute('aria-busy', 'true'); conflictsContainer.innerHTML = '
Анализ расписания и выявление конфликтов...
'; - // Вычисляем даты начала и конца текущей недели - const curr = new Date(); - const day = curr.getDay(); - const diff = curr.getDate() - day + (day === 0 ? -6 : 1); // Понедельник - const monday = new Date(curr.setDate(diff)); - const sunday = new Date(curr.setDate(diff + 6)); - - const mondayStr = monday.toISOString().split('T')[0]; - const sundayStr = sunday.toISOString().split('T')[0]; - try { - // Загружаем расписание на всю неделю по кафедрам - const weekLessonsPromises = departments.map(d => - api.get(`/api/schedule/search?departmentId=${d.id}&startDate=${mondayStr}&endDate=${sundayStr}`).catch(() => []) + const { startDate, endDate } = currentWeekDateRange(new Date()); + const scheduleLoad = await loadDepartmentSchedules( + departments, + department => api.get( + `/api/schedule/search?departmentId=${department.id}` + + `&startDate=${startDate}&endDate=${endDate}` + ) ); - const weekLessonsArrays = await Promise.all(weekLessonsPromises); - const weekLessons = weekLessonsArrays.flat(); + + if (scheduleLoad.state === CONFLICT_CHECK_STATE.NOT_RUN) { + renderConflicts([], scheduleLoad, { startDate, endDate }); + return; + } + + const weekLessons = scheduleLoad.lessons; const conflicts = []; @@ -264,31 +290,40 @@ export async function initDashboard() { } }); - renderConflicts(conflicts); + renderConflicts(conflicts, scheduleLoad, { startDate, endDate }); } catch (e) { - console.error("Conflicts check error", e); - conflictsContainer.innerHTML = `
Ошибка при анализе конфликтов: ${escapeHtml(e.message)}
`; + console.error('Не удалось выполнить проверку конфликтов', { + errorType: e?.name || 'Error' + }); + conflictsContainer.innerHTML = renderCheckStateCard({ + tone: 'error', + title: 'Проверка не выполнена', + description: 'Во время анализа произошла ошибка. Повторите проверку позже.' + }); + } finally { + conflictsContainer.removeAttribute('aria-busy'); } } - function renderConflicts(conflicts) { - if (!conflicts.length) { - conflictsContainer.innerHTML = ` -
- - - - -
- Конфликты расписания не обнаружены! - Все правила расписания на текущую неделю согласованы, накладки преподавателей/аудиторий и переполнения отсутствуют. -
-
- `; + function renderConflicts(conflicts, scheduleLoad, range) { + const stateCards = []; + const presentation = conflictCheckPresentation(scheduleLoad, conflicts.length, range); + + if (scheduleLoad.state === CONFLICT_CHECK_STATE.NOT_RUN) { + conflictsContainer.innerHTML = renderCheckStateCard(presentation); return; } - conflictsContainer.innerHTML = conflicts.map(c => { + if (presentation) { + stateCards.push(renderCheckStateCard(presentation)); + } + + if (!conflicts.length) { + conflictsContainer.innerHTML = stateCards.join(''); + return; + } + + const conflictCards = conflicts.map(c => { const isError = c.severity === 'error'; const borderCol = isError ? 'var(--error, #ef4444)' : '#f59e0b'; const bgCol = isError ? 'rgba(239, 68, 68, 0.05)' : 'rgba(245, 158, 11, 0.05)'; @@ -306,6 +341,27 @@ export async function initDashboard() { `; }).join(''); + conflictsContainer.innerHTML = stateCards.join('') + conflictCards; + } + + function renderCheckStateCard({ tone, title, description, meta = '' }) { + const icon = tone === 'success' + ? '' + : tone === 'warning' + ? '' + : ''; + return ` +
+ + + ${escapeHtml(title)} + ${escapeHtml(description)} + ${meta ? `${escapeHtml(meta)}` : ''} + +
+ `; } // Загружаем данные при старте diff --git a/frontend/admin/views/dashboard.html b/frontend/admin/views/dashboard.html index b3e7dd6..415ed90 100644 --- a/frontend/admin/views/dashboard.html +++ b/frontend/admin/views/dashboard.html @@ -135,10 +135,10 @@
Анализ накладок и коллизий расписания на текущую неделю
- + -
+
Анализ расписания и выявление конфликтов...
diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..9db5f87 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,12 @@ +{ + "name": "magistr-frontend-checks", + "private": true, + "type": "module", + "engines": { + "node": ">=18" + }, + "scripts": { + "test": "node --test tests/*.test.mjs", + "check": "node --check admin/js/dashboard-conflicts.js && node --check admin/js/views/dashboard.js && node --test tests/*.test.mjs" + } +} diff --git a/frontend/tests/dashboard-conflicts.test.mjs b/frontend/tests/dashboard-conflicts.test.mjs new file mode 100644 index 0000000..a18ff3f --- /dev/null +++ b/frontend/tests/dashboard-conflicts.test.mjs @@ -0,0 +1,151 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; + +import { + CONFLICT_CHECK_REASON, + CONFLICT_CHECK_STATE, + conflictCheckPresentation, + currentWeekDateRange, + formatLocalDate, + loadDepartmentSchedules +} from '../admin/js/dashboard-conflicts.js'; + +process.env.TZ = 'Europe/Moscow'; + +test('неделя для 2026-07-02 охватывает 2026-06-29…2026-07-05', () => { + assert.deepEqual( + currentWeekDateRange(new Date('2026-07-01T21:15:00Z')), + { startDate: '2026-06-29', endDate: '2026-07-05' } + ); +}); + +test('неделя корректно пересекает границу года', () => { + assert.deepEqual( + currentWeekDateRange(new Date(2026, 0, 1, 8, 30, 0)), + { startDate: '2025-12-29', endDate: '2026-01-04' } + ); +}); + +test('date-only формируется из локальных компонентов', () => { + assert.equal(formatLocalDate(new Date('2026-01-01T21:15:00Z')), '2026-01-02'); +}); + +test('полный успех разрешает достоверный вывод по всем кафедрам', async () => { + const result = await loadDepartmentSchedules( + [{ id: 1 }, { id: 2 }], + async department => [{ departmentId: department.id }] + ); + + assert.equal(result.state, CONFLICT_CHECK_STATE.COMPLETE); + assert.equal(result.checkedDepartmentCount, 2); + assert.equal(result.totalDepartmentCount, 2); + assert.deepEqual(result.lessons, [{ departmentId: 1 }, { departmentId: 2 }]); + assert.deepEqual(result.failedDepartments, []); +}); + +test('единичный отказ даёт частичный результат, а не пустой успешный ответ', async () => { + const departments = [ + { id: 1, departmentName: 'Физика' }, + { id: 2, departmentName: 'Математика' } + ]; + const result = await loadDepartmentSchedules(departments, async department => { + if (department.id === 2) { + throw new Error('тестовая техническая причина'); + } + return [{ departmentId: department.id }]; + }); + + assert.equal(result.state, CONFLICT_CHECK_STATE.PARTIAL); + assert.equal(result.checkedDepartmentCount, 1); + assert.deepEqual(result.lessons, [{ departmentId: 1 }]); + assert.deepEqual(result.failedDepartments, [{ id: 2, name: 'Математика' }]); + assert.equal('reason' in result.failedDepartments[0], false); +}); + +test('отказ всех запросов означает, что проверка не выполнена', async () => { + const result = await loadDepartmentSchedules( + [{ id: 1 }, { id: 2 }], + async () => { throw new Error('тестовый отказ'); } + ); + + assert.equal(result.state, CONFLICT_CHECK_STATE.NOT_RUN); + assert.equal(result.reason, CONFLICT_CHECK_REASON.ALL_REQUESTS_FAILED); + assert.equal(result.checkedDepartmentCount, 0); + assert.deepEqual(result.lessons, []); +}); + +test('отсутствие кафедр не изображается как зелёная успешная проверка', async () => { + const result = await loadDepartmentSchedules([], async () => []); + + assert.equal(result.state, CONFLICT_CHECK_STATE.NOT_RUN); + assert.equal(result.reason, CONFLICT_CHECK_REASON.NO_DEPARTMENTS); +}); + +test('зелёная карточка разрешена только для полной проверки без конфликтов', () => { + const complete = { + state: CONFLICT_CHECK_STATE.COMPLETE, + checkedDepartmentCount: 2, + totalDepartmentCount: 2 + }; + const range = { startDate: '2026-06-29', endDate: '2026-07-05' }; + + assert.equal(conflictCheckPresentation(complete, 0, range).tone, 'success'); + assert.equal(conflictCheckPresentation(complete, 1, range), null); +}); + +test('некорректный контракт результата не может породить зелёный статус', () => { + const range = { startDate: '2026-06-29', endDate: '2026-07-05' }; + + assert.throws( + () => conflictCheckPresentation({ + state: CONFLICT_CHECK_STATE.COMPLETE, + checkedDepartmentCount: 1, + totalDepartmentCount: 2 + }, 0, range), + /Полная проверка должна охватывать все кафедры/ + ); + assert.throws( + () => conflictCheckPresentation({ + state: CONFLICT_CHECK_STATE.COMPLETE, + checkedDepartmentCount: 2, + totalDepartmentCount: 2 + }, Number.NaN, range), + /Количество конфликтов должно быть целым неотрицательным числом/ + ); +}); + +test('частичная проверка без конфликтов остаётся предупреждением', () => { + const presentation = conflictCheckPresentation({ + state: CONFLICT_CHECK_STATE.PARTIAL, + checkedDepartmentCount: 1, + totalDepartmentCount: 2 + }, 0, { startDate: '2026-06-29', endDate: '2026-07-05' }); + + assert.equal(presentation.tone, 'warning'); + assert.equal(presentation.title, 'Проверка выполнена частично'); + assert.match(presentation.description, /во всём расписании нельзя/); +}); + +test('частичная проверка с конфликтами предупреждает о неполноте результата', () => { + const presentation = conflictCheckPresentation({ + state: CONFLICT_CHECK_STATE.PARTIAL, + checkedDepartmentCount: 1, + totalDepartmentCount: 3 + }, 2, { startDate: '2026-06-29', endDate: '2026-07-05' }); + + assert.equal(presentation.tone, 'warning'); + assert.match(presentation.description, /Показаны найденные конфликты/); +}); + +test('полный отказ формирует явное состояние «Проверка не выполнена»', () => { + const presentation = conflictCheckPresentation({ + state: CONFLICT_CHECK_STATE.NOT_RUN, + reason: CONFLICT_CHECK_REASON.ALL_REQUESTS_FAILED, + checkedDepartmentCount: 0, + totalDepartmentCount: 2 + }, 0, { startDate: '2026-06-29', endDate: '2026-07-05' }); + + assert.equal(presentation.tone, 'error'); + assert.equal(presentation.title, 'Проверка не выполнена'); + assert.match(presentation.description, /Подтвердить отсутствие конфликтов нельзя/); +}); From bc0e1ab1b4afe856282daefeba89ca9be1ec36a4 Mon Sep 17 00:00:00 2001 From: Zuev Date: Sun, 19 Jul 2026 14:40:43 +0300 Subject: [PATCH 08/14] =?UTF-8?q?=D0=B1=D0=B0=D0=B3-=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=2030/34?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 40 + .gitea/workflows/docker-build.yaml | 124 ++- BUG_FIX_PROGRESS.md | 567 +++++++++- backend/Dockerfile | 10 +- .../app/config/auth/ClientIpResolver.java | 146 +++ .../auth/LoginAttemptAuditCleanupJob.java | 167 +++ .../config/auth/LoginRateLimitService.java | 226 ++++ .../config/auth/LoginSecurityProperties.java | 70 ++ .../config/auth/RefreshTokenCleanupJob.java | 163 +++ .../app/config/auth/RefreshTokenService.java | 17 +- .../config/tenant/TenantDataSourceConfig.java | 18 +- .../app/config/tenant/TenantInterceptor.java | 6 +- .../tenant/TenantRoutingDataSource.java | 4 +- .../health/TenantDatabaseHealthMonitor.java | 2 + .../AcademicCalendarAdminController.java | 107 +- .../AcademicCalendarController.java | 29 +- .../app/controller/AuthController.java | 68 +- .../DatabaseConstraintViolationMapper.java | 190 ++++ .../app/controller/DepartmentController.java | 11 +- .../DepartmentWorkspaceController.java | 76 +- .../controller/EducationFormController.java | 2 +- .../controller/GlobalExceptionHandler.java | 24 +- .../app/controller/GroupController.java | 138 +-- .../app/controller/SpecialityController.java | 24 +- .../app/controller/SubgroupController.java | 13 +- .../app/controller/SubjectController.java | 10 +- .../TeacherCreationRequestController.java | 15 +- .../controller/TeacherSubjectController.java | 26 +- .../controller/TimeSlotAdminController.java | 81 +- .../app/controller/UserController.java | 125 +-- .../app/controller/WorkloadController.java | 165 ++- .../magistr/app/dto/ClassroomResponse.java | 10 +- .../magistr/app/dto/ScheduleOverrideDto.java | 4 +- .../magistr/app/dto/SubjectCommentDto.java | 4 +- .../dto/TeacherCreationRequestResponse.java | 6 +- .../app/model/AuthLoginAttemptAudit.java | 78 ++ .../magistr/app/model/AuthLoginRateLimit.java | 83 ++ .../magistr/app/model/AuthRefreshToken.java | 22 +- .../magistr/app/model/LifecycleEntity.java | 17 +- .../magistr/app/model/ScheduleOverride.java | 8 +- .../java/com/magistr/app/model/Subject.java | 2 +- .../com/magistr/app/model/SubjectComment.java | 8 +- .../app/model/TeacherCreationRequest.java | 22 +- .../model/TeacherDepartmentAssignment.java | 8 +- .../AcademicCalendarDayRepository.java | 28 + .../AcademicCalendarRepository.java | 14 + .../AcademicCalendarSubjectRepository.java | 2 + .../repository/AcademicYearRepository.java | 33 + .../AuthLoginAttemptAuditRepository.java | 31 + .../AuthLoginRateLimitRepository.java | 61 ++ .../AuthRefreshTokenRepository.java | 26 + .../app/repository/GroupRepository.java | 16 + .../repository/ScheduleRuleRepository.java | 49 + .../ScheduleRuleSlotRepository.java | 2 + .../app/repository/SemesterRepository.java | 41 + ...dentGroupCalendarAssignmentRepository.java | 51 + .../app/repository/SubjectRepository.java | 2 +- ...TeacherDepartmentAssignmentRepository.java | 45 + .../TimeSlotDateAssignmentRepository.java | 12 + .../app/repository/TimeSlotRepository.java | 46 + .../repository/TimeSlotScopeRepository.java | 10 + .../app/repository/UserRepository.java | 8 + .../app/service/AcademicDateService.java | 186 +++- .../app/service/AcademicPeriodService.java | 251 +++++ .../app/service/AcademicStructureService.java | 421 ++++++++ .../app/service/BusinessTimeService.java | 56 + .../app/service/ScheduleGeneratorService.java | 339 +++++- .../app/service/ScheduleQueryService.java | 76 +- .../app/service/SubjectImportService.java | 105 ++ .../app/service/TeacherDepartmentService.java | 234 +++++ .../magistr/app/service/TimeSlotService.java | 161 +++ .../utils/CourseAndSemesterCalculator.java | 5 +- .../src/main/resources/application.properties | 24 + .../main/resources/db/migration/V1__init.sql | 986 +++++++++++++++++- .../V2__subgroups_active_unique_name.sql | 6 - .../V3__schedule_override_invariants.sql | 94 -- .../V4__schedule_rule_even_hours.sql | 97 -- .../app/config/auth/ClientIpResolverTest.java | 51 + ...inRateLimitConcurrencyIntegrationTest.java | 200 ++++ .../auth/LoginRateLimitServiceTest.java | 149 +++ .../auth/RefreshTokenCleanupJobTest.java | 195 ++++ ...okenServiceConcurrencyIntegrationTest.java | 78 ++ .../config/auth/RefreshTokenServiceTest.java | 9 +- .../app/controller/AuthControllerTest.java | 41 + .../DepartmentWorkspaceControllerTest.java | 23 +- .../EducationOfficeRoleMatrixTest.java | 119 +++ ...obalExceptionHandlerDataIntegrityTest.java | 111 ++ .../TeacherSubjectControllerTest.java | 78 ++ .../app/controller/UserControllerTest.java | 12 +- .../controller/WorkloadControllerTest.java | 185 +++- ...riodInvariantMigrationIntegrationTest.java | 292 ++++++ ...emicStructureInvariantIntegrationTest.java | 393 +++++++ ...eduleOverrideMigrationIntegrationTest.java | 107 +- ...duleRuleHoursMigrationIntegrationTest.java | 148 +-- ...jectOwnershipInvariantIntegrationTest.java | 146 +++ ...herDepartmentInvariantIntegrationTest.java | 257 +++++ ...SlotInvariantMigrationIntegrationTest.java | 316 ++++++ .../app/model/LifecycleEntityTest.java | 14 + .../service/AcademicPeriodServiceTest.java | 245 +++++ .../service/AcademicStructureServiceTest.java | 335 ++++++ .../app/service/BusinessTimeServiceTest.java | 36 + .../ScheduleGenerationQueryCountTest.java | 265 +++++ ...heduleQueryServiceTeacherOverrideTest.java | 22 +- .../app/service/ScheduleQueryServiceTest.java | 39 + .../app/service/SubjectImportServiceTest.java | 110 ++ .../service/TeacherDepartmentServiceTest.java | 209 ++++ ...antLifecyclePostgreSqlIntegrationTest.java | 2 +- .../app/service/TimeSlotServiceTest.java | 226 ++++ compose.yaml | 70 +- docs/API.md | 148 ++- docs/ARCHITECTURE.md | 115 +- docs/BUSINESS_LOGIC.md | 65 +- docs/DATABASE.md | 152 ++- docs/DEVELOPMENT.md | 14 +- docs/FRONTEND.md | 140 +-- docs/INFRASTRUCTURE.md | 160 ++- docs/LOGGING.md | 10 +- docs/README.md | 12 +- frontend/.dockerignore | 2 + frontend/Dockerfile | 30 +- frontend/admin/css/components.css | 59 +- frontend/admin/css/layout.css | 13 + frontend/admin/css/main.css | 10 + frontend/admin/index.html | 17 - frontend/admin/js/api.js | 88 +- frontend/admin/js/dropdown.js | 10 +- frontend/admin/js/main.js | 59 +- frontend/admin/js/otel.js | 47 - frontend/admin/js/role-capabilities.js | 46 + frontend/admin/js/utils.js | 42 +- frontend/admin/js/views/academic-calendar.js | 41 +- frontend/admin/js/views/classrooms.js | 2 +- frontend/admin/js/views/dashboard.js | 12 +- .../admin/js/views/department-workspace.js | 19 +- frontend/admin/js/views/groups.js | 6 +- frontend/admin/js/views/schedule-view.js | 7 +- frontend/admin/js/views/schedule.js | 8 - frontend/admin/js/views/teacher-requests.js | 10 +- .../admin/js/views/university-structure.js | 8 +- frontend/admin/settings/index.html | 4 - frontend/admin/settings/js/main.js | 30 +- frontend/admin/settings/js/views/database.js | 22 +- frontend/admin/settings/js/views/edu-forms.js | 2 +- .../admin/settings/js/views/time-slots.js | 12 +- frontend/admin/settings/views/database.html | 4 +- frontend/admin/settings/views/time-slots.html | 4 +- frontend/admin/views/users.html | 4 +- frontend/auth-session.js | 119 +++ frontend/department/index.html | 4 +- frontend/edu-office/index.html | 4 +- frontend/index.html | 5 +- frontend/package-lock.json | 949 +++++++++++++++++ frontend/package.json | 17 +- frontend/proxy.conf | 10 + frontend/script.js | 50 +- frontend/scripts/build-vendor.mjs | 10 + frontend/security.conf | 5 + frontend/student/app.js | 222 ++++ frontend/student/index.html | 570 +--------- frontend/student/style.css | 297 ++++++ frontend/style.css | 14 + frontend/teacher/app.js | 246 +++++ frontend/teacher/index.html | 600 +---------- frontend/teacher/style.css | 303 ++++++ frontend/telemetry.js | 13 + frontend/telemetry/otel-entry.js | 40 + frontend/tests/auth-session.test.mjs | 174 ++++ frontend/tests/local-date-format.test.mjs | 18 + frontend/tests/security-policy.test.mjs | 169 +++ frontend/theme-toggle.js | 11 +- scripts/deploy-images.sh | 64 ++ scripts/test-deploy-images.sh | 56 + 172 files changed, 13431 insertions(+), 2910 deletions(-) create mode 100644 .env.example mode change 100755 => 100644 .gitea/workflows/docker-build.yaml create mode 100644 backend/src/main/java/com/magistr/app/config/auth/ClientIpResolver.java create mode 100644 backend/src/main/java/com/magistr/app/config/auth/LoginAttemptAuditCleanupJob.java create mode 100644 backend/src/main/java/com/magistr/app/config/auth/LoginRateLimitService.java create mode 100644 backend/src/main/java/com/magistr/app/config/auth/LoginSecurityProperties.java create mode 100644 backend/src/main/java/com/magistr/app/config/auth/RefreshTokenCleanupJob.java create mode 100644 backend/src/main/java/com/magistr/app/controller/DatabaseConstraintViolationMapper.java create mode 100644 backend/src/main/java/com/magistr/app/model/AuthLoginAttemptAudit.java create mode 100644 backend/src/main/java/com/magistr/app/model/AuthLoginRateLimit.java create mode 100644 backend/src/main/java/com/magistr/app/repository/AuthLoginAttemptAuditRepository.java create mode 100644 backend/src/main/java/com/magistr/app/repository/AuthLoginRateLimitRepository.java create mode 100644 backend/src/main/java/com/magistr/app/service/AcademicPeriodService.java create mode 100644 backend/src/main/java/com/magistr/app/service/AcademicStructureService.java create mode 100644 backend/src/main/java/com/magistr/app/service/BusinessTimeService.java create mode 100644 backend/src/main/java/com/magistr/app/service/SubjectImportService.java create mode 100644 backend/src/main/java/com/magistr/app/service/TeacherDepartmentService.java create mode 100644 backend/src/main/java/com/magistr/app/service/TimeSlotService.java delete mode 100644 backend/src/main/resources/db/migration/V2__subgroups_active_unique_name.sql delete mode 100644 backend/src/main/resources/db/migration/V3__schedule_override_invariants.sql delete mode 100644 backend/src/main/resources/db/migration/V4__schedule_rule_even_hours.sql create mode 100644 backend/src/test/java/com/magistr/app/config/auth/ClientIpResolverTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitConcurrencyIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/config/auth/RefreshTokenCleanupJobTest.java create mode 100644 backend/src/test/java/com/magistr/app/controller/EducationOfficeRoleMatrixTest.java create mode 100644 backend/src/test/java/com/magistr/app/controller/GlobalExceptionHandlerDataIntegrityTest.java create mode 100644 backend/src/test/java/com/magistr/app/controller/TeacherSubjectControllerTest.java create mode 100644 backend/src/test/java/com/magistr/app/migration/AcademicPeriodInvariantMigrationIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/migration/AcademicStructureInvariantIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/migration/SubjectOwnershipInvariantIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/migration/TeacherDepartmentInvariantIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/migration/TimeSlotInvariantMigrationIntegrationTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/AcademicPeriodServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/BusinessTimeServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/ScheduleGenerationQueryCountTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/SubjectImportServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/TeacherDepartmentServiceTest.java create mode 100644 backend/src/test/java/com/magistr/app/service/TimeSlotServiceTest.java delete mode 100644 frontend/admin/js/otel.js create mode 100644 frontend/admin/js/role-capabilities.js create mode 100644 frontend/auth-session.js create mode 100644 frontend/package-lock.json create mode 100644 frontend/proxy.conf create mode 100644 frontend/scripts/build-vendor.mjs create mode 100644 frontend/security.conf create mode 100644 frontend/student/app.js create mode 100644 frontend/student/style.css create mode 100644 frontend/teacher/app.js create mode 100644 frontend/teacher/style.css create mode 100644 frontend/telemetry.js create mode 100644 frontend/telemetry/otel-entry.js create mode 100644 frontend/tests/auth-session.test.mjs create mode 100644 frontend/tests/local-date-format.test.mjs create mode 100644 frontend/tests/security-policy.test.mjs create mode 100644 scripts/deploy-images.sh create mode 100644 scripts/test-deploy-images.sh diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ae07dab --- /dev/null +++ b/.env.example @@ -0,0 +1,40 @@ +# Скопируйте файл в .env и замените пустые значения локальными секретами. +POSTGRES_USER=myuser +POSTGRES_PASSWORD= +POSTGRES_DB=app_db + +# Сгенерировать: openssl rand -base64 48 +JWT_SECRET= +JWT_ACCESS_TOKEN_TTL=15m +JWT_REFRESH_TOKEN_TTL=7d +JWT_REFRESH_COOKIE_NAME=magistr_refresh +JWT_REFRESH_COOKIE_SECURE=false +JWT_REFRESH_CLEANUP_ENABLED=true +JWT_REFRESH_CLEANUP_RETENTION=30d +JWT_REFRESH_CLEANUP_BATCH_SIZE=500 +JWT_REFRESH_CLEANUP_MAX_BATCHES=20 +JWT_REFRESH_CLEANUP_INTERVAL_MS=3600000 +JWT_REFRESH_CLEANUP_INITIAL_DELAY_MS=60000 + +# Защита входа. Указывайте только адреса/сети фактических reverse proxy. +LOGIN_RATE_MAX_FAILURES=5 +LOGIN_RATE_ATTEMPT_WINDOW=15m +LOGIN_RATE_BASE_BLOCK_DURATION=1m +LOGIN_RATE_MAX_BLOCK_DURATION=15m +LOGIN_AUDIT_CLEANUP_ENABLED=true +LOGIN_AUDIT_RETENTION=90d +LOGIN_AUDIT_CLEANUP_BATCH_SIZE=500 +LOGIN_AUDIT_CLEANUP_MAX_BATCHES=20 +LOGIN_AUDIT_CLEANUP_INTERVAL_MS=86400000 +LOGIN_AUDIT_CLEANUP_INITIAL_DELAY_MS=120000 +TRUSTED_PROXY_CIDRS=172.16.0.0/12 + +# Календарные бизнес-даты приложения. +BUSINESS_TIME_ZONE=Europe/Moscow +TZ=Europe/Moscow + +# Локально Collector не входит в Compose. Укажите false при подключённом OTLP Collector. +OTEL_SDK_DISABLED=true + +# Измените, если порт 80 занят. +HTTP_PORT=80 diff --git a/.gitea/workflows/docker-build.yaml b/.gitea/workflows/docker-build.yaml old mode 100755 new mode 100644 index b23c642..917fa20 --- a/.gitea/workflows/docker-build.yaml +++ b/.gitea/workflows/docker-build.yaml @@ -1,4 +1,4 @@ -name: Build and Push Docker Images +name: Проверка, сборка и развёртывание Magistr on: push: @@ -7,32 +7,79 @@ on: tags: - 'v*' +concurrency: + group: magistr-production + cancel-in-progress: false + env: - REGISTRY: gitea.zuev.company # Замените на реальный домен вашего Gitea + REGISTRY: gitea.zuev.company BACKEND_IMAGE: zuev/magistr-backend FRONTEND_IMAGE: zuev/magistr-frontend jobs: - build-and-push-backend: + checks: + name: Обязательные проверки runs-on: ubuntu-latest + timeout-minutes: 20 steps: - - name: Checkout repository + - name: Получить исходный код uses: actions/checkout@v4 - - name: Log in to the Container registry + - name: Backend unit и component tests + run: >- + docker run --rm + -v "${{ github.workspace }}/backend:/workspace" + -w /workspace + maven:3.9.9-eclipse-temurin-17 + mvn -Dapi.version=1.44 '-Dtest=!*IntegrationTest' test + + - name: Frontend static и unit tests + run: >- + docker run --rm + -v "${{ github.workspace }}/frontend:/workspace" + -w /workspace + node:22-alpine3.23 + sh -c "npm ci && npm run check" + + - name: Проверить Docker Compose + env: + POSTGRES_PASSWORD: ci-config-only + JWT_SECRET: ci-only-secret-not-for-runtime-0123456789abcdef0123456789abcdef + run: docker compose config --quiet + + - name: Проверить сценарий immutable rollout и rollback + run: bash scripts/test-deploy-images.sh + + build-and-push-backend: + name: Собрать backend image + needs: checks + runs-on: ubuntu-latest + timeout-minutes: 30 + outputs: + digest: ${{ steps.build.outputs.digest }} + steps: + - name: Получить исходный код + uses: actions/checkout@v4 + + - name: Войти в Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} - password: ${{ secrets.ZUEV_TOKEN }} # Нужно создать секрет ZUEV_TOKEN в настройках репозитория (Personal Access Token) + password: ${{ secrets.ZUEV_TOKEN }} - - name: Extract metadata (tags, labels) for Docker + - name: Сформировать immutable tags и labels id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.BACKEND_IMAGE }} + flavor: latest=false + tags: | + type=sha,format=long,prefix=sha- + type=ref,event=tag - - name: Build and push Docker image + - name: Собрать и опубликовать backend image + id: build uses: docker/build-push-action@v6 with: context: ./backend @@ -41,26 +88,38 @@ jobs: labels: | ${{ steps.meta.outputs.labels }} org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} + org.opencontainers.image.revision=${{ github.sha }} + build-and-push-frontend: + name: Собрать frontend image + needs: checks runs-on: ubuntu-latest + timeout-minutes: 20 + outputs: + digest: ${{ steps.build.outputs.digest }} steps: - - name: Checkout repository + - name: Получить исходный код uses: actions/checkout@v4 - - name: Log in to the Container registry + - name: Войти в Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.ZUEV_TOKEN }} - - name: Extract metadata (tags, labels) for Docker + - name: Сформировать immutable tags и labels id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.FRONTEND_IMAGE }} + flavor: latest=false + tags: | + type=sha,format=long,prefix=sha- + type=ref,event=tag - - name: Build and push Docker image + - name: Собрать и опубликовать frontend image + id: build uses: docker/build-push-action@v6 with: context: ./frontend @@ -69,29 +128,38 @@ jobs: labels: | ${{ steps.meta.outputs.labels }} org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} + org.opencontainers.image.revision=${{ github.sha }} deploy-to-k8s: + name: Развернуть проверенные digests needs: [build-and-push-backend, build-and-push-frontend] runs-on: ubuntu-latest + timeout-minutes: 15 + environment: production + env: + BACKEND_REF: ${{ env.REGISTRY }}/${{ env.BACKEND_IMAGE }}@${{ needs.build-and-push-backend.outputs.digest }} + FRONTEND_REF: ${{ env.REGISTRY }}/${{ env.FRONTEND_IMAGE }}@${{ needs.build-and-push-frontend.outputs.digest }} + KUBECTL_VERSION: v1.33.12 + KUBECTL_SHA256: fe80ae4133b44fa2077db4af144e80765eb1b3b2eede55fbff6933c4374d8c6e steps: - - name: Create kubeconfig - run: | - mkdir -p ~/.kube - echo "${{ secrets.KUBECONFIG_DATA }}" | base64 -d > ~/.kube/config - chmod 600 ~/.kube/config + - name: Получить deploy-скрипт + uses: actions/checkout@v4 - - name: Install kubectl + - name: Создать kubeconfig + env: + KUBECONFIG_DATA: ${{ secrets.KUBECONFIG_DATA }} run: | - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" - chmod +x kubectl - mv kubectl /usr/local/bin/ + install -d -m 700 "$HOME/.kube" + printf '%s' "$KUBECONFIG_DATA" | base64 --decode > "$HOME/.kube/config" + chmod 600 "$HOME/.kube/config" - - name: Trigger Kubernetes Rollout + - name: Установить проверенный kubectl run: | - # Перезапускаем поды, чтобы они скачали свежий :main образ - kubectl rollout restart deployment backend frontend -n magistr - - # Ждём успешного обновления (5 минут на backend из-за Spring Boot) - kubectl rollout status deployment/frontend -n magistr --timeout=120s - kubectl rollout status deployment/backend -n magistr --timeout=300s + curl --fail --show-error --silent --location --retry 3 \ + --output kubectl \ + "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" + echo "${KUBECTL_SHA256} kubectl" | sha256sum --check --strict + sudo install -m 0755 kubectl /usr/local/bin/kubectl + - name: Применить digests и проверить rollout + run: bash scripts/deploy-images.sh "$BACKEND_REF" "$FRONTEND_REF" diff --git a/BUG_FIX_PROGRESS.md b/BUG_FIX_PROGRESS.md index c3f724b..f32f010 100644 --- a/BUG_FIX_PROGRESS.md +++ b/BUG_FIX_PROGRESS.md @@ -1,23 +1,30 @@ # Журнал исправления проблем -Обновлено: 2026-07-17 (Europe/Moscow). +Обновлено: 2026-07-19 (Europe/Moscow). ## Область и неизменяемые данные - В работе ровно 33 проблемы: `1` и `3–34`. - Проблема № 2 исключена: демонстрационные учётные записи, seed-данные и документация по ним не изменяются. - `BUG_REPORT.md` не редактируется. -- Существующие Flyway-миграции не редактируются. +- По прямому разрешению владельца проекта миграции V2–V7 удалены, а их итоговая схема + объединена в `V1__init.sql`: проект находится на этапе разработки, клиентских tenant-БД нет. + Для этой редакции требуется полный сброс локальной БД. Исходное рабочее дерево перед началом реализации было чистым (`git status --short` без вывода). -Контрольные суммы исходных миграций: +Контрольные суммы исходных миграций до разрешённой консолидации (историческая справка): | Файл | SHA-256 | |---|---| | `V1__init.sql` | `404f65f270dd87f4db996495fc970456c4fd0f762e7c32638199dffaa812ea7b` | | `V2__subgroups_active_unique_name.sql` | `68f5525a50ddba4f8800a63cab3cd0f84779e301c4a1f29a6e0399f97fbdb30b` | +Текущая единая baseline-миграция: `V1__init.sql`, SHA-256 +`250cab68c9ab6d8401619447585b47d6122458d1cb00a6e76af308414f89958d`. +Упоминания V2–V7 в исторических записях ниже описывают последовательность разработки до +консолидации и не означают наличие этих файлов в текущем дереве. + ## Исходная линия проверок | Проверка | Результат до изменений | @@ -50,36 +57,36 @@ | 1 | требуется внешнее действие | В коде и production YAML были встроенные/placeholder JWT и DB credentials; tenant и OTel credentials находились в отслеживаемой конфигурации; Secure-cookie не был обязательным для production. | Встроенный JWT default удалён; добавлен fail-fast validator; production использует только внешние `app-secret`, `tenants-secret`, `otel-postgres-secret`; создан `docs/SECURITY_RUNBOOK.md`. Репозиторная часть исправлена. Оператору остаются ротация, provisioning, rollout и очистка истории. | 11 JWT unit/context tests; общий backend: 45/0/0; `scripts/check-production-secrets.sh`; Kustomize и shell syntax — успешно. | | 3 | исправлено и проверено | Ротация refresh-токена выполняла read-check-write без блокировки/условного update. | `RefreshTokenService.rotate()` использует блокирующий `findByTokenHashForUpdate()` с `PESSIMISTIC_WRITE` и `JOIN FETCH` внутри транзакции. | Два синхронных запроса к Spring proxy и PostgreSQL: один успех, один отказ, один активный новый токен. Полный backend: 46/0/0/0. | | 4 | исправлено и проверено | `AuthContext` устанавливался до role-check и сохранялся в servlet-потоке, когда `preHandle=false` не приводил к `afterCompletion`. | `AuthorizationInterceptor` очищает контекст в начале каждого запроса и устанавливает пользователя только после успешной проверки ролей; финальная очистка сохранена. | Один MockMvc-поток: `403`, публичный запрос, разрешённый запрос и очистка после завершения. Полный backend: 47/0/0/0. | -| 5 | исправлено и проверено | Override сохранялся без доказательства исходной пары, action-specific полей и ресурсных конфликтов. | `ScheduleOverrideService` строит base/effective day, валидирует матрицу и фактическое изменение, проверяет ресурсы и сериализует CRUD через PostgreSQL advisory locks; V3 закрепляет структурные инварианты. | 27 целевых unit/MockMvc/PostgreSQL tests; полный backend: 74/0/0/0. | +| 5 | исправлено и проверено | Override сохранялся без доказательства исходной пары, action-specific полей и ресурсных конфликтов. | `ScheduleOverrideService` строит base/effective day, валидирует матрицу и фактическое изменение, проверяет ресурсы и сериализует CRUD через PostgreSQL advisory locks; структурные CHECK включены в V1. | 27 целевых unit/MockMvc/PostgreSQL tests; полный backend: 74/0/0/0. | | 6 | исправлено и проверено | Teacher-only поиск загружал только базовые правила исходного преподавателя до применения override. | Один snapshot overrides; релевантные `newTeacher`-замены достраивают exact base occurrences по уникальным датам, затем применяются overrides, финальный teacher-фильтр и deduplicate. | 5 новых A→B/phantom/cache/dedup/regression тестов; узкий прогон 10/0/0/0, полный backend 79/0/0/0. | -| 7 | исправлено и проверено | Контроллер сравнивал новые слоты только с сохранёнными правилами, не проверял роль преподавателя и enum формата, а нечётные часы приводили к перерасходу генератора. | `ScheduleRuleService` валидирует весь кандидат до мутации, попарно проверяет дубли/ресурсы, требует `TEACHER`, `Очно`/`Онлайн` и чётные часы; строка семестра сериализует запись. V4 закрепляет чётность и точный дубль в БД. | 23 service/MockMvc/Flyway/PostgreSQL tests; полный backend: 102/0/0/0. | +| 7 | исправлено и проверено | Контроллер сравнивал новые слоты только с сохранёнными правилами, не проверял роль преподавателя и enum формата, а нечётные часы приводили к перерасходу генератора. | `ScheduleRuleService` валидирует весь кандидат до мутации, попарно проверяет дубли/ресурсы, требует `TEACHER`, `Очно`/`Онлайн` и чётные часы; строка семестра сериализует запись. Чётность и точный дубль закреплены в V1. | 23 service/MockMvc/Flyway/PostgreSQL tests; полный backend: 102/0/0/0. | | 8 | исправлено и проверено | `saveGrid` удалял данные до полной валидации и ловил исключение внутри transactional controller-метода, поэтому Spring коммитил delete и уже обработанные строки. | `AcademicCalendarGridService` полностью валидирует и строит replacement до delete, атомарно заменяет строки и очищает кэш через `afterCommit`; контроллер стал HTTP-адаптером. | 8 unit + 1 PostgreSQL proxy test; fingerprint старой сетки после отказа неизменен; полный backend 111/0/0/0. | | 9 | исправлено и проверено | При update старый pool закрывался до создания нового; Hikari допускал ленивый нерабочий pool, Flyway проглатывал ошибку, а отказ persistence мог сочетаться с изменённым локальным состоянием. | `TenantLifecycleService` выполняет prepare → connection validation → Flyway → Secret persistence → atomic snapshot swap; candidate закрывается при отказе, прежний route сохраняется, Secret компенсируется, старый pool закрывается после drain. | 18 целевых unit/MockMvc/PostgreSQL tests; create/update, credentials, invalid connection, Flyway, persistence, swap, HTTP `503` и in-flight connection. Полный backend: 132/0/0/0. | | 10 | требуется внешнее действие | Два pod перезаписывали целый tenant-документ без `resourceVersion`; TCP probes не отражали готовность tenant-БД. | Backend применяет доменные upsert/remove через GET → условный PUT по `resourceVersion`, ограниченный retry и безопасную компенсацию; Actuator разделяет process-only liveness и readiness обязательных tenant-БД. Оператору остаются RBAC `get/update`, mount без `subPath`, `TENANTS_CONFIG_REQUIRED=true` и HTTP probes в отсутствующем `../k8s`. | 64 целевых теста; полный backend 169/0/0/0; LF-хеши V1–V4 совпадают. Kustomize не выполнен: `../k8s` отсутствует. | | 11 | исправлено и проверено | Воскресенье вычислялось повторным мутированием одной даты, date-only строился через UTC, а ошибки кафедральных запросов превращались в пустой успешный результат. | `dashboard-conflicts.js` формирует локальный диапазон на отдельных объектах, загружает кафедры через `Promise.allSettled` и fail-closed различает `COMPLETE`/`PARTIAL`/`NOT_RUN`; зелёная карточка разрешена только для полного результата без конфликтов. | 12 `node:test`: 02.07.2026 00:15 Europe/Moscow, переход года, полный/частичный/нулевой успех и строгий UI-контракт; `npm run check` и синтаксис 25 JS/MJS-файлов — успешно. | -| 12 | не начато | Access JWT хранится в Web Storage; origin исполняет удалённые модули; CSP допускает несовместимые сценарии. | Access JWT только в памяти, восстановление через HttpOnly refresh-cookie; локальные pinned assets; строгий CSP и удаление inline JS. | Login/refresh/logout/reload tests; статический аудит CSP/storage/imports. | +| 12 | исправлено и проверено | Четыре frontend-клиента хранили access JWT и профиль в Web Storage; login/admin исполняли OTel с `esm.sh`, а inline JS/styles не позволяли включить строгий CSP. | Общий `auth-session.js` держит access JWT только в памяти и восстанавливает его через HttpOnly refresh-cookie; OTel собирается из exact npm-зависимостей в same-origin bundle; Apache выдаёт CSP без `unsafe-inline`/`unsafe-eval`. | 21 frontend test, `npm audit` 0 vulnerabilities, Docker build и live HTTP/CSP/bundle check — успешно. | | 13 | исправлено и проверено | Watcher сравнивал только домены, подтверждал hash до полного успеха, а API после мутации мог принять запаздывающую mounted-проекцию за актуальную. | Полное нормализованное сравнение, prepare/verify/Flyway/atomic swap без повторной записи Secret, hash-after-success, retry 30–300 секунд и semantic snapshot fence по `TenantSecretUpdateReceipt`. | 53 целевых теста, 2 PostgreSQL lifecycle-теста; полный backend 200/0/0/0. | | 14 | исправлено и проверено | Kubernetes HTTP-клиент имел trust-all TLS fallback. | `KubernetesTenantSecretUpdater` загружает service-account CA, строит PKIX trust store, включает HTTPS hostname verification и не имеет небезопасного fallback. | Mock HTTPS: доверенный CA принят; чужой CA, неверный hostname и отсутствующий CA отклонены. Backend 45/0/0. | -| 15 | не начато | Не проверяются `start < end` и пересечения; duration доверяется клиенту; используемый DEFAULT scope можно изменить. | Централизованный валидатор, backend duration, DB/concurrency protection. | Overlap/adjacent/scope/concurrency tests. | -| 16 | не начато | Create/update проверяют лишь порядок дат, но не пересечения и принадлежность семестра году. | Единый calendar validator и PostgreSQL range/exclusion constraints. | Create/update + конкурентные PostgreSQL tests. | -| 17 | не начато | Изменение измерений группы/календаря оставляет несовместимые assignments/grid/subjects. | Отклонять несовместимое изменение транзакционно с `409`; контролировать `courseCount`. | Assignment сохранён после отказа; старшие строки не остаются. | -| 18 | не начато | Бизнес-решения смешивают `users.department_id` с датированными assignments и фильтруют архивные записи по текущему состоянию. | Date-aware resolver кафедры и единое использование истории. | Будущий перевод, прошлый период, архивный преподаватель, совместительство. | -| 19 | не начато | Workload принимает произвольный `departmentId` для роли `DEPARTMENT`. | Принудительный scope из `AuthContext`; глобальный доступ только разрешённым ролям. | Межкафедральный запрос кафедры не раскрывает данные. | -| 20 | не начато | Агрегаты переиспользуют интерактивный широкий поиск с лимитом 50 групп. | Специализированная batch/aggregate генерация без UI-лимита. | 51 и 100 активных групп. | -| 21 | не начато | Импорт ищет дисциплину по глобальному имени и меняет её владельца. | `409` для чужой записи, идемпотентность своей; scoped uniqueness при миграции. | Повторный свой импорт и совпадение чужой кафедры. | -| 22 | не начато | Видимые EDUCATION_OFFICE экраны вызывают backend endpoints с ADMIN-only правами. | Единая role matrix для backend/frontend; согласовать read/write capabilities. | Интеграционный сценарий календаря и форм обучения без штатного `403`. | -| 23 | не начато | Генератор повторно запрашивает semester/assignment/calendar day на каждой комбинации. | Батч-загрузка и request-scoped lookup maps. | Query-count test на 120 датах и десятках групп. | -| 24 | не начато | Истёкшие/отозванные refresh rows не удаляются. | Tenant-aware scheduled cleanup с retention и безопасностью двух pod. | Active/fresh rows сохраняются; cleanup идемпотентен и конкурентно безопасен. | -| 25 | не начато | Нет общего mapping DB constraints; контроллеры возвращают клиенту `getMessage()`. | Централизованный sanitizer/mapping `400`/`409`, убрать raw exception body. | Известный/неизвестный constraint без JDBC details. | -| 26 | не начато | Compose требует внешнюю сеть, не публикует HTTP, рассогласует DB/JWT и не имеет named volume. | Самодостаточная сеть/reverse proxy, согласованные env и volume. | Чистый `docker compose up -d --build`, HTTP `/` и `/api`. | -| 27 | не начато | Pipeline собирает/деплоит без обязательных тестов и для tag перезапускает mutable `main`. | Test gates, concurrency, immutable tag/digest rollout, rollback check. | Workflow lint/static inspection и shell tests. | -| 28 | не начато | Login не имеет shared rate limit; IP безусловно доверяет forwarded header. | PostgreSQL-backed tenant+trusted-IP+username limiter, lockout/audit, `429`/`Retry-After`. | Multi-instance integration tests, отсутствие user enumeration. | +| 15 | исправлено и проверено | CRUD слотов жил в контроллере, проверял только номер пары и принимал клиентскую длительность; DB не запрещала overlap и перенос используемого базового слота. | Транзакционный `TimeSlotService` блокирует сетки, валидирует границы, вычисляет duration и отклоняет overlap; V1 содержит duration CHECK, GiST exclusion и триггеры привязки правил к `DEFAULT`; UI показывает расчётное readonly-поле. | 6 unit; общий backend без Testcontainers 209/0/0/0; чистая V1 и конкурентные DB-сценарии проверены на PostgreSQL 16.3. | +| 16 | исправлено и проверено | CRUD проверял только порядок дат; update не проверял duplicate title/type, годы и семестры пересекались, а семестр мог выходить за год. | `AcademicPeriodService` централизует inclusive-range validation и блокирует родительский год; V1 содержит GiST exclusion constraints и взаимные триггеры границ года/семестра. | 8 unit; общий backend без Testcontainers 209/0/0/0; чистая V1, adjacent/overlap/bounds и конкурентные годы проверены на PostgreSQL 16.3. | +| 17 | исправлено и проверено | Изменение измерений группы/календаря оставляло несовместимые assignments/grid/subjects. | `AcademicStructureService` транзакционно блокирует группу/график, перевалидирует назначения, курсы, сетку и дисциплины; V1 дублирует инварианты конкурентно безопасными триггерами. Несовместимое изменение даёт русский `409` без мутации данных. | 7 unit; общий backend без Testcontainers 209/0/0/0; чистая V1, DB-отказы и гонка двух транзакций проверены на PostgreSQL 16.3. | +| 18 | исправлено и проверено | Бизнес-решения смешивали `users.department_id` с датированными assignments и фильтровали архивные записи по текущему состоянию. | `TeacherDepartmentService` централизует разрешение кафедры на дату; списки, права и нагрузка используют историю, будущий перевод не меняет текущую принадлежность; V1 запрещает overlap основных периодов. | 5 service + 7 controller tests; полный backend 216/0/0/0; чистая V1, overlap и конкурентная запись проверены на PostgreSQL 16.3. | +| 19 | исправлено и проверено | Workload принимал произвольный `departmentId` или глобальный scope для роли `DEPARTMENT`. | Все пять workload-сценариев вычисляют scope через `AuthContext`: кафедра получает только свою выборку, чужой ID даёт русский `403`; глобальный scope сохранён уполномоченным ролям. | 5 controller tests; полный backend 219/0/0/0; compose и diff-check успешны. | +| 20 | исправлено и проверено | Workload и free-classrooms переиспользовали интерактивный широкий поиск, который отклонял tenant с более чем 50 активными группами. | Добавлен узкий `searchForAggregation`: общие validation/overrides/filter/dedup сохранены, UI-лимит отключён только для агрегатов; обычный search не изменён. | 51 и 100 активных групп обработаны полностью; целевые 9/0/0/0, полный backend 221/0/0/0. | +| 21 | исправлено и проверено | Импорт находил дисциплину по глобальному имени и без проверки менял её `department_id`. | Транзакционный `SubjectImportService` сохраняет глобальное владение: свой повтор обновляет тот же ID, чужой даёт `409`; V1 содержит case-insensitive уникальность названия. | 4 unit; полный backend 225/0/0/0; чистая V1, регистровый дубль и конкурентная вставка проверены на PostgreSQL 16.3. | +| 22 | исправлено и проверено | Календарный график учебного отдела получал `403` на specialties/profiles, а видимый CRUD форм обучения был ADMIN-only. | EDUCATION_OFFICE получила read-only specialities/profiles и CRUD education forms; frontend admin/settings используют единый `role-capabilities.js`. | 2 MockMvc role-сценария через реальный interceptor; frontend role test; полный backend 227/0/0/0, npm check успешен. | +| 23 | исправлено и проверено | Генератор искал semester внутри дат и правил, а assignment/calendar day и эффективную сетку времени — внутри комбинаций дат и групп. | `AcademicDateService.ScheduleSnapshot`, batch-репозитории и `buildScheduleForGroups()` загружают данные один раз на запрос; lookup-карты используются во всех внутренних циклах. | 120 дат, 30 групп и 20 правил: ровно 7 repository reads, 30 корректных занятий; полный backend 228/0/0/0. | +| 24 | исправлено и проверено | Login/refresh добавляли строки, а revoke/rotate только ставили `revoked_at`; cleanup отсутствовал. | `RefreshTokenCleanupJob` обходит snapshot tenant-БД, удаляет старые строки ограниченными транзакционными пачками с `FOR UPDATE SKIP LOCKED`; retention и расписание настраиваются, cleanup-индексы включены в V1. | 3 unit; полный backend 231/0/0/0; точная V1 и две конкурентные PostgreSQL-транзакции удалили разные пачки, fresh/active сохранены, повтор удалил 0. | +| 25 | исправлено и проверено | Не было общего mapping DB constraints; несколько контроллеров включали `Exception.getMessage()` в HTTP-body. | `GlobalExceptionHandler` и `DatabaseConstraintViolationMapper` централизованно преобразуют CHECK в безопасный русский `400`, UNIQUE/FK/GiST и неизвестные нарушения — в `409`; raw exception body удалён. | 4 новых теста известных и неизвестных constraints без JDBC/SQL details; полный backend 235/0/0/0. | +| 26 | исправлено и проверено | Compose требовал внешнюю сеть, не публиковал HTTP, рассогласовывал DB/JWT и использовал anonymous volume. Live startup также выявил два неоднозначных Spring-конструктора. | Внутренняя bridge-сеть, Apache reverse proxy и `HTTP_PORT`; согласованные datasource/JWT env, healthchecks, named volume; production-конструкторы явно помечены для DI. | `up --build --wait`; PostgreSQL/backend/frontend healthy, `/` и liveness `200`, API `401`, named volume; полный backend 235/0/0/0. | +| 27 | исправлено и проверено | Pipeline собирал и деплоил без тестов, а release tag только перезапускал Deployment на mutable `:main`. | Обязательный checks job, production concurrency lock, SHA/release build tags и deploy только digest из build outputs; общий shell rollback обоих Deployment. | Workflow YAML/static scan, shell success/failure/rollback, production-secret scan и Kustomize — успешно. | +| 28 | исправлено и проверено | Login не имел shared rate limit, различал архивного пользователя и безусловно доверял forwarded header. | Транзакционный PostgreSQL limiter по tenant + NFKC username + проверенному IP; прогрессивная блокировка, audit/cleanup, единый `401`, `429`/`Retry-After` и trusted proxy chain. | 12 целевых unit/PostgreSQL tests; два service instance дали ровно один `401` и один `429`, общий failure count 2; V1 и cleanup проверены. | | 29 | не начато | Business dates зависят от timezone процесса; frontend date-only строится через UTC. | Инъекция `Clock`/`Europe/Moscow`, UTC timestamps, локальное форматирование date-only, TZ контейнеров. | Boundary tests 00:00–03:00 и первые дни месяца. | | 30 | не начато | Образы/скачиваемые инструменты используют mutable tags/latest без checksum/SBOM/scan. | Pin versions+digests, SHA verification, SBOM и image scan gates. | Static scan production refs и CI configuration. | | 31 | не начато | Group create/update допускает неположительные значения и уменьшение ниже активных подгрупп. | Общий validator, locking, новые CHECK constraints. | Create/update/concurrency и migration tests. | | 32 | не начато | `between(start,end) > 120` разрешает 121 включительную дату. | Проверять `between + 1 <= 120` в обоих сервисах. | Границы 120/121. | -| 33 | не начато | Несколько `e.message` вставляются как HTML; парольные поля имеют `type=text`. | `textContent`/экранирование; `type=password` и autocomplete. | DOM/XSS static/unit test и HTML assertions. | -| 34 | не начато | В затронутых UI/log paths остаются английские метки/логи и raw exception text. | Русификация и безопасные сообщения на границе API/UI. | Поиск английских production сообщений и regression tests. | +| 33 | исправлено и проверено | Несколько `e.message` вставлялись как HTML; парольные поля имели `type=text`. | Ошибки вкладок, БД и заявок рендерятся фиксированным текстом через `textContent`/`replaceChildren`; поля создания пользователя, tenant и одобрения заявки используют `type=password` и `autocomplete=new-password`. | 3 новых static regression tests; полный frontend: 24 проверки, 0 ошибок; CSP-хэши синхронизированы. | +| 34 | исправлено и проверено | В затронутых UI/log paths оставались английские метки/логи и raw exception text. | Статусы БД и пользовательские ошибки русифицированы; начальная tenant-конфигурация, маршрутизация и interceptor пишут русские production-сообщения с безопасным типом исключения. | Static-проверка исходных английских сообщений; полный backend 200/0/0/0; live Docker HTTP/CSP — успешно. | ## Завершённые этапы @@ -418,17 +425,515 @@ | `git diff --check` | Успешно. | | Защищённые файлы | `BUG_REPORT.md` и существующие Flyway-миграции не изменялись. | +### № 12 — access JWT только в памяти и same-origin JavaScript + +- Добавлен единый `frontend/auth-session.js` для login, admin/settings, teacher и student. + Access JWT, роль, кафедра и ID пользователя существуют только в памяти ES-модуля; + legacy-ключи удаляются из `localStorage` и `sessionStorage`, но больше не читаются и не + записываются. После navigation/reload новый документ восстанавливает профиль через + `POST /api/auth/refresh` и `HttpOnly` cookie. +- `fetchWithAuth()` добавляет bearer-токен из памяти, дедуплицирует параллельные refresh- + запросы одним Promise и повторяет исходный запрос не более одного раза. Logout отзывает + серверную cookie-сессию и очищает память даже при сетевой ошибке. +- Inline CSS/JS кабинетов преподавателя и студента вынесены в `style.css`/`app.js`; inline- + редиректы кафедры и учебного отдела удалены. Admin/settings запускают UI только после + успешного async session bootstrap и проверяют роль из общего профиля. +- Удалён `admin/js/otel.js` с runtime-import из `esm.sh`. OpenTelemetry 2.9.0/0.220.0 и + auto-instrumentations 0.65.0 зафиксированы exact-версиями в `package-lock.json`, собираются + esbuild в `/vendor/otel.js` на первом этапе Dockerfile и загружаются только с текущего + origin. `npm audit` не обнаруживает уязвимостей. +- Apache подключает `security.conf`: `script-src 'self'`, `script-src-attr 'none'`, + `style-src 'self'`, exact SHA-256 для статических style-атрибутов, `connect-src 'self'`, + запрет frame/object и дополнительные защитные заголовки. `unsafe-inline`, `unsafe-eval`, + удалённые JS imports и динамические inline-стили отсутствуют; тест проверяет полный набор + CSP-хэшей. Базовые frontend-образы зафиксированы digest; остальные пункты № 30 остаются в + его собственном объёме. +- AutoUpdateDocs синхронизировал `docs/FRONTEND.md`, `docs/INFRASTRUCTURE.md`, + `docs/ARCHITECTURE.md`, `docs/API.md` и устаревший пример в `docs/DEVELOPMENT.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `npm run check` в `frontend/` | 21 тест: 12 dashboard + 5 auth session + 4 CSP/security; синтаксис критических модулей и все тесты успешны. | +| `npm audit --audit-level=moderate` | `found 0 vulnerabilities`. | +| Локальный `npm run build:vendor` | Same-origin bundle `dist/vendor/otel.js`, 327471 байт; удалённых imports нет. | +| `docker build -t magistr-frontend-codex:bug12 frontend` | Multi-stage npm/esbuild → Apache завершён успешно. | +| Live container HTTP check | `/` и `/vendor/otel.js` вернули `200`; CSP и дополнительные headers присутствуют, `unsafe-inline`/`unsafe-eval` отсутствуют. Временный контейнер остановлен и удалён. | +| `git diff --check` | Успешно. | +| Защищённые файлы | `BUG_REPORT.md` и существующие Flyway-миграции не изменялись. | + +### № 33 и № 34 — безопасный DOM, скрытые пароли и языковой регламент + +- Для ошибок загрузки SPA-вкладок, статуса/списка tenant-БД и заявок преподавателей добавлены + общие `renderStatusMessage()`/`renderTableMessage()`. Они создают DOM-узлы, записывают + фиксированный русский текст через `textContent` и атомарно заменяют содержимое через + `replaceChildren`; `exception.message` больше не попадает в эти UI-границы. +- Поля пароля при создании пользователя, настройке tenant-БД и одобрении заявки преподавателя + используют `type="password"` и `autocomplete="new-password"`. Поля логина помечены + `autocomplete="username"`. +- Метки доступности БД `Online`/`Offline` заменены на `Доступно`/`Недоступно`. Затронутые + production-логи `TenantDataSourceConfig`, `TenantRoutingDataSource` и `TenantInterceptor` + переведены на русский; вместо текста исключения фиксируется только безопасный технический + тип, а стек остаётся в отдельной русскоязычной записи `DEBUG`. Англоязычные frontend-логи + загрузки оборудования, форм обучения и подгрупп также русифицированы; raw `error.message` + больше не дописывается в собственные browser-console сообщения. +- CSP пересчитан после удаления двух неиспользуемых style-атрибутов. Статический тест требует + точного равенства множества SHA-256-хэшей реальным атрибутам и не допускает ослабления + `unsafe-inline`/`unsafe-eval`. +- AutoUpdateDocs синхронизировал `docs/FRONTEND.md`, `docs/ARCHITECTURE.md` и + `docs/LOGGING.md` с безопасным DOM, парольными полями и правилами журналирования. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `npm run check` в `frontend/` | 24 проверки: 12 dashboard + 5 auth session + 7 security; все успешны. | +| `npm audit --audit-level=moderate` | `found 0 vulnerabilities`. | +| Полный контейнерный `mvn -Dapi.version=1.44 test` | 200 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `docker build -t magistr-frontend-codex:bug12-34 frontend` | Multi-stage npm/esbuild → Apache завершён успешно. | +| Live container HTTP check | `/` и `/vendor/otel.js` вернули `200`; актуальный CSP и дополнительные headers присутствуют. Временный контейнер остановлен и удалён. | +| `git diff --check` | Успешно. | +| Защищённые файлы | `BUG_REPORT.md` и Flyway V1–V4 не изменялись; SHA-256 совпадают с ранее зафиксированными значениями. | + +### № 15 — инварианты временных слотов + +- CRUD слотов перенесён из `TimeSlotAdminController` в публичный транзакционный + `TimeSlotService`. Сервис проверяет положительный номер пары, существование сетки, + `startTime < endTime`, длительность не меньше минуты и вычисляет `durationMinutes` только + по границам времени, игнорируя одноимённое поле входного DTO. +- Создание блокирует строку целевой сетки, update — строку слота и старую/новую сетки в + стабильном порядке. Внутри сетки запрещены повторный номер и пересечение по условию + `start < other.end AND end > other.start`; касающиеся границами интервалы разрешены. +- Используемый правилом слот нельзя перенести из `DEFAULT`; удаление используемого слота + также отклоняется до SQL-ошибки. Конфликт номера или интервала возвращается как русский + `409 Conflict` через общий `ScheduleConflictException`. +- Раздел инвариантов временных слотов в `V1__init.sql` проверяет seed, добавляет + `btree_gist`, CHECK вычисленной длительности, GiST exclusion constraint с + полуоткрытыми интервалами и триггеры, сериализующие создание правила с переносом слота + или изменением режима сетки. +- В настройках поле минут стало `readonly`, всегда пересчитывается при изменении границ и + больше не отправляется как доверенное значение. AutoUpdateDocs синхронизировал + `docs/API.md`, `docs/BUSINESS_LOGIC.md`, `docs/DATABASE.md` и `docs/FRONTEND.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=TimeSlotServiceTest test` без Docker socket | 6 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 194 теста, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `TimeSlotInvariantMigrationIntegrationTest` | 2 PostgreSQL-сценария базовой V1 добавлены и успешно скомпилированы; запуск Testcontainers из Maven-контейнера среда отклонила из-за запрета передачи Docker socket. | +| Изолированный PostgreSQL 16.3 без томов | Единая V1 применилась с нуля; соседние слоты приняты; overlap (`23P01`), неверная длительность (`23514`) и три нарушения базовой сетки (`23514`) отклонены. | +| Две параллельные пересекающиеся транзакции | Ровно один `COMMIT`; вторая операция отклонена `ex_time_slots_scope_no_overlap`. Одноразовый контейнер удалён. | +| `npm run check` в `frontend/` | 24 проверки, все успешны. | +| `git diff --check` | Успешно. | +| Консолидация Flyway | По прямому разрешению владельца V2–V7 удалены, их итоговая схема включена в V1. | + +### № 16 — инварианты учебных годов и семестров + +- CRUD годов и семестров перенесён из `AcademicCalendarAdminController` в публичный + транзакционный `AcademicPeriodService`. Названия годов нормализуются до duplicate-check, + даты обязательны и упорядочены, а календарные диапазоны трактуются как включительные. +- Учебные годы не могут пересекаться. Семестр должен полностью находиться внутри своего + года, не пересекаться с другим семестром этого года и иметь уникальный тип. Update года + отклоняет границы, которые исключат любой сохранённый семестр; update повторно проверяет + title/type и возвращает безопасный русский `409`, а не JDBC `500`. +- Semester create/update блокируют строку родительского года; update затем перечитывает + строку семестра с `PESSIMISTIC_WRITE`. Инвалидация кэша расписания регистрируется только + после успешного commit. +- Раздел учебных периодов в `V1__init.sql` проверяет seed, добавляет GiST exclusion + constraints годов и семестров с + `daterange(..., '[]')` и два триггера. Блокировка родительской строки в триггере закрывает + гонку между изменением года и конкурентной записью семестра. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/BUSINESS_LOGIC.md`, + `docs/DATABASE.md` и `docs/ARCHITECTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=AcademicPeriodServiceTest test` без Docker socket | 8 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 202 теста, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `AcademicPeriodInvariantMigrationIntegrationTest` | 2 PostgreSQL-сценария базовой V1 добавлены и успешно скомпилированы; Testcontainers-прогон из Maven-контейнера недоступен из-за запрета передачи Docker socket. | +| Изолированный PostgreSQL 16.3 без томов | Единая V1 применилась с нуля; соседние периоды приняты; overlap года/семестра (`23P01`), выход семестра и сужение года (`23514`) отклонены. | +| Две параллельные пересекающиеся транзакции годов | Ровно один `COMMIT`; вторая операция отклонена `ex_academic_years_no_overlap`. Одноразовый контейнер удалён. | +| `git diff --check` | Успешно. | +| Текущая baseline V1 | SHA-256 `5f9326b545d14a8afb3c75de9e59ea9a35b36ed02fe5a8a822e8430fc3e972cd`. | + +### № 17 — совместимость сохранённых календарных назначений и сеток + +- Добавлен публичный транзакционный `AcademicStructureService`. Обновление графика + блокирует его строку и до мутации проверяет все назначения, старшие курсы сетки, + дисциплины старших семестров и даты сетки относительно нового учебного года. +- Обновление группы блокирует её строку и повторно проверяет год начала обучения, + специальность, профиль и форму для всех назначений. При несовместимости + `ScheduleConflictException` преобразуется в русский `409 Conflict`; сущность и назначения + остаются без изменений. +- Сохранение назначения блокирует группу, график, учебный год и существующую запись, + проверяет совпадение измерений и вычисленный курс. Инвалидация кэша выполняется только + после commit. +- V1 содержит триггеры совместимости назначения, обратной защиты группы и графика, + размерности строк сетки и дисциплин, а также защиты зависимостей при изменении границ + учебного года. Seed назначения теперь сразу связывает календарь по году, специальности, + профилю и форме обучения. +- Добавлены 7 unit-тестов сервиса и 2 Testcontainers-сценария базовой схемы, включая гонку + изменения группы с созданием назначения. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=AcademicStructureServiceTest test` | 7 тестов, 0 failures, 0 errors, BUILD SUCCESS. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` | 209 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Контейнерный `mvn -DskipTests test` | Все 46 test source-файлов, включая DB-интеграционные, успешно скомпилированы. | +| Чистая PostgreSQL 16.3 без томов | Единая V1 применилась; 0 несовместимых seed-назначений; созданы 4 ключевых constraint и 5 dependency-trigger. | +| Прямые DB-изменения | Изменения формы графика/группы, уменьшение `course_count`, строка курса 5 и дисциплина семестра 9 отклонены с `23514`; назначение сохранено. | +| Две конкурентные транзакции | Ровно один `COMMIT`; несовместимое назначение отклонено с `23514`, итоговое состояние согласовано. | +| `git diff --check` | Успешно. | + +### № 18 — историческая модель кафедр преподавателя + +- Добавлен публичный транзакционный `TeacherDepartmentService`. Он разрешает основную и + дополнительную кафедру на целевую дату, пакетно загружает назначения за диапазон и + возвращает исторических преподавателей по периоду действия пользователя и назначения. +- `UserController`, `DepartmentWorkspaceController`, `TeacherSubjectController` и + `WorkloadController` больше не используют `users.department_id` как источник бизнес- + решений. Legacy-поле остаётся зеркалом основной кафедры на текущую дату. +- Будущий перевод закрывает прежний основной период днём перед `validFrom`, но сохраняет + текущую принадлежность до вступления новой записи в силу. Перевод на текущую или прошлую + дату синхронизирует legacy-зеркало. Пользователь и история блокируются до изменения. +- Нагрузка определяет кафедру отдельно на дату каждого занятия: сначала по основной, затем + по дополнительной связи. Перевод внутри диапазона разделяет агрегат одного преподавателя + между кафедрами, а прошлый отчёт не зависит от его текущей кафедры. +- V1 содержит GiST exclusion constraint + `ex_teacher_primary_department_no_overlap`, запрещающий пересечение любых основных + периодов одного преподавателя, включая конкурентную запись из нескольких pod. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/BUSINESS_LOGIC.md`, + `docs/DATABASE.md` и `docs/ARCHITECTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 216 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS; все 49 test source-файлов скомпилированы. | +| Целевые service/controller tests | 12 тестов: будущий и текущий перевод, архивная история, приоритет основной связи, fallback на дополнительную, доступ к дисциплине и разделение нагрузки; все успешны. | +| Чистая PostgreSQL 16.3 без томов | Точная текущая V1 применилась с нуля; constraint `ex_teacher_primary_department_no_overlap` создан. | +| Прямые DB-изменения | Соседние основные периоды и дополнительное назначение приняты; пересекающийся основной период отклонён с `23P01`. | +| Две конкурентные транзакции | Ровно один `COMMIT`; вторая пересекающаяся основная запись отклонена с `23P01`. | +| `npm run check` в `frontend/` | 3 test suite и синтаксические проверки завершены успешно. | +| `docker compose config --quiet` | Успешно. | +| `git diff --check` | Успешно. | +| Текущая baseline V1 | SHA-256 `5f9326b545d14a8afb3c75de9e59ea9a35b36ed02fe5a8a822e8430fc3e972cd`. | + +### № 19 — ограничение кафедрального доступа к workload + +- `WorkloadController` вычисляет разрешённый `departmentId` до любого вызова + `ScheduleQueryService`. Для роли `DEPARTMENT` отсутствие фильтра означает кафедру из + `AuthContext`, а несовпадающий ID отклоняется с русским `403 Forbidden`. +- Единое правило применено к отчётам преподавателей, аудиторий, кафедр, временных слотов и + свободным аудиториям. Последний endpoint не принимает `departmentId`, но его внутренняя + выборка для кафедры также больше не является глобальной. +- `ADMIN`, `EDUCATION_OFFICE` и `SCHEDULE_VIEWER` сохраняют явно документированное право на + глобальный workload или выбор конкретной кафедры. Отсутствующий `AuthContext` обрабатывается + fail-closed с русским `401`. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/BUSINESS_LOGIC.md` и + `docs/ARCHITECTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=WorkloadControllerTest test` без Docker socket | 5 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Межкафедральный сценарий | Чужой `departmentId` даёт `403` до вызова поиска; отсутствие ID и все пять endpoints используют кафедру из `AuthContext`. | +| Привилегированный сценарий | `EDUCATION_OFFICE` сохраняет глобальный scope без `departmentId`. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 219 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `docker compose config --quiet` | Успешно. | +| `git diff --check` | Успешно. | + +### № 20 — workload без интерактивного лимита 50 групп + +- В `ScheduleQueryService` выделен узкий публичный `searchForAggregation(departmentId, + timeSlotId, startDate, endDate)`. Он не принимает остальные UI-фильтры и поэтому не + становится вторым общим поисковым API. +- Обычный `search()` продолжает отклонять широкий пользовательский запрос, если тот затрагивает + больше 50 активных групп. Оба пути используют единый внутренний алгоритм проверки диапазона, + выбора групп, генерации, применения одного снимка overrides, фильтрации и дедупликации. +- Все workload-отчёты и free-classrooms переведены на aggregate-путь. Кафедральный scope из + №19 вычисляется до генерации и сохранён без изменений. +- Параметризованный тест доказывает полный вызов генератора для 51 и 100 активных групп; + отдельный regression-test сохраняет отказ интерактивного поиска на 51-й группе. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/BUSINESS_LOGIC.md` и + `docs/ARCHITECTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=ScheduleQueryServiceTest,WorkloadControllerTest test` | 9 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Aggregate 51/100 групп | Все активные группы переданы генератору, overrides прочитаны один раз, исключение лимита не возникает. | +| Интерактивный regression | Обычный широкий `search()` с 51 активной группой по-прежнему отклонён с просьбой уточнить scope. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 221 тест, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `docker compose config --quiet` | Успешно. | +| `git diff --check` | Успешно. | + +### № 21 — безопасный импорт дисциплин кафедры + +- Импорт вынесен из `DepartmentWorkspaceController` в транзакционный + `SubjectImportService`. Весь payload нормализуется и дедуплицируется по названию без учёта + регистра до мутации; повтор внутри payload обрабатывается один раз. +- Глобальная уникальность названия, уже заявленная в бизнес-документации, сохранена. Если + запись принадлежит текущей кафедре, повторный импорт обновляет её код, восстанавливает из + архива и сохраняет прежний ID. Совпадение с другой кафедрой даёт русский `409 Conflict`, + не меняя владельца или код чужой записи. +- В V1 прежний case-sensitive `UNIQUE(name)` заменён функциональным уникальным индексом + `uq_subjects_name_ci` на `lower(name)`. Он закрывает регистровые дубли и гонку импортов + разных кафедр; admin-create также проверяет имя без учёта регистра. +- Ошибка уникальности при `saveAllAndFlush` преобразуется в безопасный доменный конфликт. + Новых миграционных файлов не создано. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/BUSINESS_LOGIC.md`, + `docs/DATABASE.md` и `docs/ARCHITECTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=SubjectImportServiceTest,DepartmentWorkspaceControllerTest test` | 7 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Повторный собственный импорт | Два последовательных импорта возвращают тот же объект/ID, обновляют код и восстанавливают архивную запись. | +| Совпадение чужой кафедры | Получен доменный `409`; чужие `departmentId` и код не изменены, `saveAllAndFlush` не вызван. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 225 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS; 51 test source-файл скомпилирован. | +| Чистая PostgreSQL 16.3 без томов | Точная текущая V1 применилась с нуля; `информатика` отклонена как дубль seed `Информатика` по `uq_subjects_name_ci` (`23505`). | +| Две конкурентные транзакции | Первая запись `Теория систем` закоммичена; параллельная `теория систем` после ожидания отклонена `uq_subjects_name_ci` (`23505`). | +| `docker compose config --quiet` | Успешно. | +| `git diff --check` | Успешно. | +| Текущая baseline V1 | SHA-256 `5f9326b545d14a8afb3c75de9e59ea9a35b36ed02fe5a8a822e8430fc3e972cd`. | + +### № 22 — согласованная матрица прав учебного отдела + +- `SpecialityController` сохранил class-level `ADMIN` для всех write-операций, но обязательные + GET специальностей, общего списка профилей и профилей специальности явно разрешены + `EDUCATION_OFFICE`. +- `EducationFormController` разрешает `ADMIN` и `EDUCATION_OFFICE` создавать и удалять формы + обучения. Широкий read-only GET для остальных ранее разрешённых ролей сохранён method-level + аннотацией; защита используемых группами/графиками форм не ослаблена. +- Дубли матриц `ROLE_NAVIGATION` и `ROLE_TABS` удалены. Основной admin SPA и settings SPA + используют единый `frontend/admin/js/role-capabilities.js`, где для учебного отдела явно + перечислены календарный график, временные слоты и формы обучения. +- MockMvc-тест проходит через реальный `AuthorizationInterceptor`: GET specialties/profiles и + GET/POST/DELETE education forms возвращают `200`, а POST специальности остаётся `403`. +- Frontend-тест импортирует матрицу как ES-модуль, проверяет capabilities учебного отдела и + отсутствие локальных дубликатов в двух entrypoint-файлах. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/BUSINESS_LOGIC.md`, + `docs/FRONTEND.md` и `docs/ARCHITECTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| Контейнерный `mvn -Dtest=EducationOfficeRoleMatrixTest test` | 2 теста, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| MockMvc role matrix | Штатная инициализация справочников календаря и CRUD форм обучения не получают `403`; изменение специальности учебным отделом отклонено. | +| `npm run check` в `frontend/` | Синтаксис entrypoints и 3 test suite, включая единую role matrix, завершены успешно. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 227 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS; 52 test source-файла скомпилированы. | +| `docker compose config --quiet` | Успешно. | +| `git diff --check` | Успешно. | + +### № 23 — batch-снимок генерации расписания + +- `ScheduleQueryService` больше не вызывает генератор отдельно для каждой группы: обычный + поиск, workload-агрегаты и построение полного базового дня передают весь набор групп в + `ScheduleGeneratorService.buildScheduleForGroups()`. +- `AcademicDateService.ScheduleSnapshot` одним набором запросов загружает пересекающиеся + семестры, назначения календарей групп и `academic_calendar_days` от начала затронутого + семестра до конца диапазона. Внутренние проверки semester/assignment/activity работают по + неизменяемым lookup-картам. +- Правила группы и преподавателя получили batch-запросы по набору семестров. Генератор + индексирует их по `groupId + semesterId`, поэтому репозиторий не вызывается из циклов дат, + правил и групп. +- Ручные назначения сетки звонков, weekday scopes и временные слоты также читаются один раз + на диапазон; фактический слот выбирается по `date/scope/orderNumber` без дополнительных + запросов на каждое занятие. +- `ScheduleGenerationQueryCountTest` обрабатывает 120 включительных дат, 30 групп и 20 + правил. Тест измеряет ровно 7 чтений репозиториев, запрещает старые point-методы и + одновременно подтверждает 30 корректных занятий с эффективной weekday-сеткой. +- AutoUpdateDocs синхронизировал `docs/BUSINESS_LOGIC.md` и `docs/ARCHITECTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `ScheduleGenerationQueryCountTest` | 1 тест, 0 failures, 0 errors, 0 skipped; 120 дат, 30 групп, 20 правил, 7 repository reads. | +| `ScheduleQueryServiceTest,ScheduleQueryServiceTeacherOverrideTest` | 9 тестов, 0 failures, 0 errors, 0 skipped; batch-путь и overrides сохранены. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 228 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS; 53 test source-файла скомпилированы. | + +### № 24 — tenant-aware cleanup refresh-сессий + +- `RefreshTokenCleanupJob` получает атомарный snapshot доменов из + `TenantRoutingDataSource`, устанавливает `TenantContext` до вызова repository proxy и + очищает каждую tenant-БД отдельно. Исходный tenant потока восстанавливается в `finally`. +- По умолчанию истёкшие и отозванные строки сохраняются 30 дней для аудита. Retention, + включение job, размер пачки, максимум пачек, interval и initial delay задаются через + `JWT_REFRESH_CLEANUP_*`. +- Native batch-delete выбирает только записи с `expires_at < cutoff` либо старым + `revoked_at`, использует `FOR UPDATE SKIP LOCKED` и отдельную транзакцию repository-метода. + Два pod разбирают непересекающиеся строки; повторная очистка безопасно возвращает 0. +- Локальный `AtomicBoolean` не допускает наложения двух запусков внутри одного pod, а лимит + пачек ограничивает длительность одного прохода. Ошибка одной tenant-БД логируется по-русски + без технического текста и не останавливает очистку остальных. +- В V1 добавлены частичный индекс по `revoked_at` и индекс по `expires_at`; новых файлов + миграций не создавалось. Текущий SHA-256 V1: + `5f9326b545d14a8afb3c75de9e59ea9a35b36ed02fe5a8a822e8430fc3e972cd`. +- AutoUpdateDocs синхронизировал `docs/DATABASE.md`, `docs/ARCHITECTURE.md` и + `docs/INFRASTRUCTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `RefreshTokenCleanupJobTest,RefreshTokenServiceTest` | 7 тестов, 0 failures, 0 errors, 0 skipped; два job, retention, idempotency, overlap guard и disabled mode. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 231 тест, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS; 54 test source-файла скомпилированы. | +| Точная V1 на чистой PostgreSQL 16.3 | Схема и два cleanup-индекса созданы без ошибок. | +| Две конкурентные PostgreSQL-транзакции | При незавершённой первой транзакции обе удалили разные пачки по 3 строки; повтор удалил 0, fresh-expired/fresh-revoked/active сохранены. | +| Testcontainers через Maven-контейнер | Не запускался: среда отклонила проброс `/var/run/docker.sock`; PostgreSQL-специфичный SQL проверен безопасным отдельным контейнером без socket mount. | + +### № 25 — безопасное преобразование DB/JDBC-ошибок + +- `GlobalExceptionHandler` перехватывает `DataIntegrityViolationException` до общего `500` + и делегирует определение безопасного ответа в `DatabaseConstraintViolationMapper`. +- Именованные CHECK-ограничения текущей V1 преобразуются в русские `400`; UNIQUE, FK и + GiST exclusion constraints — в русские `409`. Неизвестный SQLState класса integrity + получает обобщённый `409` без текста драйвера. +- Технические `constraint` и SQLState доступны только в структурированном журнале. + JDBC/SQL message, stack trace, запросы и значения параметров в HTTP JSON не включаются. +- Локальные `catch Exception`, которые формировали тело ответа через `getMessage()`, удалены: + persistence-ошибки доходят до общего handler, а контролируемые доменные сообщения сохранены. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/ARCHITECTURE.md` и + `docs/DEVELOPMENT.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `GlobalExceptionHandlerDataIntegrityTest` | 4 теста, 0 failures, 0 errors, 0 skipped; известные CHECK/UNIQUE и неизвестные нарушения не раскрывают constraint, JDBC URL, SQL или пароль. | +| Связанные controller tests | `ScheduleOverrideControllerTest` и `ScheduleRuleAdminControllerTest`: 5 тестов, 0 failures, 0 errors. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 235 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS; 55 test source-файлов скомпилированы. | +| `docker compose config --quiet` | Успешно. | +| `git diff --check` | Успешно. | +| Каталог Flyway | Содержит только `V1__init.sql`; SHA-256 не изменился: `5f9326b545d14a8afb3c75de9e59ea9a35b36ed02fe5a8a822e8430fc3e972cd`. | + +### № 26 — самодостаточный локальный Docker Compose + +- Compose больше не требует заранее созданную внешнюю сеть: bridge-сеть `magistr`, DNS + сервисов и именованный том `postgres_data` создаются самим проектом. +- Frontend публикует `${HTTP_PORT:-80}` и через Apache `mod_proxy` направляет same-origin + `/api` и `/actuator/health` во внутренний backend. Исходный `Host` сохраняется, поэтому + локальный запрос выбирает tenant `default`; backend и PostgreSQL наружу не публикуются. +- `${POSTGRES_DB:-app_db}` одновременно задаёт создаваемую БД и + `SPRING_DATASOURCE_URL`. Backend получает обязательные `POSTGRES_PASSWORD`, `JWT_SECRET`, + JWT TTL и cleanup-параметры из `.env`; безопасный шаблон добавлен в `.env.example`. +- PostgreSQL закреплён на версии 16.3 и хранит данные в named volume. Backend имеет + liveness healthcheck, а frontend запускается после его готовности; `up --wait` теперь + подтверждает не только старт процесса, но и рабочий Spring context. +- Live startup обнаружил, что Spring не мог выбрать production-конструкторы + `TenantDatabaseHealthMonitor` и `RefreshTokenCleanupJob`, хотя unit-тесты создавали их + вручную. Оба конструктора явно помечены для injection; backend стабильно выходит в + `Started Application`. +- Скачивание mutable OpenTelemetry `latest`, блокировавшее чистую сборку, заменено + фиксированным Maven-артефактом `2.28.1` с обязательной SHA-256 проверкой. Локальный OTel + SDK по умолчанию отключён, так как Collector не входит в Compose. +- AutoUpdateDocs синхронизировал `docs/README.md` и `docs/INFRASTRUCTURE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `docker compose up -d --build --wait` | PostgreSQL, backend healthcheck и frontend готовы; внутренняя сеть и `magistr_postgres_data` созданы автоматически. | +| Live HTTP через frontend proxy | `/` → `200`, `/actuator/health/liveness` → `200`, защищённый `/api/departments` → ожидаемый `401`. | +| Публикация порта | Порт 80 уже занят пользовательским Caddy; эквивалентная проверка успешно выполнена через документированный `HTTP_PORT=18080`, чужой сервис не останавливался. | +| PostgreSQL mount | Docker inspect: named volume `magistr_postgres_data` смонтирован в `/var/lib/postgresql/data`; backend и DB не имеют host ports. | +| Java Agent supply chain | Maven Central `opentelemetry-javaagent:2.28.1`, SHA-256 `faa89bdeebf9b1f52be4a4374689176717b02a59df2d8f8b6eb9aa39f9292589`, build check `OK`. | +| Контейнерный `mvn -Dtest=!*IntegrationTest test` без Docker socket | 235 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| `docker compose config --quiet` и `git diff --check` | Успешно. | +| Каталог Flyway | По-прежнему содержит только `V1__init.sql`; новых миграций нет. | + +### № 27 — обязательные CI/CD gates и immutable rollout + +- `.gitea/workflows/docker-build.yaml` получил обязательный `checks` job: полный backend + non-integration suite, frontend `npm ci && npm run check`, Compose validation и shell-тест + immutable deployment. Build/push jobs имеют `needs: checks`, поэтому непроверенный commit + не публикуется и не разворачивается. +- Metadata публикует полный `sha-` и release tag без `latest`. Оба build job отдают + registry digest, а deploy формирует ссылки `image@sha256:...`; release tag больше не + перезапускает старый `:main`. +- Workflow-wide `magistr-production` concurrency lock сериализует production-запуски. + `kubectl v1.33.12` загружается с официального CDN и проходит проверку закреплённого + SHA-256 до установки. +- `scripts/deploy-images.sh` отклоняет любые tag-only ссылки, сохраняет текущие backend и + frontend image refs, применяет оба новых digest и ждёт rollout. Ошибка `set image` или + readiness запускает восстановление обоих предыдущих образов и повторную проверку. +- `scripts/test-deploy-images.sh` использует fake kubectl для трёх сценариев: tag отклонён, + успешные digests применены, failed backend rollout вернул оба предыдущих digest. +- Во внешних `../k8s/backend.yaml` и `frontend.yaml` удалены `:main`; нулевой digest-sentinel + не может случайно выбрать mutable image. `../k8s/deploy.sh` требует два реальных digest и + подставляет их локально до apply. Backend probes переведены на HTTP liveness/readiness, + а ConfigMap теперь задаёт корректные `TENANTS_CONFIG_PATH` и + `TENANTS_CONFIG_REQUIRED=true`. +- AutoUpdateDocs синхронизировал `docs/INFRASTRUCTURE.md` и `../k8s/README.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `bash scripts/test-deploy-images.sh` | Mutable tag отклонён; success rollout завершён; failed rollout восстановил backend и frontend, тест завершён успешно. | +| Workflow static validation | Ruby YAML parser — успешно; отсутствуют `:main`, `stable.txt` и `rollout restart`; build jobs зависят от checks и экспортируют digest. | +| `bash -n` | `scripts/deploy-images.sh`, `scripts/test-deploy-images.sh` и `../k8s/deploy.sh` синтаксически корректны. | +| `K8S_DIR=../k8s bash scripts/check-production-secrets.sh` | Успешно. | +| `kubectl kustomize ../k8s >/dev/null` | Успешно. | +| `docker compose config --quiet` и `git diff --check` | Успешно. | +| Изменённые внешние файлы | `../k8s/backend.yaml`, `frontend.yaml`, `config.yaml`, `deploy.sh`, `README.md`; они находятся вне Git-корня `magistr` и отдельно проверены. | +| Production rollout | Не выполнялся: это внешняя необратимая операция, требующая отдельных полномочий и реальных build digests. | + +### № 28 — общий PostgreSQL rate limit входа + +- `LoginRateLimitService` выполняет создание/блокировку строки, bcrypt-проверку, изменение + счётчика и запись аудита в одной транзакции. Ключ состоит из tenant, NFKC-нормализованного + username в нижнем регистре и проверенного IP. `INSERT ... ON CONFLICT DO NOTHING` вместе + с `PESSIMISTIC_WRITE` сериализует первые и последующие попытки на разных backend-pod. +- Пять отказов за 15 минут по умолчанию дают блокировку на 60 секунд. Следующая ошибка после + окончания блокировки удваивает срок до максимума 15 минут. Controller возвращает `429` + с округлённым вверх `Retry-After`; успешный вход удаляет состояние. +- Неизвестный, архивный и ошибочный пользователь проходят одинаковый bcrypt-путь и получают + одинаковый `401`. В production-журнал попадает только SHA-256 fingerprint нормализованного + имени; пароль и признак существования пользователя не сохраняются и не логируются. +- `ClientIpResolver` игнорирует `X-Forwarded-For` от недоверенного непосредственного + источника, ограничивает длину/число hops и разбирает допустимую цепочку справа налево. + Compose доверяет внутренней Docker-сети, K3s ConfigMap — стандартной pod-сети Traefik; + нестандартный CIDR документирован как обязательная настройка оператора. +- В V1 добавлены `auth_login_rate_limits`, `auth_login_attempt_audit`, уникальный ключ, + CHECK и cleanup-индексы. `LoginAttemptAuditCleanupJob` раз в сутки tenant-aware пачками + `FOR UPDATE SKIP LOCKED` удаляет audit и неактивные счётчики старше 90 дней. Новых файлов + миграций не создано; текущий SHA-256 V1: + `250cab68c9ab6d8401619447585b47d6122458d1cb00a6e76af308414f89958d`. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/ARCHITECTURE.md`, + `docs/DATABASE.md`, `docs/INFRASTRUCTURE.md` и внешний `../k8s/README.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `ClientIpResolverTest`, `LoginRateLimitServiceTest`, `AuthControllerTest` | 10 тестов, 0 failures; trusted chain, spoofed header, uniform reject, progressive block и `Retry-After`. | +| `LoginRateLimitConcurrencyIntegrationTest` | 2 теста, 0 failures; две отдельные service instance одной PostgreSQL-БД атомарно получили `REJECTED` + `BLOCKED`, failure count 2; cleanup сохранил fresh/active rows. | +| Полный контейнерный `mvn test` | 266 тестов: 263 успешны; все 12 тестов № 28 прошли. Три ранее добавленных конкурентных migration-теста нестабильны: два получили допустимый PostgreSQL `40P01` вместо ожидаемого только `23P01`, один запуск не воспроизвёл гонку. Стабилизация оставлена в финальном регрессионном аудите. | +| Чистая PostgreSQL 16.3 | Единственная V1 многократно применена Flyway без ошибок; обе новые таблицы и индексы созданы. | +| Compose, Kustomize, secret-scan, `git diff --check` | Успешно. | +| Изменённые внешние файлы | `../k8s/config.yaml`, `../k8s/README.md`; каталог вне Git-корня и проверен отдельно. | + ## Точка продолжения -Текущий этап: **№ 12 — access JWT и удалённый JavaScript в одном origin**. +Текущий этап: **№ 29 — единая временная зона бизнес-дат**. Следующая операция: -1. инвентаризировать `localStorage`/`sessionStorage`, refresh-cookie, удалённые `import()` и - inline-скрипты во всех frontend entrypoints и HTTP/CSP-конфигурации; -2. выбрать единый контракт access JWT только в памяти с восстановлением через HttpOnly - refresh-cookie, не оставляя токен в Web Storage после login/refresh/logout/reload; -3. локализовать и зафиксировать внешние runtime-зависимости, затем ввести CSP без - `unsafe-inline`/`unsafe-eval` и устранить несовместимые inline-вставки; -4. покрыть login/refresh/logout/reload тестами и выполнить статический аудит storage/imports/CSP - перед AutoUpdateDocs и изменением статуса № 12. +1. построить graphify-контекст всех `LocalDate.now()`/`LocalDateTime.now()` и frontend + `toISOString()` в бизнес-операциях; +2. внедрить единый `Clock`/`ZoneId` Europe/Moscow без изменения абсолютных timestamp; +3. зафиксировать `TZ`/`user.timezone` в Compose и Kubernetes; +4. проверить границы московской полуночи и date-only форматирование без UTC-сдвига. diff --git a/backend/Dockerfile b/backend/Dockerfile index 23e1969..995c9a6 100755 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -4,7 +4,15 @@ COPY pom.xml . RUN mvn dependency:go-offline -B COPY src ./src RUN mvn package -DskipTests -B -RUN curl -L -o opentelemetry-javaagent.jar https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar + +ARG OTEL_JAVAAGENT_VERSION=2.28.1 +ARG OTEL_JAVAAGENT_SHA256=faa89bdeebf9b1f52be4a4374689176717b02a59df2d8f8b6eb9aa39f9292589 +RUN mvn org.apache.maven.plugins:maven-dependency-plugin:3.6.1:copy \ + -Dartifact=io.opentelemetry.javaagent:opentelemetry-javaagent:${OTEL_JAVAAGENT_VERSION} \ + -DoutputDirectory=/app \ + -Dmdep.stripVersion=true \ + -B \ + && echo "${OTEL_JAVAAGENT_SHA256} /app/opentelemetry-javaagent.jar" | sha256sum -c - FROM eclipse-temurin:17-jre-alpine diff --git a/backend/src/main/java/com/magistr/app/config/auth/ClientIpResolver.java b/backend/src/main/java/com/magistr/app/config/auth/ClientIpResolver.java new file mode 100644 index 0000000..fd45f7e --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/auth/ClientIpResolver.java @@ -0,0 +1,146 @@ +package com.magistr.app.config.auth; + +import jakarta.servlet.http.HttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.Optional; + +/** + * Использует X-Forwarded-For только когда запрос действительно пришёл от доверенного proxy. + */ +@Component +public class ClientIpResolver { + + private static final Logger log = LoggerFactory.getLogger(ClientIpResolver.class); + private static final int MAX_FORWARDED_HEADER_LENGTH = 2_048; + private static final int MAX_PROXY_HOPS = 20; + private static final String UNKNOWN_ADDRESS = "неизвестен"; + + private final List trustedProxyRanges; + + public ClientIpResolver(@Value("${app.http.trusted-proxy-cidrs:}") String trustedProxyCidrs) { + this.trustedProxyRanges = parseTrustedRanges(trustedProxyCidrs); + } + + public String resolve(HttpServletRequest request) { + Optional remoteAddress = parseAddress(request.getRemoteAddr()); + String fallback = remoteAddress.map(InetAddress::getHostAddress).orElse(UNKNOWN_ADDRESS); + if (remoteAddress.isEmpty() || !isTrusted(remoteAddress.get())) { + return fallback; + } + + String forwarded = request.getHeader("X-Forwarded-For"); + if (forwarded == null || forwarded.isBlank()) { + return fallback; + } + if (forwarded.length() > MAX_FORWARDED_HEADER_LENGTH) { + log.debug("Заголовок X-Forwarded-For отклонён: превышена допустимая длина"); + return fallback; + } + + String[] hops = forwarded.split(",", -1); + if (hops.length > MAX_PROXY_HOPS) { + log.debug("Заголовок X-Forwarded-For отклонён: слишком длинная цепочка proxy"); + return fallback; + } + + InetAddress leftmost = null; + for (int index = hops.length - 1; index >= 0; index--) { + Optional hop = parseAddress(hops[index].trim()); + if (hop.isEmpty()) { + log.debug("Заголовок X-Forwarded-For отклонён: обнаружен некорректный IP-адрес"); + return fallback; + } + leftmost = hop.get(); + if (!isTrusted(hop.get())) { + return hop.get().getHostAddress(); + } + } + return leftmost == null ? fallback : leftmost.getHostAddress(); + } + + private boolean isTrusted(InetAddress address) { + return trustedProxyRanges.stream().anyMatch(range -> range.contains(address)); + } + + private List parseTrustedRanges(String rawRanges) { + if (rawRanges == null || rawRanges.isBlank()) { + return List.of(); + } + List ranges = new ArrayList<>(); + for (String rawRange : rawRanges.split(",")) { + String value = rawRange.trim(); + if (!value.isEmpty()) { + ranges.add(CidrRange.parse(value)); + } + } + return List.copyOf(ranges); + } + + private static Optional parseAddress(String rawAddress) { + if (rawAddress == null) { + return Optional.empty(); + } + String value = rawAddress.trim().toLowerCase(Locale.ROOT); + if (value.startsWith("[") && value.endsWith("]")) { + value = value.substring(1, value.length() - 1); + } + if (value.isEmpty() || !value.matches("[0-9a-f:.]+")) { + return Optional.empty(); + } + try { + return Optional.of(InetAddress.getByName(value)); + } catch (UnknownHostException ignored) { + return Optional.empty(); + } + } + + private record CidrRange(byte[] network, int prefixLength) { + + static CidrRange parse(String value) { + String[] parts = value.split("/", -1); + Optional address = ClientIpResolver.parseAddress(parts[0]); + if (address.isEmpty()) { + throw new IllegalStateException("Некорректный адрес доверенного proxy: " + value); + } + int addressBits = address.get().getAddress().length * 8; + int prefix; + try { + prefix = parts.length == 1 ? addressBits : Integer.parseInt(parts[1]); + } catch (NumberFormatException exception) { + throw new IllegalStateException("Некорректная маска доверенного proxy: " + value, exception); + } + if (parts.length > 2 || prefix < 0 || prefix > addressBits) { + throw new IllegalStateException("Некорректная маска доверенного proxy: " + value); + } + return new CidrRange(mask(address.get().getAddress(), prefix), prefix); + } + + boolean contains(InetAddress candidate) { + byte[] candidateBytes = candidate.getAddress(); + return candidateBytes.length == network.length + && Arrays.equals(mask(candidateBytes, prefixLength), network); + } + + private static byte[] mask(byte[] address, int prefix) { + byte[] masked = Arrays.copyOf(address, address.length); + int fullBytes = prefix / 8; + int remainingBits = prefix % 8; + if (fullBytes < masked.length && remainingBits > 0) { + masked[fullBytes] &= (byte) (0xFF << (8 - remainingBits)); + fullBytes++; + } + Arrays.fill(masked, fullBytes, masked.length, (byte) 0); + return masked; + } + } +} diff --git a/backend/src/main/java/com/magistr/app/config/auth/LoginAttemptAuditCleanupJob.java b/backend/src/main/java/com/magistr/app/config/auth/LoginAttemptAuditCleanupJob.java new file mode 100644 index 0000000..fa35fcd --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/auth/LoginAttemptAuditCleanupJob.java @@ -0,0 +1,167 @@ +package com.magistr.app.config.auth; + +import com.magistr.app.config.tenant.TenantContext; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.magistr.app.repository.AuthLoginAttemptAuditRepository; +import com.magistr.app.repository.AuthLoginRateLimitRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; + +/** Очищает старый аудит входа и неактивные счётчики отдельно в каждой tenant-БД. */ +@Component +public class LoginAttemptAuditCleanupJob { + + private static final Logger log = LoggerFactory.getLogger(LoginAttemptAuditCleanupJob.class); + + private final TenantRoutingDataSource routingDataSource; + private final AuthLoginAttemptAuditRepository auditRepository; + private final AuthLoginRateLimitRepository rateLimitRepository; + private final boolean enabled; + private final Duration retention; + private final int batchSize; + private final int maxBatchesPerTenant; + private final Clock clock; + private final AtomicBoolean cleanupInProgress = new AtomicBoolean(false); + + @Autowired + public LoginAttemptAuditCleanupJob( + TenantRoutingDataSource routingDataSource, + AuthLoginAttemptAuditRepository auditRepository, + AuthLoginRateLimitRepository rateLimitRepository, + @Value("${app.login-security.audit-cleanup.enabled:true}") boolean enabled, + @Value("${app.login-security.audit-cleanup.retention:90d}") Duration retention, + @Value("${app.login-security.audit-cleanup.batch-size:500}") int batchSize, + @Value("${app.login-security.audit-cleanup.max-batches-per-tenant:20}") int maxBatchesPerTenant) { + this(routingDataSource, auditRepository, rateLimitRepository, enabled, retention, + batchSize, maxBatchesPerTenant, Clock.systemUTC()); + } + + LoginAttemptAuditCleanupJob(TenantRoutingDataSource routingDataSource, + AuthLoginAttemptAuditRepository auditRepository, + AuthLoginRateLimitRepository rateLimitRepository, + boolean enabled, + Duration retention, + int batchSize, + int maxBatchesPerTenant, + Clock clock) { + this.routingDataSource = Objects.requireNonNull(routingDataSource); + this.auditRepository = Objects.requireNonNull(auditRepository); + this.rateLimitRepository = Objects.requireNonNull(rateLimitRepository); + if (retention == null || retention.isZero() || retention.isNegative()) { + throw new IllegalArgumentException("Срок хранения аудита входа должен быть положительным"); + } + if (batchSize < 1 || batchSize > 10_000) { + throw new IllegalArgumentException("Размер пачки очистки аудита должен быть от 1 до 10000"); + } + if (maxBatchesPerTenant < 1 || maxBatchesPerTenant > 1_000) { + throw new IllegalArgumentException("Число пачек очистки аудита должно быть от 1 до 1000"); + } + this.enabled = enabled; + this.retention = retention; + this.batchSize = batchSize; + this.maxBatchesPerTenant = maxBatchesPerTenant; + this.clock = Objects.requireNonNull(clock); + } + + @Scheduled( + fixedDelayString = "${app.login-security.audit-cleanup.interval-ms:86400000}", + initialDelayString = "${app.login-security.audit-cleanup.initial-delay-ms:120000}" + ) + public void cleanupScheduled() { + if (enabled) { + cleanupNow(); + } + } + + public CleanupSummary cleanupNow() { + if (!cleanupInProgress.compareAndSet(false, true)) { + return new CleanupSummary(0, 0, 0, 0, true); + } + String previousTenant = TenantContext.getCurrentTenant(); + try { + TenantContext.clear(); + Map tenants = routingDataSource.snapshotTenantConfigs(); + Instant now = clock.instant(); + Instant cutoff = now.minus(retention); + int deletedAudits = 0; + int deletedLimits = 0; + int failedTenants = 0; + for (String tenant : tenants.keySet()) { + TenantContext.setCurrentTenant(tenant); + try { + deletedAudits += cleanupAudit(tenant, cutoff); + deletedLimits += cleanupLimits(tenant, cutoff, now); + } catch (RuntimeException failure) { + failedTenants++; + log.warn("Очистка аудита входа tenant-БД '{}' завершилась ошибкой: errorType={}", + tenant, failure.getClass().getSimpleName()); + log.debug("Технические детали очистки аудита входа", failure); + } finally { + TenantContext.clear(); + } + } + if (deletedAudits + deletedLimits > 0) { + log.info("Очистка аудита входа завершена: tenantCount={}, auditDeleted={}, rateLimitDeleted={}, failedCount={}", + tenants.size(), deletedAudits, deletedLimits, failedTenants); + } + return new CleanupSummary( + tenants.size(), deletedAudits, deletedLimits, failedTenants, false + ); + } finally { + restoreTenant(previousTenant); + cleanupInProgress.set(false); + } + } + + private int cleanupAudit(String tenant, Instant cutoff) { + int deletedTotal = 0; + for (int batch = 0; batch < maxBatchesPerTenant; batch++) { + int deleted = auditRepository.deleteCleanupBatch(cutoff, batchSize); + deletedTotal += deleted; + if (deleted < batchSize) { + return deletedTotal; + } + } + log.warn("Очистка аудита входа tenant-БД '{}' достигла лимита пачек", tenant); + return deletedTotal; + } + + private int cleanupLimits(String tenant, Instant cutoff, Instant now) { + int deletedTotal = 0; + for (int batch = 0; batch < maxBatchesPerTenant; batch++) { + int deleted = rateLimitRepository.deleteStaleBatch(cutoff, now, batchSize); + deletedTotal += deleted; + if (deleted < batchSize) { + return deletedTotal; + } + } + log.warn("Очистка счётчиков входа tenant-БД '{}' достигла лимита пачек", tenant); + return deletedTotal; + } + + private void restoreTenant(String tenant) { + if (tenant == null || tenant.isBlank()) { + TenantContext.clear(); + } else { + TenantContext.setCurrentTenant(tenant); + } + } + + public record CleanupSummary(int tenantCount, + int auditDeletedCount, + int rateLimitDeletedCount, + int failedTenantCount, + boolean skippedBecauseAlreadyRunning) { + } +} diff --git a/backend/src/main/java/com/magistr/app/config/auth/LoginRateLimitService.java b/backend/src/main/java/com/magistr/app/config/auth/LoginRateLimitService.java new file mode 100644 index 0000000..177b142 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/auth/LoginRateLimitService.java @@ -0,0 +1,226 @@ +package com.magistr.app.config.auth; + +import com.magistr.app.model.AuthLoginAttemptAudit; +import com.magistr.app.model.AuthLoginRateLimit; +import com.magistr.app.model.User; +import com.magistr.app.repository.AuthLoginAttemptAuditRepository; +import com.magistr.app.repository.AuthLoginRateLimitRepository; +import com.magistr.app.repository.UserRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.text.Normalizer; +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.util.HexFormat; +import java.util.Locale; +import java.util.Objects; +import java.util.Optional; + +@Service +public class LoginRateLimitService { + + private static final Logger log = LoggerFactory.getLogger(LoginRateLimitService.class); + private static final String OUTCOME_FAILURE = "FAILURE"; + private static final String OUTCOME_BLOCKED = "BLOCKED"; + + private final AuthLoginRateLimitRepository rateLimitRepository; + private final AuthLoginAttemptAuditRepository auditRepository; + private final UserRepository userRepository; + private final BCryptPasswordEncoder passwordEncoder; + private final LoginSecurityProperties properties; + private final Clock clock; + private final String dummyPasswordHash; + + @Autowired + public LoginRateLimitService(AuthLoginRateLimitRepository rateLimitRepository, + AuthLoginAttemptAuditRepository auditRepository, + UserRepository userRepository, + BCryptPasswordEncoder passwordEncoder, + LoginSecurityProperties properties) { + this(rateLimitRepository, auditRepository, userRepository, passwordEncoder, + properties, Clock.systemUTC()); + } + + LoginRateLimitService(AuthLoginRateLimitRepository rateLimitRepository, + AuthLoginAttemptAuditRepository auditRepository, + UserRepository userRepository, + BCryptPasswordEncoder passwordEncoder, + LoginSecurityProperties properties, + Clock clock) { + this.rateLimitRepository = Objects.requireNonNull(rateLimitRepository); + this.auditRepository = Objects.requireNonNull(auditRepository); + this.userRepository = Objects.requireNonNull(userRepository); + this.passwordEncoder = Objects.requireNonNull(passwordEncoder); + this.properties = Objects.requireNonNull(properties); + this.clock = Objects.requireNonNull(clock); + this.dummyPasswordHash = passwordEncoder.encode("dummy-password-for-timing-only"); + } + + /** + * Блокировка строки удерживается до завершения проверки пароля и записи результата. + * Поэтому разные backend-pod не могут одновременно обойти общий счётчик попыток. + */ + @Transactional + public AuthenticationDecision authenticate(String tenant, + String username, + String rawPassword, + String clientIp) { + String safeTenant = normalizeAndLimit(tenant, 100, "unknown-tenant"); + String normalizedUsername = normalizeAndLimit(username, 100, "пустое-имя"); + String safeClientIp = normalizeAndLimit(clientIp, 64, "неизвестен"); + Instant now = clock.instant(); + + rateLimitRepository.ensureExists(safeTenant, normalizedUsername, safeClientIp, now); + AuthLoginRateLimit state = rateLimitRepository + .findForUpdate(safeTenant, normalizedUsername, safeClientIp) + .orElseThrow(() -> new IllegalStateException("Не удалось заблокировать счётчик попыток входа")); + + if (state.getBlockedUntil() != null && state.getBlockedUntil().isAfter(now)) { + long retryAfter = retryAfterSeconds(now, state.getBlockedUntil()); + audit(safeTenant, normalizedUsername, safeClientIp, OUTCOME_BLOCKED, now, retryAfter); + logDenied(safeTenant, normalizedUsername, safeClientIp, OUTCOME_BLOCKED, retryAfter); + return AuthenticationDecision.blocked(retryAfter); + } + + if (!state.getWindowStartedAt().plus(properties.getAttemptWindow()).isAfter(now)) { + state.setFailureCount(0); + state.setWindowStartedAt(now); + state.setBlockedUntil(null); + } + + Optional user = username == null ? Optional.empty() : userRepository.findByUsername(username); + String storedHash = user.map(User::getPassword).orElse(dummyPasswordHash); + boolean passwordMatches = passwordEncoder.matches( + rawPassword == null ? "" : rawPassword, + storedHash + ); + boolean authenticated = passwordMatches && user.isPresent() && !user.get().isArchivedRecord(); + + if (authenticated) { + rateLimitRepository.delete(state); + return AuthenticationDecision.authenticated(user.get()); + } + + int failureCount = state.getFailureCount() + 1; + state.setFailureCount(failureCount); + state.setLastFailureAt(now); + state.setUpdatedAt(now); + + if (failureCount >= properties.getMaxFailures()) { + Duration blockDuration = progressiveBlockDuration(failureCount); + Instant blockedUntil = now.plus(blockDuration); + state.setBlockedUntil(blockedUntil); + long retryAfter = retryAfterSeconds(now, blockedUntil); + audit(safeTenant, normalizedUsername, safeClientIp, OUTCOME_BLOCKED, now, retryAfter); + logDenied(safeTenant, normalizedUsername, safeClientIp, OUTCOME_BLOCKED, retryAfter); + return AuthenticationDecision.blocked(retryAfter); + } + + audit(safeTenant, normalizedUsername, safeClientIp, OUTCOME_FAILURE, now, null); + logDenied(safeTenant, normalizedUsername, safeClientIp, OUTCOME_FAILURE, null); + return AuthenticationDecision.rejected(); + } + + private Duration progressiveBlockDuration(int failureCount) { + int exponent = Math.min(failureCount - properties.getMaxFailures(), 30); + long multiplier = 1L << exponent; + Duration candidate; + try { + candidate = properties.getBaseBlockDuration().multipliedBy(multiplier); + } catch (ArithmeticException overflow) { + return properties.getMaxBlockDuration(); + } + return candidate.compareTo(properties.getMaxBlockDuration()) > 0 + ? properties.getMaxBlockDuration() + : candidate; + } + + private void audit(String tenant, + String username, + String clientIp, + String outcome, + Instant occurredAt, + Long retryAfterSeconds) { + Integer retryAfter = retryAfterSeconds == null + ? null + : Math.toIntExact(Math.min(retryAfterSeconds, Integer.MAX_VALUE)); + auditRepository.save(new AuthLoginAttemptAudit( + tenant, username, clientIp, outcome, occurredAt, retryAfter + )); + } + + private void logDenied(String tenant, + String username, + String clientIp, + String outcome, + Long retryAfterSeconds) { + log.warn( + "Неудачная попытка входа: tenant={}, usernameFingerprint={}, clientIp={}, outcome={}, retryAfterSeconds={}", + tenant, + fingerprint(username), + clientIp, + outcome, + retryAfterSeconds + ); + } + + private String normalizeAndLimit(String value, int maxLength, String fallback) { + String bounded = value == null + ? fallback + : value.substring(0, Math.min(value.length(), maxLength * 4)); + String normalized = Normalizer.normalize(bounded, Normalizer.Form.NFKC) + .replaceAll("\\p{C}", "") + .strip() + .toLowerCase(Locale.ROOT); + if (normalized.isBlank()) { + normalized = fallback; + } + return normalized.length() <= maxLength ? normalized : normalized.substring(0, maxLength); + } + + private long retryAfterSeconds(Instant now, Instant blockedUntil) { + Duration remaining = Duration.between(now, blockedUntil); + long seconds = remaining.getSeconds() + (remaining.getNano() > 0 ? 1 : 0); + return Math.max(1, seconds); + } + + private String fingerprint(String value) { + try { + byte[] digest = MessageDigest.getInstance("SHA-256") + .digest(value.getBytes(StandardCharsets.UTF_8)); + return HexFormat.of().formatHex(digest, 0, 8); + } catch (NoSuchAlgorithmException exception) { + throw new IllegalStateException("В JVM недоступен алгоритм SHA-256", exception); + } + } + + public record AuthenticationDecision(Status status, User user, long retryAfterSeconds) { + + static AuthenticationDecision authenticated(User user) { + return new AuthenticationDecision(Status.AUTHENTICATED, user, 0); + } + + static AuthenticationDecision rejected() { + return new AuthenticationDecision(Status.REJECTED, null, 0); + } + + static AuthenticationDecision blocked(long retryAfterSeconds) { + return new AuthenticationDecision(Status.BLOCKED, null, retryAfterSeconds); + } + + public enum Status { + AUTHENTICATED, + REJECTED, + BLOCKED + } + } +} diff --git a/backend/src/main/java/com/magistr/app/config/auth/LoginSecurityProperties.java b/backend/src/main/java/com/magistr/app/config/auth/LoginSecurityProperties.java new file mode 100644 index 0000000..de8d9ae --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/auth/LoginSecurityProperties.java @@ -0,0 +1,70 @@ +package com.magistr.app.config.auth; + +import jakarta.annotation.PostConstruct; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.time.Duration; + +@Component +@ConfigurationProperties(prefix = "app.login-security") +public class LoginSecurityProperties { + + private int maxFailures = 5; + private Duration attemptWindow = Duration.ofMinutes(15); + private Duration baseBlockDuration = Duration.ofMinutes(1); + private Duration maxBlockDuration = Duration.ofMinutes(15); + + @PostConstruct + void validate() { + if (maxFailures < 2 || maxFailures > 100) { + throw new IllegalStateException("LOGIN_RATE_MAX_FAILURES должен быть от 2 до 100"); + } + requirePositive(attemptWindow, "Окно учёта попыток входа"); + requirePositive(baseBlockDuration, "Начальный срок блокировки входа"); + requirePositive(maxBlockDuration, "Максимальный срок блокировки входа"); + if (maxBlockDuration.compareTo(baseBlockDuration) < 0) { + throw new IllegalStateException( + "Максимальный срок блокировки входа не может быть меньше начального" + ); + } + } + + private void requirePositive(Duration duration, String fieldName) { + if (duration == null || duration.isZero() || duration.isNegative()) { + throw new IllegalStateException(fieldName + " должен быть положительным"); + } + } + + public int getMaxFailures() { + return maxFailures; + } + + public void setMaxFailures(int maxFailures) { + this.maxFailures = maxFailures; + } + + public Duration getAttemptWindow() { + return attemptWindow; + } + + public void setAttemptWindow(Duration attemptWindow) { + this.attemptWindow = attemptWindow; + } + + public Duration getBaseBlockDuration() { + return baseBlockDuration; + } + + public void setBaseBlockDuration(Duration baseBlockDuration) { + this.baseBlockDuration = baseBlockDuration; + } + + public Duration getMaxBlockDuration() { + return maxBlockDuration; + } + + public void setMaxBlockDuration(Duration maxBlockDuration) { + this.maxBlockDuration = maxBlockDuration; + } +} diff --git a/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenCleanupJob.java b/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenCleanupJob.java new file mode 100644 index 0000000..aea3be6 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenCleanupJob.java @@ -0,0 +1,163 @@ +package com.magistr.app.config.auth; + +import com.magistr.app.config.tenant.TenantContext; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.magistr.app.repository.AuthRefreshTokenRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * Периодически очищает старые refresh-сессии отдельно в каждой активной tenant-БД. + */ +@Component +public class RefreshTokenCleanupJob { + + private static final Logger log = LoggerFactory.getLogger(RefreshTokenCleanupJob.class); + + private final TenantRoutingDataSource routingDataSource; + private final AuthRefreshTokenRepository repository; + private final boolean enabled; + private final Duration retention; + private final int batchSize; + private final int maxBatchesPerTenant; + private final Clock clock; + private final AtomicBoolean cleanupInProgress = new AtomicBoolean(false); + + @Autowired + public RefreshTokenCleanupJob( + TenantRoutingDataSource routingDataSource, + AuthRefreshTokenRepository repository, + @Value("${app.jwt.refresh-cleanup.enabled:true}") boolean enabled, + @Value("${app.jwt.refresh-cleanup.retention:30d}") Duration retention, + @Value("${app.jwt.refresh-cleanup.batch-size:500}") int batchSize, + @Value("${app.jwt.refresh-cleanup.max-batches-per-tenant:20}") int maxBatchesPerTenant) { + this( + routingDataSource, + repository, + enabled, + retention, + batchSize, + maxBatchesPerTenant, + Clock.systemUTC() + ); + } + + RefreshTokenCleanupJob(TenantRoutingDataSource routingDataSource, + AuthRefreshTokenRepository repository, + boolean enabled, + Duration retention, + int batchSize, + int maxBatchesPerTenant, + Clock clock) { + this.routingDataSource = Objects.requireNonNull( + routingDataSource, + "Маршрутизатор tenant-БД обязателен" + ); + this.repository = Objects.requireNonNull(repository, "Репозиторий refresh-токенов обязателен"); + if (retention == null || retention.isZero() || retention.isNegative()) { + throw new IllegalArgumentException("Срок хранения refresh-сессий должен быть положительным"); + } + if (batchSize < 1 || batchSize > 10_000) { + throw new IllegalArgumentException("Размер пачки очистки должен быть от 1 до 10000"); + } + if (maxBatchesPerTenant < 1 || maxBatchesPerTenant > 1_000) { + throw new IllegalArgumentException("Число пачек очистки должно быть от 1 до 1000"); + } + this.enabled = enabled; + this.retention = retention; + this.batchSize = batchSize; + this.maxBatchesPerTenant = maxBatchesPerTenant; + this.clock = Objects.requireNonNull(clock, "Часы очистки обязательны"); + } + + @Scheduled( + fixedDelayString = "${app.jwt.refresh-cleanup.interval-ms:3600000}", + initialDelayString = "${app.jwt.refresh-cleanup.initial-delay-ms:60000}" + ) + public void cleanupScheduled() { + if (enabled) { + cleanupNow(); + } + } + + /** + * Выполняет один ограниченный проход. Локальный guard не допускает наложения запусков + * внутри pod, а SQL SKIP LOCKED обеспечивает безопасную совместную работу нескольких pod. + */ + public CleanupSummary cleanupNow() { + if (!cleanupInProgress.compareAndSet(false, true)) { + return new CleanupSummary(0, 0, 0, true); + } + + String previousTenant = TenantContext.getCurrentTenant(); + try { + TenantContext.clear(); + Map tenantSnapshot = routingDataSource.snapshotTenantConfigs(); + Instant cutoff = clock.instant().minus(retention); + int deletedTotal = 0; + int failedTenants = 0; + + for (String tenant : tenantSnapshot.keySet()) { + TenantContext.setCurrentTenant(tenant); + try { + deletedTotal += cleanupTenant(tenant, cutoff); + } catch (RuntimeException cleanupFailure) { + failedTenants++; + log.warn("Очистка refresh-сессий tenant-БД '{}' завершилась ошибкой: errorType={}", + tenant, cleanupFailure.getClass().getSimpleName()); + log.debug("Технические детали очистки refresh-сессий", cleanupFailure); + } finally { + TenantContext.clear(); + } + } + + if (deletedTotal > 0) { + log.info("Очистка refresh-сессий завершена: tenantCount={}, deletedCount={}, failedCount={}", + tenantSnapshot.size(), deletedTotal, failedTenants); + } + return new CleanupSummary(tenantSnapshot.size(), deletedTotal, failedTenants, false); + } finally { + restoreTenant(previousTenant); + cleanupInProgress.set(false); + } + } + + private int cleanupTenant(String tenant, Instant cutoff) { + int deletedTotal = 0; + for (int batch = 0; batch < maxBatchesPerTenant; batch++) { + int deleted = repository.deleteCleanupBatch(cutoff, batchSize); + deletedTotal += deleted; + if (deleted < batchSize) { + return deletedTotal; + } + } + log.warn("Очистка refresh-сессий tenant-БД '{}' достигла лимита пачек за один проход", + tenant); + return deletedTotal; + } + + private void restoreTenant(String previousTenant) { + if (previousTenant == null || previousTenant.isBlank()) { + TenantContext.clear(); + } else { + TenantContext.setCurrentTenant(previousTenant); + } + } + + public record CleanupSummary(int tenantCount, + int deletedCount, + int failedTenantCount, + boolean skippedBecauseAlreadyRunning) { + } +} diff --git a/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java b/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java index 044b461..b711343 100644 --- a/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java +++ b/backend/src/main/java/com/magistr/app/config/auth/RefreshTokenService.java @@ -4,13 +4,15 @@ import com.magistr.app.model.AuthRefreshToken; import com.magistr.app.model.User; import com.magistr.app.repository.AuthRefreshTokenRepository; import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; -import java.time.LocalDateTime; +import java.time.Clock; +import java.time.Instant; import java.util.Base64; import java.util.HexFormat; import java.util.Optional; @@ -25,17 +27,24 @@ public class RefreshTokenService { private final SecureRandom secureRandom = new SecureRandom(); private final AuthRefreshTokenRepository repository; private final JwtProperties properties; + private final Clock clock; + @Autowired public RefreshTokenService(AuthRefreshTokenRepository repository, JwtProperties properties) { + this(repository, properties, Clock.systemUTC()); + } + + RefreshTokenService(AuthRefreshTokenRepository repository, JwtProperties properties, Clock clock) { this.repository = repository; this.properties = properties; + this.clock = clock; } @Transactional public String createSession(User user, String tenant, String userAgent, String ipAddress) { String refreshToken = generateRawToken(); AuthRefreshToken token = new AuthRefreshToken(); - LocalDateTime now = LocalDateTime.now(); + Instant now = clock.instant(); token.setUser(user); token.setTenant(tenant); token.setTokenHash(hashToken(refreshToken)); @@ -53,7 +62,7 @@ public class RefreshTokenService { return Optional.empty(); } - LocalDateTime now = LocalDateTime.now(); + Instant now = clock.instant(); String currentHash = hashToken(rawToken); Optional storedOpt = repository.findByTokenHashForUpdate(currentHash); if (storedOpt.isEmpty()) { @@ -101,7 +110,7 @@ public class RefreshTokenService { .filter(token -> tenant.equalsIgnoreCase(token.getTenant())) .filter(token -> token.getRevokedAt() == null) .ifPresent(token -> { - token.setRevokedAt(LocalDateTime.now()); + token.setRevokedAt(clock.instant()); repository.save(token); }); } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java index 24059db..39bd1b3 100755 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java @@ -65,7 +65,7 @@ public class TenantDataSourceConfig { "Default", "default", defaultDbUrl, defaultDbUsername, defaultDbPassword ); tenants.add(defaultTenant); - log.info("Конфигурация тенантов отсутствует, используется default DataSource"); + log.info("Конфигурация тенантов отсутствует, используется источник данных по умолчанию"); } readinessRegistry.clearConfigurationFailure(); @@ -79,10 +79,10 @@ public class TenantDataSourceConfig { registerPreparedTenant(routingDataSource, migrationService, readinessRegistry, tenant, true); } - // Если всё ещё нет ни одного тенанта — H2 in-memory заглушка + // Если всё ещё нет ни одного тенанта — H2-заглушка в памяти if (routingDataSource.getTenantConfigs().isEmpty()) { log.warn("=== НЕТ НАСТРОЕННЫХ ТЕНАНТОВ ==="); - log.warn("Создаём H2 in-memory заглушку для запуска приложения."); + log.warn("Создаём H2-заглушку в памяти для запуска приложения"); log.warn("Добавьте тенант через POST /api/database/tenants"); TenantConfig h2Fallback = new TenantConfig( @@ -155,7 +155,7 @@ public class TenantDataSourceConfig { log.info("Загружено конфигураций тенантов: {}", list.size()); return new TenantConfigLoadResult(List.copyOf(list), false); } catch (Exception e) { - log.error("Не удалось прочитать конфигурацию тенантов: errorType={}", + log.error("Не удалось прочитать конфигурацию тенантов: типОшибки={}", e.getClass().getSimpleName()); log.debug("Технические детали чтения конфигурации тенантов", e); return new TenantConfigLoadResult(List.of(), true); @@ -189,15 +189,15 @@ public class TenantDataSourceConfig { readinessRegistry.markConnectivity(tenant.getDomain(), true); } closeDataSource(previous == null ? null : previous.dataSource()); - log.info("Tenant-БД '{}' проверена и активирована", tenant.getDomain()); + log.info("БД тенанта '{}' проверена и активирована", tenant.getDomain()); return true; } catch (Exception startupFailure) { if (requiredForReadiness) { readinessRegistry.markMigrationFailed(tenant); } - log.error("Не удалось безопасно активировать tenant-БД '{}': errorType={}", + log.error("Не удалось безопасно активировать БД тенанта '{}': типОшибки={}", tenant.getDomain(), startupFailure.getClass().getSimpleName()); - log.debug("Технические детали startup lifecycle tenant-БД", startupFailure); + log.debug("Технические детали жизненного цикла запуска БД тенанта", startupFailure); return false; } finally { if (!activated) { @@ -211,9 +211,9 @@ public class TenantDataSourceConfig { try { hikariDataSource.close(); } catch (RuntimeException closeFailure) { - log.warn("Не удалось штатно закрыть startup Hikari pool: errorType={}", + log.warn("Не удалось штатно закрыть стартовый пул Hikari: типОшибки={}", closeFailure.getClass().getSimpleName()); - log.debug("Технические детали закрытия startup Hikari pool", closeFailure); + log.debug("Технические детали закрытия стартового пула Hikari", closeFailure); } } } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java index e85c961..573d2ee 100755 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantInterceptor.java @@ -52,13 +52,13 @@ public class TenantInterceptor implements HandlerInterceptor { TenantContext.setCurrentTenant(tenant); MDC.put("tenant.id", tenant); Span.current().setAttribute("tenant.id", tenant); - log.debug("Database API request, tenant '{}' (no strict check)", tenant); + log.debug("Запрос API управления БД: тенант='{}', строгая проверка отключена", tenant); return true; } // Проверяем, существует ли тенант if (routingDataSource != null && !routingDataSource.hasTenant(tenant)) { - log.warn("Unknown tenant '{}' from Host '{}' — returning 404", tenant, host); + log.warn("Неизвестный тенант '{}' для заголовка Host '{}': возвращается 404", tenant, host); response.setStatus(404); response.setContentType("application/json;charset=UTF-8"); new ObjectMapper().writeValue(response.getOutputStream(), Map.of( @@ -72,7 +72,7 @@ public class TenantInterceptor implements HandlerInterceptor { TenantContext.setCurrentTenant(tenant); MDC.put("tenant.id", tenant); Span.current().setAttribute("tenant.id", tenant); - log.debug("Resolved tenant '{}' from Host '{}'", tenant, host); + log.debug("Тенант '{}' определён по заголовку Host '{}'", tenant, host); return true; } diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java index d06ae19..88f314f 100644 --- a/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java @@ -141,7 +141,7 @@ public class TenantRoutingDataSource extends AbstractRoutingDataSource { try (Connection connection = tenantDataSource.get().getConnection()) { return connection.isValid(5); } catch (SQLException e) { - log.warn("Проверка подключения тенанта '{}' завершилась ошибкой: errorType={}", + log.warn("Проверка подключения тенанта '{}' завершилась ошибкой: типОшибки={}", normalizeDomain(domain), e.getClass().getSimpleName()); log.debug("Технические детали проверки подключения тенанта", e); return false; @@ -165,7 +165,7 @@ public class TenantRoutingDataSource extends AbstractRoutingDataSource { } return "Подключение не валидно"; } catch (Exception e) { - log.warn("Проверка внешнего подключения завершилась ошибкой: errorType={}", + log.warn("Проверка внешнего подключения завершилась ошибкой: типОшибки={}", e.getClass().getSimpleName()); log.debug("Технические детали проверки внешнего подключения", e); return "Не удалось подключиться к базе данных"; diff --git a/backend/src/main/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitor.java b/backend/src/main/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitor.java index 9b8b281..520db32 100644 --- a/backend/src/main/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitor.java +++ b/backend/src/main/java/com/magistr/app/config/tenant/health/TenantDatabaseHealthMonitor.java @@ -4,6 +4,7 @@ import com.magistr.app.config.tenant.TenantRoutingDataSource; import jakarta.annotation.PreDestroy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -41,6 +42,7 @@ public class TenantDatabaseHealthMonitor { private final ExecutorService executor; private final AtomicBoolean refreshInProgress = new AtomicBoolean(false); + @Autowired public TenantDatabaseHealthMonitor( TenantReadinessRegistry registry, TenantRoutingDataSource routingDataSource, diff --git a/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java b/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java index d4116b7..b01d608 100644 --- a/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java +++ b/backend/src/main/java/com/magistr/app/controller/AcademicCalendarAdminController.java @@ -4,6 +4,7 @@ import com.magistr.app.config.auth.RequireRoles; import com.magistr.app.dto.*; import com.magistr.app.model.*; import com.magistr.app.repository.*; +import com.magistr.app.service.AcademicPeriodService; import com.magistr.app.service.ScheduleGeneratorService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -22,17 +23,20 @@ public class AcademicCalendarAdminController { private final AcademicCalendarActivityTypeRepository activityTypeRepository; private final AcademicCalendarDayRepository calendarDayRepository; private final ScheduleGeneratorService scheduleGeneratorService; + private final AcademicPeriodService academicPeriodService; public AcademicCalendarAdminController(AcademicYearRepository academicYearRepository, SemesterRepository semesterRepository, AcademicCalendarActivityTypeRepository activityTypeRepository, AcademicCalendarDayRepository calendarDayRepository, - ScheduleGeneratorService scheduleGeneratorService) { + ScheduleGeneratorService scheduleGeneratorService, + AcademicPeriodService academicPeriodService) { this.academicYearRepository = academicYearRepository; this.semesterRepository = semesterRepository; this.activityTypeRepository = activityTypeRepository; this.calendarDayRepository = calendarDayRepository; this.scheduleGeneratorService = scheduleGeneratorService; + this.academicPeriodService = academicPeriodService; } @GetMapping("/years") @@ -45,43 +49,17 @@ public class AcademicCalendarAdminController { @PostMapping("/years") public ResponseEntity createYear(@RequestBody AcademicYearDto request) { - String validationError = validateYear(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - if (academicYearRepository.findByTitle(request.title()).isPresent()) { - return ResponseEntity.badRequest().body(Map.of("message", "Учебный год с таким названием уже существует")); - } - - AcademicYear year = new AcademicYear(); - applyYear(year, request); - return ResponseEntity.ok(toAcademicYearDto(academicYearRepository.save(year))); + return ResponseEntity.ok(toAcademicYearDto(academicPeriodService.createYear(request))); } @PutMapping("/years/{id}") public ResponseEntity updateYear(@PathVariable Long id, @RequestBody AcademicYearDto request) { - AcademicYear year = academicYearRepository.findById(id).orElse(null); - if (year == null) { - return ResponseEntity.notFound().build(); - } - - String validationError = validateYear(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - - applyYear(year, request); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(toAcademicYearDto(academicYearRepository.save(year))); + return ResponseEntity.ok(toAcademicYearDto(academicPeriodService.updateYear(id, request))); } @DeleteMapping("/years/{id}") public ResponseEntity deleteYear(@PathVariable Long id) { - if (!academicYearRepository.existsById(id)) { - return ResponseEntity.notFound().build(); - } - academicYearRepository.deleteById(id); - scheduleGeneratorService.clearCache(); + academicPeriodService.deleteYear(id); return ResponseEntity.ok(Map.of("message", "Учебный год удалён")); } @@ -94,39 +72,12 @@ public class AcademicCalendarAdminController { @PostMapping("/years/{academicYearId}/semesters") public ResponseEntity createSemester(@PathVariable Long academicYearId, @RequestBody SemesterDto request) { - AcademicYear year = academicYearRepository.findById(academicYearId).orElse(null); - if (year == null) { - return ResponseEntity.badRequest().body(Map.of("message", "Учебный год не найден")); - } - String validationError = validateSemester(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - if (semesterRepository.findByAcademicYearIdAndSemesterType(academicYearId, request.semesterType()).isPresent()) { - return ResponseEntity.badRequest().body(Map.of("message", "Такой семестр уже есть в учебном году")); - } - - Semester semester = new Semester(); - semester.setAcademicYear(year); - applySemester(semester, request); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(toSemesterDto(semesterRepository.save(semester))); + return ResponseEntity.ok(toSemesterDto(academicPeriodService.createSemester(academicYearId, request))); } @PutMapping("/semesters/{id}") public ResponseEntity updateSemester(@PathVariable Long id, @RequestBody SemesterDto request) { - Semester semester = semesterRepository.findById(id).orElse(null); - if (semester == null) { - return ResponseEntity.notFound().build(); - } - String validationError = validateSemester(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - - applySemester(semester, request); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(toSemesterDto(semesterRepository.save(semester))); + return ResponseEntity.ok(toSemesterDto(academicPeriodService.updateSemester(id, request))); } @GetMapping("/activity-types") @@ -185,32 +136,6 @@ public class AcademicCalendarAdminController { return ResponseEntity.ok(Map.of("message", "Код активности удалён")); } - private String validateYear(AcademicYearDto request) { - if (request.title() == null || request.title().isBlank()) { - return "Название учебного года обязательно"; - } - if (request.startDate() == null || request.endDate() == null) { - return "Даты начала и окончания учебного года обязательны"; - } - if (request.endDate().isBefore(request.startDate())) { - return "Дата окончания не может быть раньше даты начала"; - } - return null; - } - - private String validateSemester(SemesterDto request) { - if (request.semesterType() == null) { - return "Тип семестра обязателен"; - } - if (request.startDate() == null || request.endDate() == null) { - return "Даты начала и окончания семестра обязательны"; - } - if (request.endDate().isBefore(request.startDate())) { - return "Дата окончания семестра не может быть раньше даты начала"; - } - return null; - } - private String validateActivityType(AcademicCalendarActivityTypeDto request) { if (request == null) { return "Передайте код активности"; @@ -224,18 +149,6 @@ public class AcademicCalendarAdminController { return null; } - private void applyYear(AcademicYear year, AcademicYearDto request) { - year.setTitle(request.title().trim()); - year.setStartDate(request.startDate()); - year.setEndDate(request.endDate()); - } - - private void applySemester(Semester semester, SemesterDto request) { - semester.setSemesterType(request.semesterType()); - semester.setStartDate(request.startDate()); - semester.setEndDate(request.endDate()); - } - private void applyActivityType(AcademicCalendarActivityType activityType, AcademicCalendarActivityTypeDto request) { activityType.setCode(request.code().trim()); activityType.setName(request.name().trim()); diff --git a/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java b/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java index 7f5a460..83074a7 100644 --- a/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java +++ b/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java @@ -5,6 +5,7 @@ import com.magistr.app.dto.*; import com.magistr.app.model.*; import com.magistr.app.repository.*; import com.magistr.app.service.AcademicCalendarGridService; +import com.magistr.app.service.AcademicStructureService; import com.magistr.app.service.ScheduleGeneratorService; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; @@ -32,6 +33,7 @@ public class AcademicCalendarController { private final AcademicCalendarSubjectRepository calendarSubjectRepository; private final AcademicCalendarGridService calendarGridService; private final ScheduleGeneratorService scheduleGeneratorService; + private final AcademicStructureService academicStructureService; public AcademicCalendarController(AcademicCalendarRepository calendarRepository, AcademicCalendarDayRepository calendarDayRepository, @@ -42,7 +44,8 @@ public class AcademicCalendarController { SubjectRepository subjectRepository, AcademicCalendarSubjectRepository calendarSubjectRepository, AcademicCalendarGridService calendarGridService, - ScheduleGeneratorService scheduleGeneratorService) { + ScheduleGeneratorService scheduleGeneratorService, + AcademicStructureService academicStructureService) { this.calendarRepository = calendarRepository; this.calendarDayRepository = calendarDayRepository; this.academicYearRepository = academicYearRepository; @@ -53,6 +56,7 @@ public class AcademicCalendarController { this.calendarSubjectRepository = calendarSubjectRepository; this.calendarGridService = calendarGridService; this.scheduleGeneratorService = scheduleGeneratorService; + this.academicStructureService = academicStructureService; } @GetMapping @@ -85,17 +89,7 @@ public class AcademicCalendarController { @PutMapping("/{id}") public ResponseEntity updateCalendar(@PathVariable Long id, @RequestBody AcademicCalendarDto request) { - AcademicCalendar calendar = calendarRepository.findById(id).orElse(null); - if (calendar == null) { - return ResponseEntity.notFound().build(); - } - try { - applyCalendar(calendar, request); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(toCalendarDto(calendarRepository.save(calendar))); - } catch (IllegalArgumentException e) { - return ResponseEntity.badRequest().body(Map.of("message", e.getMessage())); - } + return ResponseEntity.ok(toCalendarDto(academicStructureService.updateCalendar(id, request))); } @DeleteMapping("/{id}") @@ -103,14 +97,9 @@ public class AcademicCalendarController { if (!calendarRepository.existsById(id)) { return ResponseEntity.notFound().build(); } - try { - calendarRepository.deleteById(id); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(Map.of("message", "Календарный график удалён")); - } catch (Exception e) { - return ResponseEntity.badRequest() - .body(Map.of("message", "Нельзя удалить график, который назначен учебным группам")); - } + calendarRepository.deleteById(id); + scheduleGeneratorService.clearCache(); + return ResponseEntity.ok(Map.of("message", "Календарный график удалён")); } @GetMapping("/{id}/grid") diff --git a/backend/src/main/java/com/magistr/app/controller/AuthController.java b/backend/src/main/java/com/magistr/app/controller/AuthController.java index 1f29f48..c26cbe4 100755 --- a/backend/src/main/java/com/magistr/app/controller/AuthController.java +++ b/backend/src/main/java/com/magistr/app/controller/AuthController.java @@ -3,17 +3,18 @@ package com.magistr.app.controller; import com.magistr.app.config.auth.AuthContext; import com.magistr.app.config.auth.JwtProperties; import com.magistr.app.config.auth.JwtTokenService; +import com.magistr.app.config.auth.ClientIpResolver; +import com.magistr.app.config.auth.LoginRateLimitService; import com.magistr.app.config.auth.RefreshTokenRotation; import com.magistr.app.config.auth.RefreshTokenService; import com.magistr.app.config.tenant.TenantContext; import com.magistr.app.dto.LoginRequest; import com.magistr.app.dto.LoginResponse; import com.magistr.app.model.User; -import com.magistr.app.repository.UserRepository; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseCookie; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -27,8 +28,8 @@ import java.util.Optional; @RequestMapping("/api/auth") public class AuthController { - private final UserRepository userRepository; - private final BCryptPasswordEncoder passwordEncoder; + private final LoginRateLimitService loginRateLimitService; + private final ClientIpResolver clientIpResolver; private final JwtTokenService jwtTokenService; private final RefreshTokenService refreshTokenService; private final JwtProperties jwtProperties; @@ -42,13 +43,13 @@ public class AuthController { "STUDENT", "/student/" ); - public AuthController(UserRepository userRepository, - BCryptPasswordEncoder passwordEncoder, + public AuthController(LoginRateLimitService loginRateLimitService, + ClientIpResolver clientIpResolver, JwtTokenService jwtTokenService, RefreshTokenService refreshTokenService, JwtProperties jwtProperties) { - this.userRepository = userRepository; - this.passwordEncoder = passwordEncoder; + this.loginRateLimitService = loginRateLimitService; + this.clientIpResolver = clientIpResolver; this.jwtTokenService = jwtTokenService; this.refreshTokenService = refreshTokenService; this.jwtProperties = jwtProperties; @@ -56,28 +57,46 @@ public class AuthController { @PostMapping("/login") public ResponseEntity login(@RequestBody LoginRequest request, HttpServletRequest servletRequest) { - Optional userOpt = userRepository.findByUsername(request.getUsername()); - - if (userOpt.isEmpty() || - !passwordEncoder.matches(request.getPassword(), userOpt.get().getPassword())) { + LoginRateLimitService.AuthenticationDecision decision = loginRateLimitService.authenticate( + TenantContext.getCurrentTenant(), + request.getUsername(), + request.getPassword(), + clientIpResolver.resolve(servletRequest) + ); + if (decision.status() == LoginRateLimitService.AuthenticationDecision.Status.BLOCKED) { + return ResponseEntity + .status(HttpStatus.TOO_MANY_REQUESTS) + .header(HttpHeaders.RETRY_AFTER, Long.toString(decision.retryAfterSeconds())) + .body(new LoginResponse( + false, + "Слишком много попыток входа. Повторите позже", + null, + null, + null, + null + )); + } + if (decision.status() == LoginRateLimitService.AuthenticationDecision.Status.REJECTED) { return ResponseEntity .status(401) - .body(new LoginResponse(false, "Неверное имя пользователя или пароль", null, null, null, null)); + .body(new LoginResponse( + false, + "Неверное имя пользователя или пароль", + null, + null, + null, + null + )); } - User user = userOpt.get(); - if (user.isArchivedRecord()) { - return ResponseEntity - .status(401) - .body(new LoginResponse(false, "Пользователь архивирован", null, null, null, null)); - } + User user = decision.user(); String tenant = TenantContext.getCurrentTenant(); String accessToken = jwtTokenService.createAccessToken(user, tenant); String refreshToken = refreshTokenService.createSession( user, tenant, servletRequest.getHeader("User-Agent"), - clientIp(servletRequest) + clientIpResolver.resolve(servletRequest) ); return ResponseEntity.ok() @@ -96,7 +115,7 @@ public class AuthController { refreshToken.get(), TenantContext.getCurrentTenant(), request.getHeader("User-Agent"), - clientIp(request) + clientIpResolver.resolve(request) ); if (rotation.isEmpty()) { return unauthorizedWithClearedCookie(); @@ -192,11 +211,4 @@ public class AuthController { return Optional.empty(); } - private String clientIp(HttpServletRequest request) { - String forwarded = request.getHeader("X-Forwarded-For"); - if (forwarded != null && !forwarded.isBlank()) { - return forwarded.split(",")[0].trim(); - } - return request.getRemoteAddr(); - } } diff --git a/backend/src/main/java/com/magistr/app/controller/DatabaseConstraintViolationMapper.java b/backend/src/main/java/com/magistr/app/controller/DatabaseConstraintViolationMapper.java new file mode 100644 index 0000000..360f0b4 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/controller/DatabaseConstraintViolationMapper.java @@ -0,0 +1,190 @@ +package com.magistr.app.controller; + +import org.hibernate.exception.ConstraintViolationException; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpStatus; + +import java.sql.SQLException; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Преобразует технические нарушения целостности БД в безопасные русские HTTP-ошибки. + */ +final class DatabaseConstraintViolationMapper { + + private static final Pattern CONSTRAINT_PATTERN = Pattern.compile( + "(?i)(?:constraint|ограничени[ея])\\s+[\"']?([a-z0-9_.$-]+)[\"']?" + ); + + private static final Map KNOWN_CONSTRAINTS = Map.ofEntries( + badRequest("chk_teacher_creation_request_status", "Недопустимый статус заявки на преподавателя"), + badRequest("chk_teacher_department_dates", "Дата окончания назначения кафедры раньше даты начала"), + badRequest("chk_time_slot_scopes_mode", "Недопустимый режим сетки времени"), + badRequest("chk_time_slot_scopes_day", "День недели сетки времени должен быть от 1 до 7"), + badRequest("chk_time_slot_scopes_weekday", "День недели обязателен только для недельной сетки"), + badRequest("chk_time_slots_order_positive", "Номер пары должен быть положительным"), + badRequest("chk_time_slots_time_range", "Время начала пары должно быть раньше времени окончания"), + badRequest("chk_time_slots_duration_positive", "Продолжительность пары должна быть положительной"), + badRequest("chk_time_slots_duration_matches_range", "Продолжительность пары не соответствует её времени"), + badRequest("chk_academic_years_dates", "Дата окончания учебного года раньше даты начала"), + badRequest("chk_semesters_type", "Недопустимый тип семестра"), + badRequest("chk_semesters_dates", "Дата окончания семестра раньше даты начала"), + badRequest("chk_academic_calendars_course_count", "Количество курсов должно быть от 1 до 8"), + badRequest("chk_calendar_days_course_positive", "Номер курса должен быть положительным"), + badRequest("chk_calendar_days_week_positive", "Номер недели должен быть положительным"), + badRequest("chk_calendar_days_day", "День недели должен быть от 1 до 7"), + badRequest("chk_academic_calendar_subjects_semester_positive", "Номер семестра должен быть положительным"), + badRequest("chk_schedule_rules_type_hours_non_negative", "Количество академических часов не может быть отрицательным"), + badRequest("chk_schedule_rules_has_type_hours", "В правиле должен быть хотя бы один тип занятия с часами"), + badRequest("chk_schedule_rules_start_weeks_positive", "Неделя начала занятия должна быть положительной"), + badRequest("chk_schedule_rules_dates", "Период действия правила задан неверно"), + badRequest("chk_schedule_rules_academic_hours_even", "Количество академических часов должно быть чётным"), + badRequest("chk_schedule_rule_slots_day", "День недели слота должен быть от 1 до 7"), + badRequest("chk_schedule_rule_slots_parity", "Недопустимая чётность недели"), + badRequest("chk_schedule_rule_slots_format", "Формат занятия должен быть «Очно» или «Онлайн»"), + badRequest("chk_schedule_overrides_action", "Недопустимый тип точечного изменения расписания"), + badRequest("chk_schedule_overrides_cancel_payload", "Для отмены переданы лишние параметры"), + badRequest("chk_schedule_overrides_move_payload", "Для переноса переданы неверные параметры"), + badRequest("chk_schedule_overrides_replace_payload", "Для замены преподавателя переданы неверные параметры"), + badRequest("chk_schedule_overrides_format", "Недопустимый формат занятия в точечном изменении"), + conflict("uq_specialty_profiles_name", "Профиль с таким названием уже существует"), + conflict("uq_subjects_name_ci", "Дисциплина с таким названием уже существует"), + conflict("uq_time_slot_scopes_default", "Базовая сетка времени уже существует"), + conflict("uq_time_slot_scopes_weekday", "Сетка времени для этого дня недели уже существует"), + conflict("uq_time_slots_scope_order", "Пара с таким номером уже существует в выбранной сетке"), + conflict("uq_semesters_year_type", "Семестр такого типа уже существует в учебном году"), + conflict("uq_academic_calendar_title", "Календарный график с таким названием уже существует"), + conflict("uq_calendar_days", "День календарного графика уже существует"), + conflict("uq_academic_calendar_subject", "Дисциплина уже добавлена в этот семестр графика"), + conflict("uq_group_calendar_year", "Группе уже назначен календарный график на учебный год"), + conflict("uq_schedule_rule_slots_exact_payload", "Такой слот правила расписания уже существует"), + conflict("uq_schedule_overrides_slot_date", "Для этой пары и даты уже существует точечное изменение"), + conflict("ux_subgroups_active_group_name", "Активная подгруппа с таким названием уже существует"), + conflict("ex_time_slots_scope_no_overlap", "Интервал пары пересекается с другой парой выбранной сетки"), + conflict("ex_academic_years_no_overlap", "Период учебного года пересекается с существующим"), + conflict("ex_semesters_year_no_overlap", "Период семестра пересекается с существующим"), + conflict("ex_teacher_primary_department_no_overlap", "Период основной кафедры пересекается с другим назначением") + ); + + ViolationResponse map(DataIntegrityViolationException exception) { + String constraintName = constraintName(exception).orElse(null); + String sqlState = sqlState(exception).orElse(null); + if (constraintName != null) { + ViolationResponse known = KNOWN_CONSTRAINTS.get(constraintName); + if (known != null) { + return known.withDetails(constraintName, sqlState); + } + if (constraintName.endsWith("_fkey")) { + return new ViolationResponse( + HttpStatus.CONFLICT, + "Операция невозможна из-за связанных данных", + constraintName, + sqlState + ); + } + } + + if ("23502".equals(sqlState)) { + return new ViolationResponse( + HttpStatus.BAD_REQUEST, + "Не заполнено обязательное поле", + constraintName, + sqlState + ); + } + if ("23514".equals(sqlState)) { + return new ViolationResponse( + HttpStatus.BAD_REQUEST, + "Данные нарушают правила предметной области", + constraintName, + sqlState + ); + } + if ("23505".equals(sqlState)) { + return new ViolationResponse( + HttpStatus.CONFLICT, + "Такая запись уже существует", + constraintName, + sqlState + ); + } + if ("23503".equals(sqlState) || "23P01".equalsIgnoreCase(sqlState)) { + return new ViolationResponse( + HttpStatus.CONFLICT, + "Операция невозможна из-за конфликта или связанных данных", + constraintName, + sqlState + ); + } + return new ViolationResponse( + HttpStatus.CONFLICT, + "Операция нарушает ограничения целостности данных", + constraintName, + sqlState + ); + } + + private Optional constraintName(Throwable failure) { + for (Throwable current = failure; current != null; current = nextCause(current)) { + if (current instanceof ConstraintViolationException constraintViolation + && constraintViolation.getConstraintName() != null) { + return normalize(constraintViolation.getConstraintName()); + } + String message = current.getMessage(); + if (message != null) { + Matcher matcher = CONSTRAINT_PATTERN.matcher(message); + if (matcher.find()) { + return normalize(matcher.group(1)); + } + } + } + return Optional.empty(); + } + + private Optional sqlState(Throwable failure) { + for (Throwable current = failure; current != null; current = nextCause(current)) { + if (current instanceof SQLException sqlException && sqlException.getSQLState() != null) { + return Optional.of(sqlException.getSQLState()); + } + } + return Optional.empty(); + } + + private Throwable nextCause(Throwable current) { + Throwable cause = current.getCause(); + return cause == current ? null : cause; + } + + private Optional normalize(String constraintName) { + if (constraintName == null || constraintName.isBlank()) { + return Optional.empty(); + } + String normalized = constraintName.trim() + .replace("\"", "") + .toLowerCase(Locale.ROOT); + int dot = normalized.lastIndexOf('.'); + return Optional.of(dot >= 0 ? normalized.substring(dot + 1) : normalized); + } + + private static Map.Entry badRequest(String name, String message) { + return Map.entry(name, new ViolationResponse(HttpStatus.BAD_REQUEST, message, name, "23514")); + } + + private static Map.Entry conflict(String name, String message) { + return Map.entry(name, new ViolationResponse(HttpStatus.CONFLICT, message, name, null)); + } + + record ViolationResponse(HttpStatus status, + String message, + String constraintName, + String sqlState) { + + private ViolationResponse withDetails(String actualConstraintName, String actualSqlState) { + return new ViolationResponse(status, message, actualConstraintName, actualSqlState); + } + } +} diff --git a/backend/src/main/java/com/magistr/app/controller/DepartmentController.java b/backend/src/main/java/com/magistr/app/controller/DepartmentController.java index dfa9a96..ccedb9f 100644 --- a/backend/src/main/java/com/magistr/app/controller/DepartmentController.java +++ b/backend/src/main/java/com/magistr/app/controller/DepartmentController.java @@ -9,7 +9,6 @@ import com.magistr.app.model.Role; import com.magistr.app.repository.DepartmentRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -93,9 +92,8 @@ public class DepartmentController { ) ); } catch (Exception e) { - logger.error("Ошибка при создании кафедры: {}", e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Map.of("message", "Произошла ошибка при создании кафедры " + e.getMessage())); + logger.error("Ошибка при создании кафедры", e); + throw e; } } @@ -148,9 +146,8 @@ public class DepartmentController { department.getDepartmentCode() )); } catch (Exception e) { - logger.error("Ошибка при обновлении кафедры с ID - {}: {}", id, e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Map.of("message", "Произошла ошибка при обновлении кафедры " + e.getMessage())); + logger.error("Ошибка при обновлении кафедры с ID - {}", id, e); + throw e; } } diff --git a/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java b/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java index 0d7d9d5..cfa8e51 100644 --- a/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java +++ b/backend/src/main/java/com/magistr/app/controller/DepartmentWorkspaceController.java @@ -15,6 +15,10 @@ import com.magistr.app.repository.TeacherCreationRequestRepository; import com.magistr.app.repository.TeacherDepartmentAssignmentRepository; import com.magistr.app.repository.UserRepository; import com.magistr.app.service.ScheduleQueryService; +import com.magistr.app.service.SubjectImportService; +import com.magistr.app.service.TeacherDepartmentService; +import com.magistr.app.service.BusinessTimeService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +44,9 @@ public class DepartmentWorkspaceController { private final TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository; private final TeacherCreationRequestRepository teacherCreationRequestRepository; private final ScheduleQueryService scheduleQueryService; + private final TeacherDepartmentService teacherDepartmentService; + private final SubjectImportService subjectImportService; + private final BusinessTimeService businessTime; public DepartmentWorkspaceController(SubjectRepository subjectRepository, SubjectCommentRepository subjectCommentRepository, @@ -47,7 +54,26 @@ public class DepartmentWorkspaceController { DepartmentRepository departmentRepository, TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository, TeacherCreationRequestRepository teacherCreationRequestRepository, - ScheduleQueryService scheduleQueryService) { + ScheduleQueryService scheduleQueryService, + TeacherDepartmentService teacherDepartmentService, + SubjectImportService subjectImportService) { + this(subjectRepository, subjectCommentRepository, userRepository, departmentRepository, + teacherDepartmentAssignmentRepository, teacherCreationRequestRepository, + scheduleQueryService, teacherDepartmentService, subjectImportService, + BusinessTimeService.systemDefault()); + } + + @Autowired + public DepartmentWorkspaceController(SubjectRepository subjectRepository, + SubjectCommentRepository subjectCommentRepository, + UserRepository userRepository, + DepartmentRepository departmentRepository, + TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository, + TeacherCreationRequestRepository teacherCreationRequestRepository, + ScheduleQueryService scheduleQueryService, + TeacherDepartmentService teacherDepartmentService, + SubjectImportService subjectImportService, + BusinessTimeService businessTime) { this.subjectRepository = subjectRepository; this.subjectCommentRepository = subjectCommentRepository; this.userRepository = userRepository; @@ -55,6 +81,9 @@ public class DepartmentWorkspaceController { this.teacherDepartmentAssignmentRepository = teacherDepartmentAssignmentRepository; this.teacherCreationRequestRepository = teacherCreationRequestRepository; this.scheduleQueryService = scheduleQueryService; + this.teacherDepartmentService = teacherDepartmentService; + this.subjectImportService = subjectImportService; + this.businessTime = businessTime; } @GetMapping("/subjects") @@ -77,19 +106,7 @@ public class DepartmentWorkspaceController { if (departmentId == null) { return ResponseEntity.badRequest().body(Map.of("message", "Кафедра обязательна")); } - List saved = requests.stream() - .filter(request -> request.getName() != null && !request.getName().isBlank()) - .map(request -> { - Subject subject = subjectRepository.findByName(request.getName().trim()).orElseGet(Subject::new); - subject.setName(request.getName().trim()); - subject.setCode(request.getCode() == null || request.getCode().isBlank() ? null : request.getCode().trim()); - subject.setDepartmentId(departmentId); - if (subject.isArchivedRecord()) { - subject.restore(); - } - return subjectRepository.save(subject); - }) - .toList(); + List saved = subjectImportService.importSubjects(requests, departmentId); return ResponseEntity.ok(Map.of( "message", "Дисциплины загружены", "count", saved.size() @@ -118,6 +135,7 @@ public class DepartmentWorkspaceController { return ResponseEntity.badRequest().body(Map.of("message", "Комментарий обязателен")); } SubjectComment comment = new SubjectComment(); + comment.setCreatedAt(businessTime.now()); comment.setSubject(subject); comment.setComment(commentText.trim()); Long currentUserId = AuthContext.currentUserId(); @@ -132,21 +150,19 @@ public class DepartmentWorkspaceController { Long effectiveDepartmentId = effectiveDepartmentId(departmentId); if (effectiveDepartmentId == null) { return userRepository.findByRoleAndStatusNot(Role.TEACHER, LifecycleEntity.STATUS_ARCHIVED).stream() - .map(this::toUserResponse) + .map(user -> toUserResponse( + user, + teacherDepartmentService.findPrimaryDepartmentIdAtDate( + user.getId(), + businessTime.today() + ).orElse(user.getDepartmentId()) + )) .toList(); } - Map teachersById = new LinkedHashMap<>(); - teacherDepartmentAssignmentRepository.findDepartmentTeachersAtDate(effectiveDepartmentId, LocalDate.now()) - .stream() - .map(TeacherDepartmentAssignment::getTeacher) - .filter(Objects::nonNull) - .filter(User::isActiveRecord) - .forEach(teacher -> teachersById.put(teacher.getId(), teacher)); - userRepository.findByRoleAndDepartmentIdAndStatusNot(Role.TEACHER, effectiveDepartmentId, LifecycleEntity.STATUS_ARCHIVED) - .forEach(teacher -> teachersById.putIfAbsent(teacher.getId(), teacher)); - return teachersById.values().stream() - .map(this::toUserResponse) + return teacherDepartmentService + .findTeachersForDepartmentAtDate(effectiveDepartmentId, businessTime.today()).stream() + .map(user -> toUserResponse(user, effectiveDepartmentId)) .toList(); } @@ -167,7 +183,7 @@ public class DepartmentWorkspaceController { if (teacher == null || teacher.getRole() != Role.TEACHER || teacher.isArchivedRecord()) { return ResponseEntity.badRequest().body(Map.of("message", "Активный преподаватель не найден")); } - LocalDate today = LocalDate.now(); + LocalDate today = businessTime.today(); if (teacherDepartmentAssignmentRepository.existsActiveAssignment(teacherId, departmentId, today)) { return ResponseEntity.badRequest().body(Map.of("message", "Преподаватель уже привязан к этой кафедре")); } @@ -225,6 +241,8 @@ public class DepartmentWorkspaceController { } TeacherCreationRequest teacherRequest = new TeacherCreationRequest(); + teacherRequest.setCreatedAt(businessTime.now()); + teacherRequest.setUpdatedAt(businessTime.now()); teacherRequest.setDepartment(department); teacherRequest.setUsername(username); teacherRequest.setFullName(fullName); @@ -257,14 +275,14 @@ public class DepartmentWorkspaceController { ); } - private UserResponse toUserResponse(User user) { + private UserResponse toUserResponse(User user, Long departmentId) { UserResponse response = new UserResponse( user.getId(), user.getUsername(), user.getRole().name(), user.getFullName(), user.getJobTitle(), - user.getDepartmentId() + departmentId ); response.setStatus(user.getStatus()); return response; diff --git a/backend/src/main/java/com/magistr/app/controller/EducationFormController.java b/backend/src/main/java/com/magistr/app/controller/EducationFormController.java index 31306db..a9301d6 100755 --- a/backend/src/main/java/com/magistr/app/controller/EducationFormController.java +++ b/backend/src/main/java/com/magistr/app/controller/EducationFormController.java @@ -15,7 +15,7 @@ import java.util.Map; @RestController @RequestMapping("/api/education-forms") -@RequireRoles({Role.ADMIN}) +@RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) public class EducationFormController { private final EducationFormRepository educationFormRepository; diff --git a/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java b/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java index 2886f48..d1feae0 100644 --- a/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java +++ b/backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java @@ -4,6 +4,7 @@ import com.magistr.app.service.ScheduleConflictException; import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageNotReadableException; @@ -11,7 +12,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; -import java.time.LocalDateTime; +import java.time.Instant; import java.util.LinkedHashMap; import java.util.Map; import java.util.NoSuchElementException; @@ -20,6 +21,8 @@ import java.util.NoSuchElementException; public class GlobalExceptionHandler { private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); + private final DatabaseConstraintViolationMapper constraintViolationMapper = + new DatabaseConstraintViolationMapper(); @ExceptionHandler(ScheduleConflictException.class) public ResponseEntity> handleScheduleConflict(ScheduleConflictException exception, @@ -58,6 +61,23 @@ public class GlobalExceptionHandler { return error(HttpStatus.BAD_REQUEST, "Некорректные параметры запроса", request); } + @ExceptionHandler(DataIntegrityViolationException.class) + public ResponseEntity> handleDataIntegrityViolation( + DataIntegrityViolationException exception, + HttpServletRequest request) { + DatabaseConstraintViolationMapper.ViolationResponse violation = + constraintViolationMapper.map(exception); + log.warn( + "Нарушение целостности данных {} {}: constraint={}, sqlState={}", + request.getMethod(), + request.getRequestURI(), + violation.constraintName() == null ? "не определено" : violation.constraintName(), + violation.sqlState() == null ? "не определено" : violation.sqlState() + ); + log.debug("Технические детали нарушения целостности данных", exception); + return error(violation.status(), violation.message(), request); + } + @ExceptionHandler(Exception.class) public ResponseEntity> handleUnexpected(Exception exception, HttpServletRequest request) { @@ -67,7 +87,7 @@ public class GlobalExceptionHandler { private ResponseEntity> error(HttpStatus status, String message, HttpServletRequest request) { Map body = new LinkedHashMap<>(); - body.put("timestamp", LocalDateTime.now().toString()); + body.put("timestamp", Instant.now().toString()); body.put("status", status.value()); body.put("error", reason(status)); body.put("message", message); diff --git a/backend/src/main/java/com/magistr/app/controller/GroupController.java b/backend/src/main/java/com/magistr/app/controller/GroupController.java index 6650638..ec4d97d 100755 --- a/backend/src/main/java/com/magistr/app/controller/GroupController.java +++ b/backend/src/main/java/com/magistr/app/controller/GroupController.java @@ -5,9 +5,7 @@ import com.magistr.app.dto.AcademicCalendarSubjectDto; import com.magistr.app.dto.CreateGroupRequest; import com.magistr.app.dto.GroupCalendarAssignmentDto; import com.magistr.app.dto.GroupResponse; -import com.magistr.app.model.AcademicCalendar; import com.magistr.app.model.AcademicCalendarSubject; -import com.magistr.app.model.AcademicYear; import com.magistr.app.model.EducationForm; import com.magistr.app.model.Role; import com.magistr.app.model.Speciality; @@ -17,12 +15,15 @@ import com.magistr.app.model.StudentGroup; import com.magistr.app.model.StudentGroupCalendarAssignment; import com.magistr.app.model.StudentGroupStudyState; import com.magistr.app.repository.*; +import com.magistr.app.service.AcademicStructureService; import com.magistr.app.service.ScheduleGeneratorService; import com.magistr.app.service.StudentGroupLifecycleService; +import com.magistr.app.service.BusinessTimeService; import com.magistr.app.utils.CourseAndSemesterCalculator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -45,33 +46,49 @@ public class GroupController { private final EducationFormRepository educationFormRepository; private final SpecialtiesRepository specialtiesRepository; private final SpecialtyProfileRepository specialtyProfileRepository; - private final AcademicYearRepository academicYearRepository; - private final AcademicCalendarRepository academicCalendarRepository; private final AcademicCalendarSubjectRepository calendarSubjectRepository; private final StudentGroupCalendarAssignmentRepository assignmentRepository; private final ScheduleGeneratorService scheduleGeneratorService; private final StudentGroupLifecycleService groupLifecycleService; + private final AcademicStructureService academicStructureService; + private final BusinessTimeService businessTime; public GroupController(GroupRepository groupRepository, EducationFormRepository educationFormRepository, SpecialtiesRepository specialtiesRepository, SpecialtyProfileRepository specialtyProfileRepository, - AcademicYearRepository academicYearRepository, - AcademicCalendarRepository academicCalendarRepository, AcademicCalendarSubjectRepository calendarSubjectRepository, StudentGroupCalendarAssignmentRepository assignmentRepository, ScheduleGeneratorService scheduleGeneratorService, - StudentGroupLifecycleService groupLifecycleService) { + StudentGroupLifecycleService groupLifecycleService, + AcademicStructureService academicStructureService) { + this(groupRepository, educationFormRepository, specialtiesRepository, + specialtyProfileRepository, calendarSubjectRepository, assignmentRepository, + scheduleGeneratorService, groupLifecycleService, academicStructureService, + BusinessTimeService.systemDefault()); + } + + @Autowired + public GroupController(GroupRepository groupRepository, + EducationFormRepository educationFormRepository, + SpecialtiesRepository specialtiesRepository, + SpecialtyProfileRepository specialtyProfileRepository, + AcademicCalendarSubjectRepository calendarSubjectRepository, + StudentGroupCalendarAssignmentRepository assignmentRepository, + ScheduleGeneratorService scheduleGeneratorService, + StudentGroupLifecycleService groupLifecycleService, + AcademicStructureService academicStructureService, + BusinessTimeService businessTime) { this.groupRepository = groupRepository; this.educationFormRepository = educationFormRepository; this.specialtiesRepository = specialtiesRepository; this.specialtyProfileRepository = specialtyProfileRepository; - this.academicYearRepository = academicYearRepository; - this.academicCalendarRepository = academicCalendarRepository; this.calendarSubjectRepository = calendarSubjectRepository; this.assignmentRepository = assignmentRepository; this.scheduleGeneratorService = scheduleGeneratorService; this.groupLifecycleService = groupLifecycleService; + this.academicStructureService = academicStructureService; + this.businessTime = businessTime; } @GetMapping @@ -82,7 +99,7 @@ public class GroupController { List groups = includeArchived ? groupRepository.findAll() : groupRepository.findAll().stream() - .filter(group -> groupLifecycleService.isAvailableForSelection(group, LocalDate.now())) + .filter(group -> groupLifecycleService.isAvailableForSelection(group, businessTime.today())) .toList(); List response = groups.stream() @@ -101,7 +118,7 @@ public class GroupController { logger.info("Получен запрос на получение списка групп для кафедры с ID - {}", departmentId); try { List groups = groupRepository.findByDepartmentId(departmentId).stream() - .filter(group -> groupLifecycleService.isAvailableForSelection(group, LocalDate.now())) + .filter(group -> groupLifecycleService.isAvailableForSelection(group, businessTime.today())) .toList(); if(groups.isEmpty()) { @@ -163,10 +180,9 @@ public class GroupController { logger.info("Группа успешно создана с ID - {}", group.getId()); return ResponseEntity.ok(mapToResponse(group)); - } catch (Exception e ) { - logger.error("Ошибка при создании группы: {}", e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Map.of("message", "Произошла ошибка при создании группы: " + e.getMessage())); + } catch (Exception e) { + logger.error("Ошибка при создании группы", e); + throw e; } } @@ -174,50 +190,9 @@ public class GroupController { @RequireRoles({Role.ADMIN}) public ResponseEntity updateGroup(@PathVariable Long id, @RequestBody CreateGroupRequest request) { logger.info("Получен запрос на обновление группы с ID - {}", id); - try { - Optional groupOpt = groupRepository.findById(id); - if (groupOpt.isEmpty()) { - logger.info("Группа с ID - {} не найдена", id); - return ResponseEntity.notFound().build(); - } - - ResponseEntity validationError = validateGroupRequest(request); - if (validationError != null) { - return validationError; - } - - Optional efOpt = educationFormRepository.findById(request.getEducationFormId()); - if (efOpt.isEmpty()) { - return ResponseEntity.badRequest().body(Map.of("message", "Форма обучения не найдена")); - } - Speciality speciality = specialtiesRepository.findById(request.getEffectiveSpecialtyId()) - .orElse(null); - if (speciality == null) { - return ResponseEntity.badRequest().body(Map.of("message", "Специальность не найдена")); - } - SpecialtyProfile profile = specialtyProfileRepository.findById(request.getSpecialtyProfileId()) - .orElse(null); - if (profile == null || !profile.getSpeciality().getId().equals(speciality.getId())) { - return ResponseEntity.badRequest().body(Map.of("message", "Профиль обучения не найден для выбранной специальности")); - } - - StudentGroup group = groupOpt.get(); - group.setName(request.getName().trim()); - group.setGroupSize(request.getGroupSize()); - group.setEducationForm(efOpt.get()); - group.setDepartmentId(request.getDepartmentId()); - group.setYearStartStudy(request.getYearStartStudy()); - group.setSpeciality(speciality); - group.setSpecialtyProfile(profile); - groupRepository.save(group); - - logger.info("Группа с ID - {} успешно обновлена", id); - return ResponseEntity.ok(mapToResponse(group)); - } catch (Exception e) { - logger.error("Ошибка при обновлении группы с ID - {}: {}", id, e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Map.of("message", "Произошла ошибка при обновлении группы: " + e.getMessage())); - } + StudentGroup group = academicStructureService.updateGroup(id, request); + logger.info("Группа с ID - {} успешно обновлена", id); + return ResponseEntity.ok(mapToResponse(group)); } @DeleteMapping("/{id}") @@ -229,7 +204,7 @@ public class GroupController { logger.info("Группа с ID - {} не найдена", id); return ResponseEntity.notFound().build(); } - group.archive("Группа архивирована"); + group.archive("Группа архивирована", businessTime.today(), businessTime.now()); groupRepository.save(group); logger.info("Группа с ID - {} успешно архивирована", id); return ResponseEntity.ok(Map.of("message", "Группа архивирована")); @@ -278,11 +253,11 @@ public class GroupController { } private GroupResponse mapToResponse(StudentGroup group) { - int course = CourseAndSemesterCalculator.getActualCourse(group.getYearStartStudy()); - int semester = CourseAndSemesterCalculator.getActualSemester(group.getYearStartStudy()); + LocalDate today = businessTime.today(); + int course = CourseAndSemesterCalculator.getActualCourse(group.getYearStartStudy(), today); + int semester = CourseAndSemesterCalculator.getActualSemester(group.getYearStartStudy(), today); Speciality speciality = group.getSpeciality(); SpecialtyProfile profile = group.getSpecialtyProfile(); - LocalDate today = LocalDate.now(); StudentGroupStudyState studyState = groupLifecycleService.getStudyState(group, today); return new GroupResponse( group.getId(), @@ -323,42 +298,9 @@ public class GroupController { @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) public ResponseEntity saveCalendarAssignment(@PathVariable Long id, @RequestBody GroupCalendarAssignmentDto request) { - if (request == null || request.academicYearId() == null || request.calendarId() == null) { - return ResponseEntity.badRequest().body(Map.of("message", "Учебный год и календарный график обязательны")); - } - StudentGroup group = groupRepository.findById(id).orElse(null); - if (group == null) { - return ResponseEntity.notFound().build(); - } - AcademicYear academicYear = academicYearRepository.findById(request.academicYearId()).orElse(null); - if (academicYear == null) { - return ResponseEntity.badRequest().body(Map.of("message", "Учебный год не найден")); - } - AcademicCalendar calendar = academicCalendarRepository.findByIdWithDetails(request.calendarId()).orElse(null); - if (calendar == null) { - return ResponseEntity.badRequest().body(Map.of("message", "Календарный график не найден")); - } - if (!calendar.getAcademicYear().getId().equals(academicYear.getId())) { - return ResponseEntity.badRequest().body(Map.of("message", "График относится к другому учебному году")); - } - if (!calendar.getSpeciality().getId().equals(group.getSpeciality().getId()) - || !calendar.getSpecialtyProfile().getId().equals(group.getSpecialtyProfile().getId())) { - return ResponseEntity.badRequest().body(Map.of("message", "График не соответствует специальности и профилю группы")); - } - if (!calendar.getStudyForm().getId().equals(group.getEducationForm().getId())) { - return ResponseEntity.badRequest().body(Map.of("message", "График не соответствует форме обучения группы")); - } - - StudentGroupCalendarAssignment assignment = assignmentRepository - .findByGroupIdAndAcademicYearIdWithDetails(group.getId(), academicYear.getId()) - .orElseGet(StudentGroupCalendarAssignment::new); - assignment.setStudentGroup(group); - assignment.setAcademicYear(academicYear); - assignment.setAcademicCalendar(calendar); - scheduleGeneratorService.clearCache(); - StudentGroupCalendarAssignment saved = assignmentRepository.save(assignment); + StudentGroupCalendarAssignment saved = academicStructureService.saveAssignment(id, request); List subjects = calendarSubjectRepository - .findByCalendarIdWithSubject(calendar.getId()) + .findByCalendarIdWithSubject(saved.getAcademicCalendar().getId()) .stream() .map(this::toCalendarSubjectDto) .toList(); diff --git a/backend/src/main/java/com/magistr/app/controller/SpecialityController.java b/backend/src/main/java/com/magistr/app/controller/SpecialityController.java index d683998..536fd35 100644 --- a/backend/src/main/java/com/magistr/app/controller/SpecialityController.java +++ b/backend/src/main/java/com/magistr/app/controller/SpecialityController.java @@ -12,7 +12,6 @@ import com.magistr.app.repository.SpecialtiesRepository; import com.magistr.app.repository.SpecialtyProfileRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -36,6 +35,7 @@ public class SpecialityController { } @GetMapping + @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) public List getAllSpecialties(@RequestParam(defaultValue = "false") boolean includeArchived) { logger.info("Получен запрос на получение списка специальностей"); try { @@ -102,9 +102,8 @@ public class SpecialityController { ) ); } catch (Exception e) { - logger.error("Ошибка при создании специальности: {}", e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Map.of("message", "Произошла ошибка при создании специальности " + e.getMessage())); + logger.error("Ошибка при создании специальности", e); + throw e; } } @@ -158,9 +157,8 @@ public class SpecialityController { speciality.getSpecialityCode() )); } catch (Exception e) { - logger.error("Ошибка при обновлении специальности с ID - {}: {}", id, e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Map.of("message", "Произошла ошибка при обновлении специальности " + e.getMessage())); + logger.error("Ошибка при обновлении специальности с ID - {}", id, e); + throw e; } } @@ -194,6 +192,7 @@ public class SpecialityController { } @GetMapping("/profiles") + @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) public List getAllProfiles() { logger.info("Получен запрос на получение всех профилей обучения"); return specialtyProfileRepository.findAll().stream() @@ -204,6 +203,7 @@ public class SpecialityController { } @GetMapping("/{specialtyId}/profiles") + @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) public ResponseEntity getProfiles(@PathVariable Long specialtyId) { if (!specialtiesRepository.existsById(specialtyId)) { return ResponseEntity.notFound().build(); @@ -255,14 +255,8 @@ public class SpecialityController { if (profile == null || !profile.getSpeciality().getId().equals(specialtyId)) { return ResponseEntity.notFound().build(); } - try { - specialtyProfileRepository.delete(profile); - return ResponseEntity.ok(Map.of("message", "Профиль обучения удалён")); - } catch (Exception e) { - logger.error("Ошибка при удалении профиля обучения с ID - {}: {}", profileId, e.getMessage(), e); - return ResponseEntity.badRequest() - .body(Map.of("message", "Нельзя удалить профиль, который используется группами или календарными графиками")); - } + specialtyProfileRepository.delete(profile); + return ResponseEntity.ok(Map.of("message", "Профиль обучения удалён")); } private String validateProfile(Long specialtyId, Long profileId, SpecialtyProfileDto request) { diff --git a/backend/src/main/java/com/magistr/app/controller/SubgroupController.java b/backend/src/main/java/com/magistr/app/controller/SubgroupController.java index 66e75e1..ec99f95 100644 --- a/backend/src/main/java/com/magistr/app/controller/SubgroupController.java +++ b/backend/src/main/java/com/magistr/app/controller/SubgroupController.java @@ -9,7 +9,6 @@ import com.magistr.app.repository.GroupRepository; import com.magistr.app.repository.ScheduleRuleSlotRepository; import com.magistr.app.repository.SubgroupRepository; import com.magistr.app.service.ScheduleGeneratorService; -import org.springframework.dao.DataIntegrityViolationException; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -125,14 +124,10 @@ public class SubgroupController { if (deleteValidationError != null) { return ResponseEntity.badRequest().body(Map.of("message", deleteValidationError)); } - try { - subgroup.archive("Подгруппа архивирована"); - subgroupRepository.save(subgroup); - scheduleGeneratorService.clearCache(); - return ResponseEntity.ok(Map.of("message", "Подгруппа архивирована")); - } catch (DataIntegrityViolationException e) { - return ResponseEntity.badRequest().body(Map.of("message", "Подгруппа используется в расписании")); - } + subgroup.archive("Подгруппа архивирована"); + subgroupRepository.save(subgroup); + scheduleGeneratorService.clearCache(); + return ResponseEntity.ok(Map.of("message", "Подгруппа архивирована")); } private String validate(SubgroupDto request) { diff --git a/backend/src/main/java/com/magistr/app/controller/SubjectController.java b/backend/src/main/java/com/magistr/app/controller/SubjectController.java index 5674bb5..019bb08 100755 --- a/backend/src/main/java/com/magistr/app/controller/SubjectController.java +++ b/backend/src/main/java/com/magistr/app/controller/SubjectController.java @@ -10,7 +10,6 @@ import com.magistr.app.repository.SubjectRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; -import org.springframework.http.HttpStatusCode; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -87,7 +86,7 @@ public class SubjectController { logger.error("Ошибка валидации: {}", errorMessage); return ResponseEntity.badRequest().body(Map.of("message", errorMessage)); } - if (subjectRepository.findByName(request.getName().trim()).isPresent()) { + if (subjectRepository.findByNameIgnoreCase(request.getName().trim()).isPresent()) { String errorMessage = "Дисциплина с таким названием уже существует"; logger.error("Ошибка валидации: {}", errorMessage); return ResponseEntity.badRequest().body(Map.of("message", errorMessage)); @@ -119,10 +118,9 @@ public class SubjectController { subject.getDepartmentId() ) ); - } catch (Exception e){ - logger.error("Ошибка при создании дисциплины: {}", e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Map.of("message", "Произошла ошибка при создании дисциплины " + e.getMessage())); + } catch (Exception e) { + logger.error("Ошибка при создании дисциплины", e); + throw e; } } diff --git a/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java b/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java index c6b0289..e462b66 100644 --- a/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java +++ b/backend/src/main/java/com/magistr/app/controller/TeacherCreationRequestController.java @@ -10,13 +10,12 @@ import com.magistr.app.repository.DepartmentRepository; import com.magistr.app.repository.TeacherCreationRequestRepository; import com.magistr.app.repository.TeacherDepartmentAssignmentRepository; import com.magistr.app.repository.UserRepository; +import com.magistr.app.service.BusinessTimeService; import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -30,17 +29,20 @@ public class TeacherCreationRequestController { private final DepartmentRepository departmentRepository; private final TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository; private final BCryptPasswordEncoder passwordEncoder; + private final BusinessTimeService businessTime; public TeacherCreationRequestController(TeacherCreationRequestRepository teacherCreationRequestRepository, UserRepository userRepository, DepartmentRepository departmentRepository, TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository, - BCryptPasswordEncoder passwordEncoder) { + BCryptPasswordEncoder passwordEncoder, + BusinessTimeService businessTime) { this.teacherCreationRequestRepository = teacherCreationRequestRepository; this.userRepository = userRepository; this.departmentRepository = departmentRepository; this.teacherDepartmentAssignmentRepository = teacherDepartmentAssignmentRepository; this.passwordEncoder = passwordEncoder; + this.businessTime = businessTime; } @GetMapping @@ -98,7 +100,8 @@ public class TeacherCreationRequestController { TeacherDepartmentAssignment assignment = new TeacherDepartmentAssignment(); assignment.setTeacher(teacher); assignment.setDepartment(department); - assignment.setValidFrom(LocalDate.now()); + assignment.setValidFrom(businessTime.today()); + assignment.setCreatedAt(businessTime.now()); assignment.setPrimaryAssignment(true); assignment.setComment("Создан по заявке кафедры #" + request.getId()); assignment.setCreatedBy(AuthContext.currentUserId()); @@ -110,7 +113,7 @@ public class TeacherCreationRequestController { request.setDepartment(department); request.setStatus(TeacherCreationRequestStatus.APPROVED); request.setReviewedBy(AuthContext.currentUserId()); - request.setReviewedAt(LocalDateTime.now()); + request.setReviewedAt(businessTime.now()); request.setReviewComment(trimToNull(review.getReviewComment())); request.setCreatedTeacherId(teacher.getId()); teacherCreationRequestRepository.save(request); @@ -132,7 +135,7 @@ public class TeacherCreationRequestController { } request.setStatus(TeacherCreationRequestStatus.REJECTED); request.setReviewedBy(AuthContext.currentUserId()); - request.setReviewedAt(LocalDateTime.now()); + request.setReviewedAt(businessTime.now()); request.setReviewComment(trimToNull(review == null ? null : review.getReviewComment())); return ResponseEntity.ok(toResponse(teacherCreationRequestRepository.save(request))); } diff --git a/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java b/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java index 4ad3985..a844c86 100755 --- a/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java +++ b/backend/src/main/java/com/magistr/app/controller/TeacherSubjectController.java @@ -11,6 +11,9 @@ import com.magistr.app.model.User; import com.magistr.app.repository.SubjectRepository; import com.magistr.app.repository.TeacherSubjectRepository; import com.magistr.app.repository.UserRepository; +import com.magistr.app.service.TeacherDepartmentService; +import com.magistr.app.service.BusinessTimeService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -25,13 +28,28 @@ public class TeacherSubjectController { private final TeacherSubjectRepository teacherSubjectRepository; private final UserRepository userRepository; private final SubjectRepository subjectRepository; + private final TeacherDepartmentService teacherDepartmentService; + private final BusinessTimeService businessTime; public TeacherSubjectController(TeacherSubjectRepository teacherSubjectRepository, UserRepository userRepository, - SubjectRepository subjectRepository) { + SubjectRepository subjectRepository, + TeacherDepartmentService teacherDepartmentService) { + this(teacherSubjectRepository, userRepository, subjectRepository, + teacherDepartmentService, BusinessTimeService.systemDefault()); + } + + @Autowired + public TeacherSubjectController(TeacherSubjectRepository teacherSubjectRepository, + UserRepository userRepository, + SubjectRepository subjectRepository, + TeacherDepartmentService teacherDepartmentService, + BusinessTimeService businessTime) { this.teacherSubjectRepository = teacherSubjectRepository; this.userRepository = userRepository; this.subjectRepository = subjectRepository; + this.teacherDepartmentService = teacherDepartmentService; + this.businessTime = businessTime; } @GetMapping @@ -111,7 +129,11 @@ public class TeacherSubjectController { return departmentId != null && teacher != null && subject != null - && departmentId.equals(teacher.getDepartmentId()) + && teacherDepartmentService.hasAssignmentAtDate( + teacher.getId(), + departmentId, + businessTime.today() + ) && departmentId.equals(subject.getDepartmentId()); } } diff --git a/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java b/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java index efab2bb..d176e4b 100644 --- a/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java +++ b/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java @@ -11,11 +11,10 @@ import com.magistr.app.model.Role; import com.magistr.app.repository.TimeSlotDateAssignmentRepository; import com.magistr.app.repository.TimeSlotRepository; import com.magistr.app.repository.TimeSlotScopeRepository; -import org.springframework.dao.DataIntegrityViolationException; +import com.magistr.app.service.TimeSlotService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.time.Duration; import java.time.LocalDate; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -35,13 +34,16 @@ public class TimeSlotAdminController { private final TimeSlotRepository timeSlotRepository; private final TimeSlotScopeRepository timeSlotScopeRepository; private final TimeSlotDateAssignmentRepository dateAssignmentRepository; + private final TimeSlotService timeSlotService; public TimeSlotAdminController(TimeSlotRepository timeSlotRepository, TimeSlotScopeRepository timeSlotScopeRepository, - TimeSlotDateAssignmentRepository dateAssignmentRepository) { + TimeSlotDateAssignmentRepository dateAssignmentRepository, + TimeSlotService timeSlotService) { this.timeSlotRepository = timeSlotRepository; this.timeSlotScopeRepository = timeSlotScopeRepository; this.dateAssignmentRepository = dateAssignmentRepository; + this.timeSlotService = timeSlotService; } @GetMapping @@ -151,83 +153,18 @@ public class TimeSlotAdminController { @PostMapping public ResponseEntity create(@RequestBody TimeSlotDto request) { - String validationError = validate(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - if (hasDuplicate(request, null)) { - return ResponseEntity.badRequest().body(Map.of("message", "В выбранной сетке уже есть слот с таким номером пары")); - } - - TimeSlot timeSlot = new TimeSlot(); - apply(timeSlot, request); - return ResponseEntity.ok(toDto(timeSlotRepository.save(timeSlot))); + return ResponseEntity.ok(toDto(timeSlotService.create(request))); } @PutMapping("/{id}") public ResponseEntity update(@PathVariable Long id, @RequestBody TimeSlotDto request) { - TimeSlot timeSlot = timeSlotRepository.findById(id).orElse(null); - if (timeSlot == null) { - return ResponseEntity.notFound().build(); - } - - String validationError = validate(request); - if (validationError != null) { - return ResponseEntity.badRequest().body(Map.of("message", validationError)); - } - if (hasDuplicate(request, id)) { - return ResponseEntity.badRequest().body(Map.of("message", "В выбранной сетке уже есть слот с таким номером пары")); - } - - apply(timeSlot, request); - return ResponseEntity.ok(toDto(timeSlotRepository.save(timeSlot))); + return ResponseEntity.ok(toDto(timeSlotService.update(id, request))); } @DeleteMapping("/{id}") public ResponseEntity delete(@PathVariable Long id) { - if (!timeSlotRepository.existsById(id)) { - return ResponseEntity.notFound().build(); - } - try { - timeSlotRepository.deleteById(id); - return ResponseEntity.ok(Map.of("message", "Временной слот удалён")); - } catch (DataIntegrityViolationException e) { - return ResponseEntity.badRequest().body(Map.of("message", "Нельзя удалить слот, который используется в правилах расписания")); - } - } - - private String validate(TimeSlotDto request) { - if (request.orderNumber() == null || request.orderNumber() <= 0) { - return "Номер пары должен быть больше нуля"; - } - if (request.scopeId() == null || timeSlotScopeRepository.findById(request.scopeId()).isEmpty()) { - return "Выберите сетку времени"; - } - if (request.startTime() == null || request.endTime() == null) { - return "Время начала и окончания обязательно"; - } - if (!request.startTime().isBefore(request.endTime())) { - return "Время начала должно быть раньше времени окончания"; - } - return null; - } - - private void apply(TimeSlot timeSlot, TimeSlotDto request) { - timeSlot.setOrderNumber(request.orderNumber()); - timeSlot.setTimeSlotScope(timeSlotScopeRepository.findById(request.scopeId()) - .orElseThrow(() -> new IllegalArgumentException("Сетка времени не найдена"))); - timeSlot.setStartTime(request.startTime()); - timeSlot.setEndTime(request.endTime()); - int duration = request.durationMinutes() != null && request.durationMinutes() > 0 - ? request.durationMinutes() - : (int) Duration.between(request.startTime(), request.endTime()).toMinutes(); - timeSlot.setDurationMinutes(duration); - } - - private boolean hasDuplicate(TimeSlotDto request, Long currentId) { - return timeSlotRepository.findByTimeSlotScopeIdAndOrderNumber(request.scopeId(), request.orderNumber()) - .filter(existing -> currentId == null || !existing.getId().equals(currentId)) - .isPresent(); + timeSlotService.delete(id); + return ResponseEntity.ok(Map.of("message", "Временной слот удалён")); } private List effectiveSlots(LocalDate date) { diff --git a/backend/src/main/java/com/magistr/app/controller/UserController.java b/backend/src/main/java/com/magistr/app/controller/UserController.java index 9c2ae1a..80a1ff9 100755 --- a/backend/src/main/java/com/magistr/app/controller/UserController.java +++ b/backend/src/main/java/com/magistr/app/controller/UserController.java @@ -14,20 +14,20 @@ import com.magistr.app.model.User; import com.magistr.app.repository.DepartmentRepository; import com.magistr.app.repository.TeacherDepartmentAssignmentRepository; import com.magistr.app.repository.UserRepository; +import com.magistr.app.service.TeacherDepartmentService; +import com.magistr.app.service.BusinessTimeService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Objects; @RestController @RequestMapping("/api/users") @@ -38,16 +38,33 @@ public class UserController { private final UserRepository userRepository; private final DepartmentRepository departmentRepository; private final TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository; + private final TeacherDepartmentService teacherDepartmentService; private final BCryptPasswordEncoder passwordEncoder; + private final BusinessTimeService businessTime; public UserController(UserRepository userRepository, BCryptPasswordEncoder passwordEncoder, DepartmentRepository departmentRepository, - TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository) { + TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository, + TeacherDepartmentService teacherDepartmentService) { + this(userRepository, passwordEncoder, departmentRepository, + teacherDepartmentAssignmentRepository, teacherDepartmentService, + BusinessTimeService.systemDefault()); + } + + @Autowired + public UserController(UserRepository userRepository, + BCryptPasswordEncoder passwordEncoder, + DepartmentRepository departmentRepository, + TeacherDepartmentAssignmentRepository teacherDepartmentAssignmentRepository, + TeacherDepartmentService teacherDepartmentService, + BusinessTimeService businessTime) { this.userRepository = userRepository; this.passwordEncoder = passwordEncoder; this.departmentRepository = departmentRepository; this.teacherDepartmentAssignmentRepository = teacherDepartmentAssignmentRepository; + this.teacherDepartmentService = teacherDepartmentService; + this.businessTime = businessTime; } @GetMapping @@ -82,7 +99,10 @@ public class UserController { .body(Map.of("message", "Недостаточно прав для просмотра преподавателей этой кафедры")); } logger.info("Получен запрос на получение преподавателей для кафедры с ID - {}", departmentId); - List users = teachersForDepartment(departmentId, LocalDate.now()); + List users = teacherDepartmentService.findTeachersForDepartmentAtDate( + departmentId, + businessTime.today() + ); if (users.isEmpty()) { logger.info("Преподаватели для кафедры с ID - {} не найдены", departmentId); @@ -92,7 +112,7 @@ public class UserController { logger.info("Найдено {} преподавателей для кафедры с ID - {}", users.size(), departmentId); return ResponseEntity.ok(users.stream() - .map(this::toUserResponse) + .map(user -> toUserResponse(user, departmentId)) .toList()); } @@ -161,7 +181,7 @@ public class UserController { TeacherDepartmentAssignment assignment = new TeacherDepartmentAssignment(); assignment.setTeacher(user); assignment.setDepartment(requestedDepartment); - assignment.setValidFrom(LocalDate.now()); + assignment.setValidFrom(businessTime.today()); assignment.setPrimaryAssignment(true); assignment.setComment("Начальная кафедра при создании пользователя"); assignment.setCreatedBy(AuthContext.currentUserId()); @@ -180,7 +200,7 @@ public class UserController { logger.info("Пользователь с ID - {} не найден", id); return ResponseEntity.notFound().build(); } - user.archive("Пользователь архивирован"); + user.archive("Пользователь архивирован", businessTime.today(), businessTime.now()); userRepository.save(user); logger.info("Пользователь с ID - {} успешно архивирован", id); return ResponseEntity.ok(Map.of("message", "Пользователь архивирован")); @@ -206,7 +226,11 @@ public class UserController { var currentUser = AuthContext.getCurrentUser(); if (currentUser != null && currentUser.role() == Role.DEPARTMENT - && !teacherDepartmentAssignmentRepository.existsActiveAssignment(id, currentUser.departmentId(), LocalDate.now())) { + && !teacherDepartmentService.hasAssignmentAtDate( + id, + currentUser.departmentId(), + businessTime.today() + )) { return ResponseEntity.status(HttpStatus.FORBIDDEN) .body(Map.of("message", "Недостаточно прав для просмотра истории этого преподавателя")); } @@ -216,46 +240,13 @@ public class UserController { } @PostMapping("/{id}/department-transfer") - @Transactional public ResponseEntity transferTeacher(@PathVariable Long id, @RequestBody DepartmentTransferRequest request) { - User teacher = userRepository.findById(id).orElse(null); - if (teacher == null || teacher.getRole() != Role.TEACHER) { - return ResponseEntity.badRequest().body(Map.of("message", "Преподаватель не найден")); - } - if (teacher.isArchivedRecord()) { - return ResponseEntity.badRequest().body(Map.of("message", "Архивного преподавателя нельзя перевести")); - } - if (request.departmentId() == null) { - return ResponseEntity.badRequest().body(Map.of("message", "Кафедра обязательна")); - } - Department department = departmentRepository.findById(request.departmentId()).orElse(null); - if (department == null || department.isArchivedRecord()) { - return ResponseEntity.badRequest().body(Map.of("message", "Активная кафедра не найдена")); - } - LocalDate validFrom = request.validFrom() == null ? LocalDate.now() : request.validFrom(); - - teacherDepartmentAssignmentRepository.findOpenPrimaryByTeacherId(id) - .ifPresent(current -> { - if (current.getValidFrom().isBefore(validFrom)) { - current.setValidTo(validFrom.minusDays(1)); - teacherDepartmentAssignmentRepository.save(current); - } else { - teacherDepartmentAssignmentRepository.delete(current); - } - }); - - TeacherDepartmentAssignment assignment = new TeacherDepartmentAssignment(); - assignment.setTeacher(teacher); - assignment.setDepartment(department); - assignment.setValidFrom(validFrom); - assignment.setPrimaryAssignment(true); - assignment.setComment(request.comment()); - assignment.setCreatedBy(AuthContext.currentUserId()); - teacherDepartmentAssignmentRepository.save(assignment); - - teacher.setDepartmentId(department.getId()); - userRepository.save(teacher); - + TeacherDepartmentAssignment assignment = teacherDepartmentService.transferTeacher( + id, + request, + businessTime.today(), + AuthContext.currentUserId() + ); return ResponseEntity.ok(toAssignmentDto(assignment)); } @@ -268,16 +259,25 @@ public class UserController { return ResponseEntity.status(HttpStatus.FORBIDDEN) .body(Map.of("message", "Недостаточно прав для просмотра преподавателей этой кафедры")); } - LocalDate effectiveDate = date == null ? LocalDate.now() : date; - return ResponseEntity.ok(teachersForDepartment(departmentId, effectiveDate).stream() - .map(this::toUserResponse) + LocalDate effectiveDate = date == null ? businessTime.today() : date; + return ResponseEntity.ok(teacherDepartmentService + .findTeachersForDepartmentAtDate(departmentId, effectiveDate).stream() + .map(user -> toUserResponse(user, departmentId)) .toList()); } private UserResponse toUserResponse(User user) { - String departmentName = user.getDepartmentId() == null + Long departmentId = user.getRole() == Role.TEACHER + ? teacherDepartmentService.findPrimaryDepartmentIdAtDate(user.getId(), businessTime.today()) + .orElse(user.getDepartmentId()) + : user.getDepartmentId(); + return toUserResponse(user, departmentId); + } + + private UserResponse toUserResponse(User user, Long departmentId) { + String departmentName = departmentId == null ? null - : departmentRepository.findById(user.getDepartmentId()) + : departmentRepository.findById(departmentId) .map(Department::getDepartmentName) .orElse("Неизвестно"); UserResponse response = new UserResponse( @@ -288,7 +288,7 @@ public class UserController { user.getJobTitle(), departmentName ); - response.setDepartmentId(user.getDepartmentId()); + response.setDepartmentId(departmentId); response.setStatus(user.getStatus()); return response; } @@ -307,23 +307,6 @@ public class UserController { ); } - private List teachersForDepartment(Long departmentId, LocalDate date) { - Map teachersById = new LinkedHashMap<>(); - List assignments = teacherDepartmentAssignmentRepository.findDepartmentTeachersAtDate(departmentId, date); - if (assignments != null) { - assignments.stream() - .map(TeacherDepartmentAssignment::getTeacher) - .filter(Objects::nonNull) - .filter(User::isActiveRecord) - .forEach(teacher -> teachersById.put(teacher.getId(), teacher)); - } - List directTeachers = userRepository.findByRoleAndDepartmentIdAndStatusNot(Role.TEACHER, departmentId, LifecycleEntity.STATUS_ARCHIVED); - if (directTeachers != null) { - directTeachers.forEach(teacher -> teachersById.putIfAbsent(teacher.getId(), teacher)); - } - return List.copyOf(teachersById.values()); - } - private boolean canAccessDepartment(Long departmentId) { var currentUser = AuthContext.getCurrentUser(); return currentUser == null diff --git a/backend/src/main/java/com/magistr/app/controller/WorkloadController.java b/backend/src/main/java/com/magistr/app/controller/WorkloadController.java index 72c83fe..8246c7e 100644 --- a/backend/src/main/java/com/magistr/app/controller/WorkloadController.java +++ b/backend/src/main/java/com/magistr/app/controller/WorkloadController.java @@ -1,5 +1,6 @@ package com.magistr.app.controller; +import com.magistr.app.config.auth.AuthContext; import com.magistr.app.config.auth.RequireRoles; import com.magistr.app.dto.ClassroomResponse; import com.magistr.app.dto.RenderedLessonDto; @@ -7,11 +8,13 @@ import com.magistr.app.dto.WorkloadSummaryDto; import com.magistr.app.model.*; import com.magistr.app.repository.ClassroomRepository; import com.magistr.app.repository.DepartmentRepository; -import com.magistr.app.repository.UserRepository; import com.magistr.app.service.ScheduleQueryService; +import com.magistr.app.service.TeacherDepartmentService; import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.server.ResponseStatusException; import java.time.LocalDate; import java.util.*; @@ -27,17 +30,17 @@ public class WorkloadController { private final ScheduleQueryService scheduleQueryService; private final ClassroomRepository classroomRepository; - private final UserRepository userRepository; private final DepartmentRepository departmentRepository; + private final TeacherDepartmentService teacherDepartmentService; public WorkloadController(ScheduleQueryService scheduleQueryService, ClassroomRepository classroomRepository, - UserRepository userRepository, - DepartmentRepository departmentRepository) { + DepartmentRepository departmentRepository, + TeacherDepartmentService teacherDepartmentService) { this.scheduleQueryService = scheduleQueryService; this.classroomRepository = classroomRepository; - this.userRepository = userRepository; this.departmentRepository = departmentRepository; + this.teacherDepartmentService = teacherDepartmentService; } @GetMapping("/teachers") @@ -46,19 +49,11 @@ public class WorkloadController { @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate, @RequestParam(required = false) Long departmentId ) { - List lessons = scheduleQueryService.search(null, null, null, departmentId, - null, null, null, null, startDate, endDate); - Map teachersById = userRepository.findAllById(lessons.stream() - .map(RenderedLessonDto::teacherId) - .filter(Objects::nonNull) - .collect(Collectors.toSet())) - .stream() - .collect(Collectors.toMap(User::getId, Function.identity())); - return summarize(lessons, RenderedLessonDto::teacherId, RenderedLessonDto::teacherName, - teacherId -> { - User teacher = teachersById.get(teacherId); - return teacher == null ? null : teacher.getDepartmentId(); - }); + Long effectiveDepartmentId = effectiveDepartmentId(departmentId); + List lessons = scheduleQueryService.searchForAggregation( + effectiveDepartmentId, null, startDate, endDate + ); + return summarizeTeacherWorkload(lessons, startDate, endDate); } @GetMapping("/classrooms") @@ -67,8 +62,10 @@ public class WorkloadController { @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate, @RequestParam(required = false) Long departmentId ) { - List lessons = scheduleQueryService.search(null, null, null, departmentId, - null, null, null, null, startDate, endDate); + Long effectiveDepartmentId = effectiveDepartmentId(departmentId); + List lessons = scheduleQueryService.searchForAggregation( + effectiveDepartmentId, null, startDate, endDate + ); return summarize(lessons, RenderedLessonDto::classroomId, RenderedLessonDto::classroomName, ignored -> null); } @@ -78,22 +75,20 @@ public class WorkloadController { @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate, @RequestParam(required = false) Long departmentId ) { - List lessons = scheduleQueryService.search(null, null, null, departmentId, - null, null, null, null, startDate, endDate); + Long effectiveDepartmentId = effectiveDepartmentId(departmentId); + List lessons = scheduleQueryService.searchForAggregation( + effectiveDepartmentId, null, startDate, endDate + ); Map departments = departmentRepository.findAll().stream() .collect(Collectors.toMap(Department::getId, Department::getDepartmentName)); - Map teachersById = userRepository.findAllById(lessons.stream() - .map(RenderedLessonDto::teacherId) - .filter(Objects::nonNull) - .collect(Collectors.toSet())) - .stream() - .collect(Collectors.toMap(User::getId, Function.identity())); + Map> assignmentsByTeacher = + assignmentsByTeacher(lessons, startDate, endDate); Map> byDepartment = lessons.stream() - .collect(Collectors.groupingBy(lesson -> { - User teacher = teachersById.get(lesson.teacherId()); - return teacher == null ? 0L : teacher.getDepartmentId(); - })); + .collect(Collectors.groupingBy(lesson -> departmentIdAtLesson( + lesson, + assignmentsByTeacher + ).orElse(0L))); return byDepartment.entrySet().stream() .map(entry -> summary(entry.getKey(), departments.getOrDefault(entry.getKey(), "Кафедра не указана"), entry.getKey(), entry.getValue())) @@ -101,14 +96,76 @@ public class WorkloadController { .toList(); } + private List summarizeTeacherWorkload(List lessons, + LocalDate startDate, + LocalDate endDate) { + Map> assignmentsByTeacher = + assignmentsByTeacher(lessons, startDate, endDate); + Map> grouped = lessons.stream() + .filter(lesson -> lesson.teacherId() != null) + .collect(Collectors.groupingBy( + lesson -> new TeacherDepartmentKey( + lesson.teacherId(), + departmentIdAtLesson(lesson, assignmentsByTeacher).orElse(null) + ), + LinkedHashMap::new, + Collectors.toList() + )); + return grouped.entrySet().stream() + .map(entry -> summary( + entry.getKey().teacherId(), + entry.getValue().get(0).teacherName(), + entry.getKey().departmentId(), + entry.getValue() + )) + .sorted(Comparator + .comparing(WorkloadSummaryDto::name, Comparator.nullsLast(String::compareTo)) + .thenComparing( + WorkloadSummaryDto::departmentId, + Comparator.nullsLast(Long::compareTo) + )) + .toList(); + } + + private Map> assignmentsByTeacher( + List lessons, + LocalDate startDate, + LocalDate endDate + ) { + Set teacherIds = lessons.stream() + .map(RenderedLessonDto::teacherId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + return teacherDepartmentService.findAssignmentsForTeachersBetween( + teacherIds, + startDate, + endDate + ); + } + + private Optional departmentIdAtLesson( + RenderedLessonDto lesson, + Map> assignmentsByTeacher + ) { + if (lesson.teacherId() == null || lesson.date() == null) { + return Optional.empty(); + } + return teacherDepartmentService.resolveDepartmentIdAtDate( + assignmentsByTeacher.getOrDefault(lesson.teacherId(), List.of()), + lesson.date() + ); + } + @GetMapping("/time-slots") public List timeSlotWorkload( @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate, @RequestParam(required = false) Long departmentId ) { - List lessons = scheduleQueryService.search(null, null, null, departmentId, - null, null, null, null, startDate, endDate); + Long effectiveDepartmentId = effectiveDepartmentId(departmentId); + List lessons = scheduleQueryService.searchForAggregation( + effectiveDepartmentId, null, startDate, endDate + ); return summarize(lessons, RenderedLessonDto::timeSlotId, lesson -> lesson.timeSlotOrder() == null ? "Пара" @@ -121,8 +178,10 @@ public class WorkloadController { @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date, @RequestParam Long timeSlotId ) { - Set busyClassroomIds = scheduleQueryService.search(null, null, null, null, - null, null, timeSlotId, null, date, date) + Long effectiveDepartmentId = effectiveDepartmentId(null); + Set busyClassroomIds = scheduleQueryService.searchForAggregation( + effectiveDepartmentId, timeSlotId, date, date + ) .stream() .map(RenderedLessonDto::classroomId) .filter(Objects::nonNull) @@ -166,6 +225,9 @@ public class WorkloadController { if (departmentId == null) { return null; } + if (departmentId == 0L) { + return "Кафедра не указана"; + } return departmentRepository.findById(departmentId) .map(Department::getDepartmentName) .orElse("Кафедра не найдена"); @@ -185,4 +247,35 @@ public class WorkloadController { new ArrayList<>(classroom.getEquipments()) ); } + + private Long effectiveDepartmentId(Long requestedDepartmentId) { + var currentUser = AuthContext.getCurrentUser(); + if (currentUser == null) { + throw new ResponseStatusException( + HttpStatus.UNAUTHORIZED, + "Не удалось определить текущего пользователя" + ); + } + if (currentUser.role() != Role.DEPARTMENT) { + return requestedDepartmentId; + } + + Long ownDepartmentId = currentUser.departmentId(); + if (ownDepartmentId == null) { + throw new ResponseStatusException( + HttpStatus.FORBIDDEN, + "Для пользователя кафедры не указана кафедра" + ); + } + if (requestedDepartmentId != null && !Objects.equals(requestedDepartmentId, ownDepartmentId)) { + throw new ResponseStatusException( + HttpStatus.FORBIDDEN, + "Нельзя просматривать нагрузку другой кафедры" + ); + } + return ownDepartmentId; + } + + private record TeacherDepartmentKey(Long teacherId, Long departmentId) { + } } diff --git a/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java b/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java index a587057..28b4e74 100755 --- a/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java +++ b/backend/src/main/java/com/magistr/app/dto/ClassroomResponse.java @@ -1,7 +1,7 @@ package com.magistr.app.dto; import com.magistr.app.model.Equipment; -import java.time.LocalDateTime; +import java.time.Instant; import java.util.List; public class ClassroomResponse { @@ -12,7 +12,7 @@ public class ClassroomResponse { private Integer floor; private Boolean isAvailable; private String status; - private LocalDateTime archivedAt; + private Instant archivedAt; private String archiveReason; private List equipments; @@ -25,7 +25,7 @@ public class ClassroomResponse { } public ClassroomResponse(Long id, String name, Integer capacity, String building, Integer floor, - Boolean isAvailable, String status, LocalDateTime archivedAt, + Boolean isAvailable, String status, Instant archivedAt, String archiveReason, List equipments) { this.id = id; this.name = name; @@ -95,11 +95,11 @@ public class ClassroomResponse { this.status = status; } - public LocalDateTime getArchivedAt() { + public Instant getArchivedAt() { return archivedAt; } - public void setArchivedAt(LocalDateTime archivedAt) { + public void setArchivedAt(Instant archivedAt) { this.archivedAt = archivedAt; } diff --git a/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java b/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java index 86a6f5e..73c0c05 100644 --- a/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java +++ b/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java @@ -1,7 +1,7 @@ package com.magistr.app.dto; import java.time.LocalDate; -import java.time.LocalDateTime; +import java.time.Instant; public record ScheduleOverrideDto( Long id, @@ -14,6 +14,6 @@ public record ScheduleOverrideDto( String newLessonFormat, String comment, Long createdBy, - LocalDateTime createdAt + Instant createdAt ) { } diff --git a/backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java b/backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java index 73a3777..7060895 100644 --- a/backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java +++ b/backend/src/main/java/com/magistr/app/dto/SubjectCommentDto.java @@ -1,6 +1,6 @@ package com.magistr.app.dto; -import java.time.LocalDateTime; +import java.time.Instant; public record SubjectCommentDto( Long id, @@ -8,6 +8,6 @@ public record SubjectCommentDto( Long authorId, String authorName, String comment, - LocalDateTime createdAt + Instant createdAt ) { } diff --git a/backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java b/backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java index f6d921a..a8df6e0 100644 --- a/backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java +++ b/backend/src/main/java/com/magistr/app/dto/TeacherCreationRequestResponse.java @@ -1,6 +1,6 @@ package com.magistr.app.dto; -import java.time.LocalDateTime; +import java.time.Instant; public record TeacherCreationRequestResponse( Long id, @@ -12,9 +12,9 @@ public record TeacherCreationRequestResponse( String comment, String status, Long requestedBy, - LocalDateTime createdAt, + Instant createdAt, Long reviewedBy, - LocalDateTime reviewedAt, + Instant reviewedAt, String reviewComment, Long createdTeacherId ) { diff --git a/backend/src/main/java/com/magistr/app/model/AuthLoginAttemptAudit.java b/backend/src/main/java/com/magistr/app/model/AuthLoginAttemptAudit.java new file mode 100644 index 0000000..ef5630b --- /dev/null +++ b/backend/src/main/java/com/magistr/app/model/AuthLoginAttemptAudit.java @@ -0,0 +1,78 @@ +package com.magistr.app.model; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +import java.time.Instant; + +@Entity +@Table(name = "auth_login_attempt_audit") +public class AuthLoginAttemptAudit { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, length = 100) + private String tenant; + + @Column(name = "username_normalized", nullable = false, length = 100) + private String usernameNormalized; + + @Column(name = "client_ip", nullable = false, length = 64) + private String clientIp; + + @Column(nullable = false, length = 20) + private String outcome; + + @Column(name = "occurred_at", nullable = false) + private Instant occurredAt; + + @Column(name = "retry_after_seconds") + private Integer retryAfterSeconds; + + public AuthLoginAttemptAudit() { + } + + public AuthLoginAttemptAudit(String tenant, + String usernameNormalized, + String clientIp, + String outcome, + Instant occurredAt, + Integer retryAfterSeconds) { + this.tenant = tenant; + this.usernameNormalized = usernameNormalized; + this.clientIp = clientIp; + this.outcome = outcome; + this.occurredAt = occurredAt; + this.retryAfterSeconds = retryAfterSeconds; + } + + public String getTenant() { + return tenant; + } + + public String getUsernameNormalized() { + return usernameNormalized; + } + + public String getClientIp() { + return clientIp; + } + + public String getOutcome() { + return outcome; + } + + public Instant getOccurredAt() { + return occurredAt; + } + + public Integer getRetryAfterSeconds() { + return retryAfterSeconds; + } +} diff --git a/backend/src/main/java/com/magistr/app/model/AuthLoginRateLimit.java b/backend/src/main/java/com/magistr/app/model/AuthLoginRateLimit.java new file mode 100644 index 0000000..6a7564f --- /dev/null +++ b/backend/src/main/java/com/magistr/app/model/AuthLoginRateLimit.java @@ -0,0 +1,83 @@ +package com.magistr.app.model; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +import java.time.Instant; + +@Entity +@Table(name = "auth_login_rate_limits") +public class AuthLoginRateLimit { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, length = 100) + private String tenant; + + @Column(name = "username_normalized", nullable = false, length = 100) + private String usernameNormalized; + + @Column(name = "client_ip", nullable = false, length = 64) + private String clientIp; + + @Column(name = "failure_count", nullable = false) + private int failureCount; + + @Column(name = "window_started_at", nullable = false) + private Instant windowStartedAt; + + @Column(name = "last_failure_at") + private Instant lastFailureAt; + + @Column(name = "blocked_until") + private Instant blockedUntil; + + @Column(name = "updated_at", nullable = false) + private Instant updatedAt; + + public Long getId() { + return id; + } + + public int getFailureCount() { + return failureCount; + } + + public void setFailureCount(int failureCount) { + this.failureCount = failureCount; + } + + public Instant getWindowStartedAt() { + return windowStartedAt; + } + + public void setWindowStartedAt(Instant windowStartedAt) { + this.windowStartedAt = windowStartedAt; + } + + public Instant getLastFailureAt() { + return lastFailureAt; + } + + public void setLastFailureAt(Instant lastFailureAt) { + this.lastFailureAt = lastFailureAt; + } + + public Instant getBlockedUntil() { + return blockedUntil; + } + + public void setBlockedUntil(Instant blockedUntil) { + this.blockedUntil = blockedUntil; + } + + public void setUpdatedAt(Instant updatedAt) { + this.updatedAt = updatedAt; + } +} diff --git a/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java b/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java index ca4137e..a84d883 100644 --- a/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java +++ b/backend/src/main/java/com/magistr/app/model/AuthRefreshToken.java @@ -10,7 +10,7 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; -import java.time.LocalDateTime; +import java.time.Instant; @Entity @Table(name = "auth_refresh_tokens") @@ -31,13 +31,13 @@ public class AuthRefreshToken { private String tokenHash; @Column(name = "issued_at", nullable = false) - private LocalDateTime issuedAt; + private Instant issuedAt; @Column(name = "expires_at", nullable = false) - private LocalDateTime expiresAt; + private Instant expiresAt; @Column(name = "revoked_at") - private LocalDateTime revokedAt; + private Instant revokedAt; @Column(name = "rotated_to_token_hash", length = 64) private String rotatedToTokenHash; @@ -80,27 +80,27 @@ public class AuthRefreshToken { this.tokenHash = tokenHash; } - public LocalDateTime getIssuedAt() { + public Instant getIssuedAt() { return issuedAt; } - public void setIssuedAt(LocalDateTime issuedAt) { + public void setIssuedAt(Instant issuedAt) { this.issuedAt = issuedAt; } - public LocalDateTime getExpiresAt() { + public Instant getExpiresAt() { return expiresAt; } - public void setExpiresAt(LocalDateTime expiresAt) { + public void setExpiresAt(Instant expiresAt) { this.expiresAt = expiresAt; } - public LocalDateTime getRevokedAt() { + public Instant getRevokedAt() { return revokedAt; } - public void setRevokedAt(LocalDateTime revokedAt) { + public void setRevokedAt(Instant revokedAt) { this.revokedAt = revokedAt; } @@ -128,7 +128,7 @@ public class AuthRefreshToken { this.ipAddress = ipAddress; } - public boolean isActive(LocalDateTime now) { + public boolean isActive(Instant now) { return revokedAt == null && expiresAt.isAfter(now); } } diff --git a/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java b/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java index 8de4e61..7fa22d7 100644 --- a/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java +++ b/backend/src/main/java/com/magistr/app/model/LifecycleEntity.java @@ -5,7 +5,8 @@ import jakarta.persistence.Column; import jakarta.persistence.MappedSuperclass; import java.time.LocalDate; -import java.time.LocalDateTime; +import java.time.Instant; +import java.time.ZoneId; @MappedSuperclass public abstract class LifecycleEntity { @@ -23,7 +24,7 @@ public abstract class LifecycleEntity { private LocalDate activeTo; @Column(name = "archived_at") - private LocalDateTime archivedAt; + private Instant archivedAt; @Column(name = "archive_reason") private String archiveReason; @@ -52,11 +53,11 @@ public abstract class LifecycleEntity { this.activeTo = activeTo; } - public LocalDateTime getArchivedAt() { + public Instant getArchivedAt() { return archivedAt; } - public void setArchivedAt(LocalDateTime archivedAt) { + public void setArchivedAt(Instant archivedAt) { this.archivedAt = archivedAt; } @@ -92,9 +93,13 @@ public abstract class LifecycleEntity { } public void archive(String reason) { + archive(reason, LocalDate.now(ZoneId.of("Europe/Moscow")), Instant.now()); + } + + public void archive(String reason, LocalDate businessDate, Instant archiveMoment) { status = STATUS_ARCHIVED; - archivedAt = LocalDateTime.now(); - activeTo = LocalDate.now(); + archivedAt = archiveMoment; + activeTo = businessDate; archiveReason = reason == null || reason.isBlank() ? "Архивировано пользователем" : reason.trim(); } diff --git a/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java b/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java index 85c9bbb..b914817 100644 --- a/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java +++ b/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java @@ -3,7 +3,7 @@ package com.magistr.app.model; import jakarta.persistence.*; import java.time.LocalDate; -import java.time.LocalDateTime; +import java.time.Instant; @Entity @Table(name = "schedule_overrides") @@ -45,7 +45,7 @@ public class ScheduleOverride { private Long createdBy; @Column(name = "created_at", nullable = false) - private LocalDateTime createdAt = LocalDateTime.now(); + private Instant createdAt = Instant.now(); public Long getId() { return id; @@ -123,11 +123,11 @@ public class ScheduleOverride { this.createdBy = createdBy; } - public LocalDateTime getCreatedAt() { + public Instant getCreatedAt() { return createdAt; } - public void setCreatedAt(LocalDateTime createdAt) { + public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } } diff --git a/backend/src/main/java/com/magistr/app/model/Subject.java b/backend/src/main/java/com/magistr/app/model/Subject.java index 10e1751..c63db8e 100755 --- a/backend/src/main/java/com/magistr/app/model/Subject.java +++ b/backend/src/main/java/com/magistr/app/model/Subject.java @@ -10,7 +10,7 @@ public class Subject extends LifecycleEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(unique = true, nullable = false, length = 200) + @Column(nullable = false, length = 200) private String name; @Column(name = "code") diff --git a/backend/src/main/java/com/magistr/app/model/SubjectComment.java b/backend/src/main/java/com/magistr/app/model/SubjectComment.java index b1b8d38..a8f180c 100644 --- a/backend/src/main/java/com/magistr/app/model/SubjectComment.java +++ b/backend/src/main/java/com/magistr/app/model/SubjectComment.java @@ -2,7 +2,7 @@ package com.magistr.app.model; import jakarta.persistence.*; -import java.time.LocalDateTime; +import java.time.Instant; @Entity @Table(name = "subject_comments") @@ -24,7 +24,7 @@ public class SubjectComment { private String comment; @Column(name = "created_at", nullable = false) - private LocalDateTime createdAt = LocalDateTime.now(); + private Instant createdAt = Instant.now(); public Long getId() { return id; @@ -54,11 +54,11 @@ public class SubjectComment { this.comment = comment; } - public LocalDateTime getCreatedAt() { + public Instant getCreatedAt() { return createdAt; } - public void setCreatedAt(LocalDateTime createdAt) { + public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } } diff --git a/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java b/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java index 3f4cda5..3dceb26 100644 --- a/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java +++ b/backend/src/main/java/com/magistr/app/model/TeacherCreationRequest.java @@ -2,7 +2,7 @@ package com.magistr.app.model; import jakarta.persistence.*; -import java.time.LocalDateTime; +import java.time.Instant; @Entity @Table(name = "teacher_creation_requests") @@ -36,16 +36,16 @@ public class TeacherCreationRequest { private Long requestedBy; @Column(name = "created_at", nullable = false) - private LocalDateTime createdAt = LocalDateTime.now(); + private Instant createdAt = Instant.now(); @Column(name = "updated_at", nullable = false) - private LocalDateTime updatedAt = LocalDateTime.now(); + private Instant updatedAt = Instant.now(); @Column(name = "reviewed_by") private Long reviewedBy; @Column(name = "reviewed_at") - private LocalDateTime reviewedAt; + private Instant reviewedAt; @Column(name = "review_comment", columnDefinition = "TEXT") private String reviewComment; @@ -55,7 +55,7 @@ public class TeacherCreationRequest { @PreUpdate public void touch() { - updatedAt = LocalDateTime.now(); + updatedAt = Instant.now(); } public Long getId() { @@ -118,19 +118,19 @@ public class TeacherCreationRequest { this.requestedBy = requestedBy; } - public LocalDateTime getCreatedAt() { + public Instant getCreatedAt() { return createdAt; } - public void setCreatedAt(LocalDateTime createdAt) { + public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } - public LocalDateTime getUpdatedAt() { + public Instant getUpdatedAt() { return updatedAt; } - public void setUpdatedAt(LocalDateTime updatedAt) { + public void setUpdatedAt(Instant updatedAt) { this.updatedAt = updatedAt; } @@ -142,11 +142,11 @@ public class TeacherCreationRequest { this.reviewedBy = reviewedBy; } - public LocalDateTime getReviewedAt() { + public Instant getReviewedAt() { return reviewedAt; } - public void setReviewedAt(LocalDateTime reviewedAt) { + public void setReviewedAt(Instant reviewedAt) { this.reviewedAt = reviewedAt; } diff --git a/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java b/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java index 737d249..ab03443 100644 --- a/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java +++ b/backend/src/main/java/com/magistr/app/model/TeacherDepartmentAssignment.java @@ -3,7 +3,7 @@ package com.magistr.app.model; import jakarta.persistence.*; import java.time.LocalDate; -import java.time.LocalDateTime; +import java.time.Instant; @Entity @Table(name = "teacher_department_assignments") @@ -34,7 +34,7 @@ public class TeacherDepartmentAssignment { private String comment; @Column(name = "created_at", nullable = false) - private LocalDateTime createdAt = LocalDateTime.now(); + private Instant createdAt = Instant.now(); @Column(name = "created_by") private Long createdBy; @@ -91,11 +91,11 @@ public class TeacherDepartmentAssignment { this.comment = comment; } - public LocalDateTime getCreatedAt() { + public Instant getCreatedAt() { return createdAt; } - public void setCreatedAt(LocalDateTime createdAt) { + public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } diff --git a/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java b/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java index 761e1be..03f062e 100644 --- a/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/AcademicCalendarDayRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.time.LocalDate; +import java.util.Collection; import java.util.List; import java.util.Optional; @@ -35,8 +36,35 @@ public interface AcademicCalendarDayRepository extends JpaRepository findForScheduleBatch( + @Param("calendarIds") Collection calendarIds, + @Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate + ); + boolean existsByActivityTypeId(Long activityTypeId); + boolean existsByAcademicCalendarIdAndCourseNumberGreaterThan(Long calendarId, Integer courseNumber); + + @Query(""" + select case when count(day) > 0 then true else false end + from AcademicCalendarDay day + where day.academicCalendar.id = :calendarId + and (day.date < :startDate or day.date > :endDate) + """) + boolean existsOutsideDateRange(@Param("calendarId") Long calendarId, + @Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate); + @Modifying @Query("delete from AcademicCalendarDay day where day.academicCalendar.id = :calendarId") void deleteByCalendarId(@Param("calendarId") Long calendarId); diff --git a/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java b/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java index fdb8ec8..51ee39d 100644 --- a/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/AcademicCalendarRepository.java @@ -1,7 +1,9 @@ package com.magistr.app.repository; import com.magistr.app.model.AcademicCalendar; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -40,4 +42,16 @@ public interface AcademicCalendarRepository extends JpaRepository findByIdWithDetails(@Param("id") Long id); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query(""" + select calendar + from AcademicCalendar calendar + join fetch calendar.academicYear + join fetch calendar.speciality + join fetch calendar.specialtyProfile + join fetch calendar.studyForm + where calendar.id = :id + """) + Optional findByIdWithDetailsForUpdate(@Param("id") Long id); } diff --git a/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java b/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java index 3b40083..def3776 100644 --- a/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/AcademicCalendarSubjectRepository.java @@ -31,4 +31,6 @@ public interface AcademicCalendarSubjectRepository extends JpaRepository findByCalendarIdInWithSubject(@Param("calendarIds") Collection calendarIds); void deleteByAcademicCalendar_Id(Long calendarId); + + boolean existsByAcademicCalendarIdAndSemesterNumberGreaterThan(Long calendarId, Integer semesterNumber); } diff --git a/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java b/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java index ffc3846..f04456f 100644 --- a/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/AcademicYearRepository.java @@ -1,11 +1,44 @@ package com.magistr.app.repository; import com.magistr.app.model.AcademicYear; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import java.time.LocalDate; import java.util.Optional; public interface AcademicYearRepository extends JpaRepository { Optional findByTitle(String title); + + boolean existsByTitle(String title); + + boolean existsByTitleAndIdNot(String title, Long id); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select year from AcademicYear year where year.id = :id") + Optional findByIdForUpdate(@Param("id") Long id); + + @Query(""" + select case when count(year) > 0 then true else false end + from AcademicYear year + where year.startDate <= :endDate + and year.endDate >= :startDate + """) + boolean existsOverlapping(@Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate); + + @Query(""" + select case when count(year) > 0 then true else false end + from AcademicYear year + where year.id <> :excludedId + and year.startDate <= :endDate + and year.endDate >= :startDate + """) + boolean existsOverlappingExcluding(@Param("excludedId") Long excludedId, + @Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate); } diff --git a/backend/src/main/java/com/magistr/app/repository/AuthLoginAttemptAuditRepository.java b/backend/src/main/java/com/magistr/app/repository/AuthLoginAttemptAuditRepository.java new file mode 100644 index 0000000..fc311d9 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/repository/AuthLoginAttemptAuditRepository.java @@ -0,0 +1,31 @@ +package com.magistr.app.repository; + +import com.magistr.app.model.AuthLoginAttemptAudit; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.transaction.annotation.Transactional; + +import java.time.Instant; + +public interface AuthLoginAttemptAuditRepository extends JpaRepository { + + @Modifying + @Transactional + @Query(value = """ + WITH cleanup_candidates AS ( + SELECT id + FROM auth_login_attempt_audit + WHERE occurred_at < :cutoff + ORDER BY occurred_at, id + FOR UPDATE SKIP LOCKED + LIMIT :batchSize + ) + DELETE FROM auth_login_attempt_audit audit + USING cleanup_candidates candidate + WHERE audit.id = candidate.id + """, nativeQuery = true) + int deleteCleanupBatch(@Param("cutoff") Instant cutoff, + @Param("batchSize") int batchSize); +} diff --git a/backend/src/main/java/com/magistr/app/repository/AuthLoginRateLimitRepository.java b/backend/src/main/java/com/magistr/app/repository/AuthLoginRateLimitRepository.java new file mode 100644 index 0000000..2a3cef3 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/repository/AuthLoginRateLimitRepository.java @@ -0,0 +1,61 @@ +package com.magistr.app.repository; + +import com.magistr.app.model.AuthLoginRateLimit; +import jakarta.persistence.LockModeType; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.transaction.annotation.Transactional; + +import java.time.Instant; +import java.util.Optional; + +public interface AuthLoginRateLimitRepository extends JpaRepository { + + @Modifying(flushAutomatically = true) + @Query(value = """ + INSERT INTO auth_login_rate_limits ( + tenant, username_normalized, client_ip, failure_count, + window_started_at, updated_at + ) VALUES (:tenant, :username, :clientIp, 0, :now, :now) + ON CONFLICT (tenant, username_normalized, client_ip) DO NOTHING + """, nativeQuery = true) + int ensureExists(@Param("tenant") String tenant, + @Param("username") String username, + @Param("clientIp") String clientIp, + @Param("now") Instant now); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query(""" + SELECT limit + FROM AuthLoginRateLimit limit + WHERE limit.tenant = :tenant + AND limit.usernameNormalized = :username + AND limit.clientIp = :clientIp + """) + Optional findForUpdate(@Param("tenant") String tenant, + @Param("username") String username, + @Param("clientIp") String clientIp); + + @Modifying + @Transactional + @Query(value = """ + WITH cleanup_candidates AS ( + SELECT id + FROM auth_login_rate_limits + WHERE updated_at < :cutoff + AND (blocked_until IS NULL OR blocked_until <= :now) + ORDER BY updated_at, id + FOR UPDATE SKIP LOCKED + LIMIT :batchSize + ) + DELETE FROM auth_login_rate_limits rate_limit + USING cleanup_candidates candidate + WHERE rate_limit.id = candidate.id + """, nativeQuery = true) + int deleteStaleBatch(@Param("cutoff") Instant cutoff, + @Param("now") Instant now, + @Param("batchSize") int batchSize); +} diff --git a/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java b/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java index 828e474..cf2d2c1 100644 --- a/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/AuthRefreshTokenRepository.java @@ -4,9 +4,12 @@ import com.magistr.app.model.AuthRefreshToken; import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import org.springframework.transaction.annotation.Transactional; +import java.time.Instant; import java.util.Optional; public interface AuthRefreshTokenRepository extends JpaRepository { @@ -21,4 +24,27 @@ public interface AuthRefreshTokenRepository extends JpaRepository findByTokenHashForUpdate(@Param("tokenHash") String tokenHash); + + /** + * Удаляет ограниченную пачку старых audit-записей. SKIP LOCKED позволяет нескольким + * backend-pod безопасно разбирать непересекающиеся пачки одной tenant-БД. + */ + @Modifying + @Transactional + @Query(value = """ + WITH cleanup_candidates AS ( + SELECT id + FROM auth_refresh_tokens + WHERE expires_at < :cutoff + OR (revoked_at IS NOT NULL AND revoked_at < :cutoff) + ORDER BY LEAST(expires_at, COALESCE(revoked_at, expires_at)), id + FOR UPDATE SKIP LOCKED + LIMIT :batchSize + ) + DELETE FROM auth_refresh_tokens token + USING cleanup_candidates candidate + WHERE token.id = candidate.id + """, nativeQuery = true) + int deleteCleanupBatch(@Param("cutoff") Instant cutoff, + @Param("batchSize") int batchSize); } diff --git a/backend/src/main/java/com/magistr/app/repository/GroupRepository.java b/backend/src/main/java/com/magistr/app/repository/GroupRepository.java index 4153fc8..4cdfe96 100755 --- a/backend/src/main/java/com/magistr/app/repository/GroupRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/GroupRepository.java @@ -1,9 +1,14 @@ package com.magistr.app.repository; import com.magistr.app.model.StudentGroup; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; +import java.util.Optional; public interface GroupRepository extends JpaRepository { @@ -14,4 +19,15 @@ public interface GroupRepository extends JpaRepository { List findByStatusNot(String status); List findByDepartmentIdAndStatusNot(Long departmentId, String status); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query(""" + select studentGroup + from StudentGroup studentGroup + join fetch studentGroup.educationForm + join fetch studentGroup.speciality + join fetch studentGroup.specialtyProfile + where studentGroup.id = :id + """) + Optional findByIdForUpdate(@Param("id") Long id); } diff --git a/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java b/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java index f4fdfe3..6cf7f28 100644 --- a/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/ScheduleRuleRepository.java @@ -9,6 +9,7 @@ import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; +import java.util.Collection; public interface ScheduleRuleRepository extends JpaRepository { @@ -60,6 +61,54 @@ public interface ScheduleRuleRepository extends JpaRepository 'ARCHIVED' + """) + List findByGroupIdsAndSemesterIds( + @Param("groupIds") Collection groupIds, + @Param("semesterIds") Collection semesterIds + ); + + @Query(""" + select distinct r + from ScheduleRule r + join r.slots teacherSlot + left join fetch r.subject + left join fetch r.semester sem + left join fetch sem.academicYear + left join fetch r.groups groups + left join fetch r.slots slots + left join fetch slots.timeSlot + left join fetch slots.subgroups slotSubgroups + left join fetch slotSubgroups.studentGroup + left join fetch slots.teacher + left join fetch slots.classroom + left join fetch slots.lessonType + where teacherSlot.teacher.id = :teacherId + and sem.id in :semesterIds + and r.status <> 'ARCHIVED' + """) + List findByTeacherIdAndSemesterIds( + @Param("teacherId") Long teacherId, + @Param("semesterIds") Collection semesterIds + ); + @Query(""" select distinct r from ScheduleRule r diff --git a/backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java b/backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java index 72f71cb..b024477 100644 --- a/backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/ScheduleRuleSlotRepository.java @@ -9,4 +9,6 @@ public interface ScheduleRuleSlotRepository extends JpaRepository 0 then true else false end from ScheduleRuleSlot slot join slot.subgroups subgroup where subgroup.id = :subgroupId") boolean existsBySubgroupId(@Param("subgroupId") Long subgroupId); + + boolean existsByTimeSlotId(Long timeSlotId); } diff --git a/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java b/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java index 0f27097..6d38ed5 100644 --- a/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/SemesterRepository.java @@ -17,10 +17,51 @@ public interface SemesterRepository extends JpaRepository { Optional findFirstByStartDateLessThanEqualAndEndDateGreaterThanEqual(LocalDate startDate, LocalDate endDate); + @Query(""" + select semester + from Semester semester + join fetch semester.academicYear + where semester.startDate <= :endDate + and semester.endDate >= :startDate + order by semester.startDate, semester.id + """) + List findOverlappingForSchedule(@Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate); + List findByAcademicYearIdOrderByStartDateAsc(Long academicYearId); Optional findByAcademicYearIdAndSemesterType(Long academicYearId, SemesterType semesterType); + boolean existsByAcademicYearIdAndSemesterType(Long academicYearId, SemesterType semesterType); + + boolean existsByAcademicYearIdAndSemesterTypeAndIdNot(Long academicYearId, + SemesterType semesterType, + Long id); + + @Query(""" + select case when count(semester) > 0 then true else false end + from Semester semester + where semester.academicYear.id = :academicYearId + and semester.startDate <= :endDate + and semester.endDate >= :startDate + """) + boolean existsOverlapping(@Param("academicYearId") Long academicYearId, + @Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate); + + @Query(""" + select case when count(semester) > 0 then true else false end + from Semester semester + where semester.academicYear.id = :academicYearId + and semester.id <> :excludedId + and semester.startDate <= :endDate + and semester.endDate >= :startDate + """) + boolean existsOverlappingExcluding(@Param("academicYearId") Long academicYearId, + @Param("excludedId") Long excludedId, + @Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate); + @Lock(LockModeType.PESSIMISTIC_WRITE) @Query("select semester from Semester semester where semester.id = :id") Optional findByIdForUpdate(@Param("id") Long id); diff --git a/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java b/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java index 446c99d..5a48ba8 100644 --- a/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/StudentGroupCalendarAssignmentRepository.java @@ -1,12 +1,15 @@ package com.magistr.app.repository; import com.magistr.app.model.StudentGroupCalendarAssignment; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; +import java.util.Collection; public interface StudentGroupCalendarAssignmentRepository extends JpaRepository { @@ -51,4 +54,52 @@ public interface StudentGroupCalendarAssignmentRepository extends JpaRepository< @Param("groupId") Long groupId, @Param("academicYearId") Long academicYearId ); + + @Query(""" + select assignment + from StudentGroupCalendarAssignment assignment + join fetch assignment.studentGroup + join fetch assignment.academicYear + join fetch assignment.academicCalendar + where assignment.studentGroup.id in :groupIds + and assignment.academicYear.id in :academicYearIds + """) + List findForScheduleBatch( + @Param("groupIds") Collection groupIds, + @Param("academicYearIds") Collection academicYearIds + ); + + @Query(""" + select assignment + from StudentGroupCalendarAssignment assignment + join fetch assignment.studentGroup studentGroup + join fetch studentGroup.educationForm + join fetch studentGroup.speciality + join fetch studentGroup.specialtyProfile + join fetch assignment.academicYear + join fetch assignment.academicCalendar calendar + join fetch calendar.speciality + join fetch calendar.specialtyProfile + join fetch calendar.studyForm + where calendar.id = :calendarId + order by assignment.id + """) + List findByCalendarIdWithDetails(@Param("calendarId") Long calendarId); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query(""" + select assignment + from StudentGroupCalendarAssignment assignment + join fetch assignment.academicYear + join fetch assignment.academicCalendar calendar + join fetch calendar.speciality + join fetch calendar.specialtyProfile + join fetch calendar.studyForm + where assignment.studentGroup.id = :groupId + and assignment.academicYear.id = :academicYearId + """) + Optional findByGroupIdAndAcademicYearIdForUpdate( + @Param("groupId") Long groupId, + @Param("academicYearId") Long academicYearId + ); } diff --git a/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java b/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java index dfb4888..bf942d0 100755 --- a/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java @@ -7,7 +7,7 @@ import java.util.List; import java.util.Optional; public interface SubjectRepository extends JpaRepository { - Optional findByName(String name); + Optional findByNameIgnoreCase(String name); List findByDepartmentId(Long departmentId); diff --git a/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java b/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java index be94f19..6bc65f7 100644 --- a/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/TeacherDepartmentAssignmentRepository.java @@ -1,13 +1,16 @@ package com.magistr.app.repository; import com.magistr.app.model.TeacherDepartmentAssignment; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.time.LocalDate; import java.util.List; import java.util.Optional; +import java.util.Set; public interface TeacherDepartmentAssignmentRepository extends JpaRepository { @@ -60,4 +63,46 @@ public interface TeacherDepartmentAssignmentRepository extends JpaRepository= :date) + order by a.validFrom desc, a.id desc + """) + Optional findPrimaryAtDate( + @Param("teacherId") Long teacherId, + @Param("date") LocalDate date + ); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query(""" + select a + from TeacherDepartmentAssignment a + join fetch a.department + where a.teacher.id = :teacherId + and a.primaryAssignment = true + order by a.validFrom, a.id + """) + List findPrimaryHistoryForUpdate(@Param("teacherId") Long teacherId); + + @Query(""" + select a + from TeacherDepartmentAssignment a + join fetch a.teacher + join fetch a.department + where a.teacher.id in :teacherIds + and a.validFrom <= :endDate + and (a.validTo is null or a.validTo >= :startDate) + order by a.teacher.id, a.validFrom, a.id + """) + List findForTeachersBetween( + @Param("teacherIds") Set teacherIds, + @Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate + ); } diff --git a/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java b/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java index 4fd642c..70bc231 100644 --- a/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/TimeSlotDateAssignmentRepository.java @@ -2,6 +2,8 @@ package com.magistr.app.repository; import com.magistr.app.model.TimeSlotDateAssignment; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.time.LocalDate; import java.util.List; @@ -15,5 +17,15 @@ public interface TimeSlotDateAssignmentRepository extends JpaRepository findByDateBetweenOrderByDateAsc(LocalDate startDate, LocalDate endDate); + @Query(""" + select assignment + from TimeSlotDateAssignment assignment + join fetch assignment.timeSlotScope + where assignment.date between :startDate and :endDate + order by assignment.date + """) + List findForScheduleRange(@Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate); + boolean existsByTimeSlotScopeId(Long scopeId); } diff --git a/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java b/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java index dc364e9..2428fde 100644 --- a/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/TimeSlotRepository.java @@ -1,7 +1,13 @@ package com.magistr.app.repository; import com.magistr.app.model.TimeSlot; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.time.LocalTime; import java.util.List; import java.util.Optional; @@ -14,5 +20,45 @@ public interface TimeSlotRepository extends JpaRepository { Optional findByTimeSlotScopeIdAndOrderNumber(Long scopeId, Integer orderNumber); + @Query(""" + select slot + from TimeSlot slot + join fetch slot.timeSlotScope + order by slot.timeSlotScope.displayOrder, slot.orderNumber, slot.startTime + """) + List findAllForSchedule(); + + boolean existsByTimeSlotScopeIdAndOrderNumber(Long scopeId, Integer orderNumber); + + boolean existsByTimeSlotScopeIdAndOrderNumberAndIdNot(Long scopeId, Integer orderNumber, Long id); + boolean existsByTimeSlotScopeId(Long scopeId); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select slot from TimeSlot slot where slot.id = :id") + Optional findByIdForUpdate(@Param("id") Long id); + + @Query(""" + select case when count(slot) > 0 then true else false end + from TimeSlot slot + where slot.timeSlotScope.id = :scopeId + and slot.startTime < :endTime + and slot.endTime > :startTime + """) + boolean existsOverlapping(@Param("scopeId") Long scopeId, + @Param("startTime") LocalTime startTime, + @Param("endTime") LocalTime endTime); + + @Query(""" + select case when count(slot) > 0 then true else false end + from TimeSlot slot + where slot.timeSlotScope.id = :scopeId + and slot.id <> :excludedId + and slot.startTime < :endTime + and slot.endTime > :startTime + """) + boolean existsOverlappingExcluding(@Param("scopeId") Long scopeId, + @Param("excludedId") Long excludedId, + @Param("startTime") LocalTime startTime, + @Param("endTime") LocalTime endTime); } diff --git a/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java b/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java index a03a02c..cfc5fd1 100644 --- a/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/TimeSlotScopeRepository.java @@ -1,7 +1,11 @@ package com.magistr.app.repository; import com.magistr.app.model.TimeSlotScope; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; @@ -15,4 +19,10 @@ public interface TimeSlotScopeRepository extends JpaRepository findFirstByApplyModeOrderByDisplayOrderAsc(String applyMode); Optional findByApplyModeAndDayOfWeek(String applyMode, Integer dayOfWeek); + + List findByApplyModeOrderByDisplayOrderAsc(String applyMode); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select scope from TimeSlotScope scope where scope.id = :id") + Optional findByIdForUpdate(@Param("id") Long id); } diff --git a/backend/src/main/java/com/magistr/app/repository/UserRepository.java b/backend/src/main/java/com/magistr/app/repository/UserRepository.java index f0510b2..95e9700 100755 --- a/backend/src/main/java/com/magistr/app/repository/UserRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/UserRepository.java @@ -2,7 +2,11 @@ package com.magistr.app.repository; import com.magistr.app.model.Role; import com.magistr.app.model.User; +import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; @@ -20,4 +24,8 @@ public interface UserRepository extends JpaRepository { List findByRoleAndStatusNot(Role role, String status); List findByRoleAndDepartmentIdAndStatusNot(Role role, Long departmentId, String status); + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select user from User user where user.id = :id") + Optional findByIdForUpdate(@Param("id") Long id); } diff --git a/backend/src/main/java/com/magistr/app/service/AcademicDateService.java b/backend/src/main/java/com/magistr/app/service/AcademicDateService.java index 8180415..0d9a0ad 100644 --- a/backend/src/main/java/com/magistr/app/service/AcademicDateService.java +++ b/backend/src/main/java/com/magistr/app/service/AcademicDateService.java @@ -9,7 +9,9 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.temporal.ChronoUnit; -import java.util.Optional; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service public class AcademicDateService { @@ -33,6 +35,64 @@ public class AcademicDateService { return semesterRepository.findFirstByStartDateLessThanEqualAndEndDateGreaterThanEqual(date, date); } + public List findSemesters(LocalDate startDate, LocalDate endDate) { + if (startDate == null || endDate == null || endDate.isBefore(startDate)) { + return List.of(); + } + return semesterRepository.findOverlappingForSchedule(startDate, endDate); + } + + /** + * Загружает календарные данные одним набором batch-запросов и возвращает снимок, + * который не обращается к репозиториям во внутренних циклах генератора. + */ + public ScheduleSnapshot createScheduleSnapshot(Collection groups, + Collection semesters, + LocalDate endDate) { + List semesterSnapshot = Optional.ofNullable(semesters) + .orElseGet(List::of) + .stream() + .filter(Objects::nonNull) + .sorted(Comparator.comparing(Semester::getStartDate).thenComparing(Semester::getId)) + .toList(); + LocalDate snapshotStart = semesterSnapshot.stream() + .map(Semester::getStartDate) + .min(LocalDate::compareTo) + .orElse(endDate); + + Set groupIds = Optional.ofNullable(groups) + .orElseGet(List::of) + .stream() + .filter(Objects::nonNull) + .map(StudentGroup::getId) + .filter(Objects::nonNull) + .collect(Collectors.toCollection(LinkedHashSet::new)); + Set academicYearIds = semesterSnapshot.stream() + .map(Semester::getAcademicYear) + .filter(Objects::nonNull) + .map(AcademicYear::getId) + .filter(Objects::nonNull) + .collect(Collectors.toCollection(LinkedHashSet::new)); + + List assignments = groupIds.isEmpty() || academicYearIds.isEmpty() + ? List.of() + : assignmentRepository.findForScheduleBatch(groupIds, academicYearIds); + Set calendarIds = assignments.stream() + .map(StudentGroupCalendarAssignment::getAcademicCalendar) + .filter(Objects::nonNull) + .map(AcademicCalendar::getId) + .filter(Objects::nonNull) + .collect(Collectors.toCollection(LinkedHashSet::new)); + List calendarDays = calendarIds.isEmpty() + || snapshotStart == null + || endDate == null + || endDate.isBefore(snapshotStart) + ? List.of() + : calendarDayRepository.findForScheduleBatch(calendarIds, snapshotStart, endDate); + + return new ScheduleSnapshot(semesterSnapshot, assignments, calendarDays, snapshotStart, endDate); + } + public int getWeekNumber(Semester semester, LocalDate date) { long days = ChronoUnit.DAYS.between(semester.getStartDate(), date); if (days < 0) { @@ -86,4 +146,128 @@ public class AcademicDateService { } return assignmentRepository.findForSchedule(group.getId(), semester.getAcademicYear().getId()).isPresent(); } + + public static final class ScheduleSnapshot { + + private final Map semesterByDate; + private final Map assignmentByGroupAndYear; + private final Map activityByCalendarCourseAndDate; + private final LocalDate startDate; + private final LocalDate endDate; + + private ScheduleSnapshot(Collection semesters, + Collection assignments, + Collection calendarDays, + LocalDate startDate, + LocalDate endDate) { + this.startDate = startDate; + this.endDate = endDate; + this.semesterByDate = indexSemesters(semesters, startDate, endDate); + this.assignmentByGroupAndYear = assignments.stream() + .collect(Collectors.toUnmodifiableMap( + assignment -> new GroupAcademicYearKey( + assignment.getStudentGroup().getId(), + assignment.getAcademicYear().getId() + ), + Function.identity() + )); + this.activityByCalendarCourseAndDate = calendarDays.stream() + .collect(Collectors.toUnmodifiableMap( + day -> new CalendarDayKey( + day.getAcademicCalendar().getId(), + day.getCourseNumber(), + day.getDate() + ), + AcademicCalendarDay::getActivityType + )); + } + + public Optional findSemester(LocalDate date) { + return Optional.ofNullable(semesterByDate.get(date)); + } + + public boolean hasCalendarAssignment(StudentGroup group, Semester semester) { + return findAssignment(group, semester).isPresent(); + } + + public Optional getActivityType(StudentGroup group, + Semester semester, + LocalDate date) { + int courseNumber = courseNumber(group, date); + if (courseNumber < 1) { + return Optional.empty(); + } + return findAssignment(group, semester) + .map(StudentGroupCalendarAssignment::getAcademicCalendar) + .map(AcademicCalendar::getId) + .map(calendarId -> activityByCalendarCourseAndDate.get( + new CalendarDayKey(calendarId, courseNumber, date) + )); + } + + public boolean isTheoryDay(StudentGroup group, Semester semester, LocalDate date) { + return getActivityType(group, semester, date) + .map(AcademicCalendarActivityType::getAllowSchedule) + .orElse(false); + } + + public LocalDate startDate() { + return startDate; + } + + public LocalDate endDate() { + return endDate; + } + + private Optional findAssignment(StudentGroup group, Semester semester) { + if (group == null + || group.getId() == null + || semester == null + || semester.getAcademicYear() == null + || semester.getAcademicYear().getId() == null) { + return Optional.empty(); + } + return Optional.ofNullable(assignmentByGroupAndYear.get( + new GroupAcademicYearKey(group.getId(), semester.getAcademicYear().getId()) + )); + } + + private static Map indexSemesters(Collection semesters, + LocalDate startDate, + LocalDate endDate) { + if (startDate == null || endDate == null || endDate.isBefore(startDate)) { + return Map.of(); + } + Map result = new HashMap<>(); + for (Semester semester : semesters) { + LocalDate effectiveStart = semester.getStartDate().isAfter(startDate) + ? semester.getStartDate() + : startDate; + LocalDate effectiveEnd = semester.getEndDate().isBefore(endDate) + ? semester.getEndDate() + : endDate; + for (LocalDate date = effectiveStart; !date.isAfter(effectiveEnd); date = date.plusDays(1)) { + Semester previous = result.putIfAbsent(date, semester); + if (previous != null && !Objects.equals(previous.getId(), semester.getId())) { + throw new IllegalStateException("На одну дату назначено несколько семестров"); + } + } + } + return Map.copyOf(result); + } + } + + private static int courseNumber(StudentGroup group, LocalDate date) { + if (group == null || date == null || group.getYearStartStudy() == null) { + return 0; + } + int academicYearStart = date.getMonthValue() >= 9 ? date.getYear() : date.getYear() - 1; + return academicYearStart - group.getYearStartStudy() + 1; + } + + private record GroupAcademicYearKey(Long groupId, Long academicYearId) { + } + + private record CalendarDayKey(Long calendarId, Integer courseNumber, LocalDate date) { + } } diff --git a/backend/src/main/java/com/magistr/app/service/AcademicPeriodService.java b/backend/src/main/java/com/magistr/app/service/AcademicPeriodService.java new file mode 100644 index 0000000..099a373 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/AcademicPeriodService.java @@ -0,0 +1,251 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.AcademicYearDto; +import com.magistr.app.dto.SemesterDto; +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.Semester; +import com.magistr.app.repository.AcademicYearRepository; +import com.magistr.app.repository.SemesterRepository; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionSynchronization; +import org.springframework.transaction.support.TransactionSynchronizationManager; + +import java.time.LocalDate; +import java.util.NoSuchElementException; + +@Service +public class AcademicPeriodService { + + private static final String YEAR_CONFLICT_MESSAGE = + "Название или период учебного года конфликтует с существующим учебным годом"; + private static final String SEMESTER_CONFLICT_MESSAGE = + "Тип или период семестра конфликтует с существующим семестром учебного года"; + + private final AcademicYearRepository academicYearRepository; + private final SemesterRepository semesterRepository; + private final ScheduleGeneratorService scheduleGeneratorService; + + public AcademicPeriodService(AcademicYearRepository academicYearRepository, + SemesterRepository semesterRepository, + ScheduleGeneratorService scheduleGeneratorService) { + this.academicYearRepository = academicYearRepository; + this.semesterRepository = semesterRepository; + this.scheduleGeneratorService = scheduleGeneratorService; + } + + @Transactional + public AcademicYear createYear(AcademicYearDto request) { + validateYear(request); + String title = request.title().trim(); + if (academicYearRepository.existsByTitle(title) + || academicYearRepository.existsOverlapping(request.startDate(), request.endDate())) { + throw new ScheduleConflictException(YEAR_CONFLICT_MESSAGE); + } + + AcademicYear year = new AcademicYear(); + applyYear(year, title, request.startDate(), request.endDate()); + AcademicYear saved = saveYear(year); + clearScheduleCacheAfterCommit(); + return saved; + } + + @Transactional + public AcademicYear updateYear(Long id, AcademicYearDto request) { + validateYear(request); + AcademicYear year = lockYear(id); + String title = request.title().trim(); + + if (academicYearRepository.existsByTitleAndIdNot(title, id) + || academicYearRepository.existsOverlappingExcluding( + id, request.startDate(), request.endDate())) { + throw new ScheduleConflictException(YEAR_CONFLICT_MESSAGE); + } + boolean semesterOutsideNewRange = semesterRepository + .findByAcademicYearIdOrderByStartDateAsc(id) + .stream() + .anyMatch(semester -> !contains( + request.startDate(), + request.endDate(), + semester.getStartDate(), + semester.getEndDate() + )); + if (semesterOutsideNewRange) { + throw new IllegalArgumentException( + "Новые границы учебного года не включают все его семестры" + ); + } + + applyYear(year, title, request.startDate(), request.endDate()); + AcademicYear saved = saveYear(year); + clearScheduleCacheAfterCommit(); + return saved; + } + + @Transactional + public void deleteYear(Long id) { + AcademicYear year = lockYear(id); + academicYearRepository.delete(year); + academicYearRepository.flush(); + clearScheduleCacheAfterCommit(); + } + + @Transactional + public Semester createSemester(Long academicYearId, SemesterDto request) { + validateSemester(request); + AcademicYear year = lockYear(academicYearId); + validateSemesterWithinYear(year, request.startDate(), request.endDate()); + ensureSemesterAvailable(year.getId(), request, null); + + Semester semester = new Semester(); + semester.setAcademicYear(year); + applySemester(semester, request); + Semester saved = saveSemester(semester); + clearScheduleCacheAfterCommit(); + return saved; + } + + @Transactional + public Semester updateSemester(Long id, SemesterDto request) { + validateSemester(request); + Semester snapshot = semesterRepository.findById(id) + .orElseThrow(() -> new NoSuchElementException("Семестр не найден")); + AcademicYear year = lockYear(snapshot.getAcademicYear().getId()); + Semester semester = semesterRepository.findByIdForUpdate(id) + .orElseThrow(() -> new NoSuchElementException("Семестр не найден")); + if (!semester.getAcademicYear().getId().equals(year.getId())) { + throw new ScheduleConflictException("Учебный год семестра был изменён конкурентно"); + } + + validateSemesterWithinYear(year, request.startDate(), request.endDate()); + ensureSemesterAvailable(year.getId(), request, id); + applySemester(semester, request); + Semester saved = saveSemester(semester); + clearScheduleCacheAfterCommit(); + return saved; + } + + private void validateYear(AcademicYearDto request) { + if (request == null) { + throw new IllegalArgumentException("Данные учебного года обязательны"); + } + if (request.title() == null || request.title().isBlank()) { + throw new IllegalArgumentException("Название учебного года обязательно"); + } + validateDateRange( + request.startDate(), + request.endDate(), + "Даты начала и окончания учебного года обязательны", + "Дата окончания учебного года не может быть раньше даты начала" + ); + } + + private void validateSemester(SemesterDto request) { + if (request == null) { + throw new IllegalArgumentException("Данные семестра обязательны"); + } + if (request.semesterType() == null) { + throw new IllegalArgumentException("Тип семестра обязателен"); + } + validateDateRange( + request.startDate(), + request.endDate(), + "Даты начала и окончания семестра обязательны", + "Дата окончания семестра не может быть раньше даты начала" + ); + } + + private void validateDateRange(LocalDate startDate, + LocalDate endDate, + String requiredMessage, + String orderMessage) { + if (startDate == null || endDate == null) { + throw new IllegalArgumentException(requiredMessage); + } + if (endDate.isBefore(startDate)) { + throw new IllegalArgumentException(orderMessage); + } + } + + private void validateSemesterWithinYear(AcademicYear year, + LocalDate startDate, + LocalDate endDate) { + if (!contains(year.getStartDate(), year.getEndDate(), startDate, endDate)) { + throw new IllegalArgumentException("Семестр должен полностью находиться в границах учебного года"); + } + } + + private boolean contains(LocalDate outerStart, + LocalDate outerEnd, + LocalDate innerStart, + LocalDate innerEnd) { + return !innerStart.isBefore(outerStart) && !innerEnd.isAfter(outerEnd); + } + + private void ensureSemesterAvailable(Long academicYearId, SemesterDto request, Long currentId) { + boolean duplicateType = currentId == null + ? semesterRepository.existsByAcademicYearIdAndSemesterType( + academicYearId, request.semesterType()) + : semesterRepository.existsByAcademicYearIdAndSemesterTypeAndIdNot( + academicYearId, request.semesterType(), currentId); + boolean overlapping = currentId == null + ? semesterRepository.existsOverlapping( + academicYearId, request.startDate(), request.endDate()) + : semesterRepository.existsOverlappingExcluding( + academicYearId, currentId, request.startDate(), request.endDate()); + if (duplicateType || overlapping) { + throw new ScheduleConflictException(SEMESTER_CONFLICT_MESSAGE); + } + } + + private AcademicYear lockYear(Long id) { + return academicYearRepository.findByIdForUpdate(id) + .orElseThrow(() -> new NoSuchElementException("Учебный год не найден")); + } + + private void applyYear(AcademicYear year, + String title, + LocalDate startDate, + LocalDate endDate) { + year.setTitle(title); + year.setStartDate(startDate); + year.setEndDate(endDate); + } + + private void applySemester(Semester semester, SemesterDto request) { + semester.setSemesterType(request.semesterType()); + semester.setStartDate(request.startDate()); + semester.setEndDate(request.endDate()); + } + + private AcademicYear saveYear(AcademicYear year) { + try { + return academicYearRepository.saveAndFlush(year); + } catch (DataIntegrityViolationException exception) { + throw new ScheduleConflictException(YEAR_CONFLICT_MESSAGE); + } + } + + private Semester saveSemester(Semester semester) { + try { + return semesterRepository.saveAndFlush(semester); + } catch (DataIntegrityViolationException exception) { + throw new ScheduleConflictException(SEMESTER_CONFLICT_MESSAGE); + } + } + + private void clearScheduleCacheAfterCommit() { + if (!TransactionSynchronizationManager.isSynchronizationActive() + || !TransactionSynchronizationManager.isActualTransactionActive()) { + scheduleGeneratorService.clearCache(); + return; + } + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { + @Override + public void afterCommit() { + scheduleGeneratorService.clearCache(); + } + }); + } +} diff --git a/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java b/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java new file mode 100644 index 0000000..c8a48ae --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java @@ -0,0 +1,421 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.AcademicCalendarDto; +import com.magistr.app.dto.CreateGroupRequest; +import com.magistr.app.dto.GroupCalendarAssignmentDto; +import com.magistr.app.model.AcademicCalendar; +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.EducationForm; +import com.magistr.app.model.Speciality; +import com.magistr.app.model.SpecialtyProfile; +import com.magistr.app.model.StudentGroup; +import com.magistr.app.model.StudentGroupCalendarAssignment; +import com.magistr.app.repository.AcademicCalendarDayRepository; +import com.magistr.app.repository.AcademicCalendarRepository; +import com.magistr.app.repository.AcademicCalendarSubjectRepository; +import com.magistr.app.repository.AcademicYearRepository; +import com.magistr.app.repository.EducationFormRepository; +import com.magistr.app.repository.GroupRepository; +import com.magistr.app.repository.SpecialtiesRepository; +import com.magistr.app.repository.SpecialtyProfileRepository; +import com.magistr.app.repository.StudentGroupCalendarAssignmentRepository; +import com.magistr.app.utils.CourseAndSemesterCalculator; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionSynchronization; +import org.springframework.transaction.support.TransactionSynchronizationManager; + +import java.util.List; +import java.util.NoSuchElementException; + +@Service +public class AcademicStructureService { + + private final AcademicCalendarRepository calendarRepository; + private final AcademicCalendarDayRepository calendarDayRepository; + private final AcademicCalendarSubjectRepository calendarSubjectRepository; + private final AcademicYearRepository academicYearRepository; + private final SpecialtiesRepository specialtiesRepository; + private final SpecialtyProfileRepository profileRepository; + private final EducationFormRepository educationFormRepository; + private final GroupRepository groupRepository; + private final StudentGroupCalendarAssignmentRepository assignmentRepository; + private final ScheduleGeneratorService scheduleGeneratorService; + + public AcademicStructureService(AcademicCalendarRepository calendarRepository, + AcademicCalendarDayRepository calendarDayRepository, + AcademicCalendarSubjectRepository calendarSubjectRepository, + AcademicYearRepository academicYearRepository, + SpecialtiesRepository specialtiesRepository, + SpecialtyProfileRepository profileRepository, + EducationFormRepository educationFormRepository, + GroupRepository groupRepository, + StudentGroupCalendarAssignmentRepository assignmentRepository, + ScheduleGeneratorService scheduleGeneratorService) { + this.calendarRepository = calendarRepository; + this.calendarDayRepository = calendarDayRepository; + this.calendarSubjectRepository = calendarSubjectRepository; + this.academicYearRepository = academicYearRepository; + this.specialtiesRepository = specialtiesRepository; + this.profileRepository = profileRepository; + this.educationFormRepository = educationFormRepository; + this.groupRepository = groupRepository; + this.assignmentRepository = assignmentRepository; + this.scheduleGeneratorService = scheduleGeneratorService; + } + + @Transactional + public AcademicCalendar updateCalendar(Long id, AcademicCalendarDto request) { + validateCalendarRequest(request); + AcademicCalendar calendar = calendarRepository.findByIdWithDetailsForUpdate(id) + .orElseThrow(() -> new NoSuchElementException("Календарный график не найден")); + CalendarDimensions candidate = resolveCalendarDimensions(request); + + List assignments = + assignmentRepository.findByCalendarIdWithDetails(id); + boolean incompatibleAssignment = assignments.stream() + .anyMatch(assignment -> !isCompatible( + assignment.getStudentGroup(), + assignment.getAcademicYear(), + candidate.academicYear(), + candidate.speciality(), + candidate.profile(), + candidate.studyForm(), + request.courseCount() + )); + if (incompatibleAssignment) { + throw new ScheduleConflictException( + "Нельзя изменить график: сохранённые назначения групп станут несовместимыми" + ); + } + if (calendarDayRepository.existsByAcademicCalendarIdAndCourseNumberGreaterThan( + id, request.courseCount())) { + throw new ScheduleConflictException( + "Нельзя уменьшить количество курсов: в сетке есть данные старших курсов" + ); + } + if (calendarSubjectRepository.existsByAcademicCalendarIdAndSemesterNumberGreaterThan( + id, request.courseCount() * 2)) { + throw new ScheduleConflictException( + "Нельзя уменьшить количество курсов: есть дисциплины старших семестров" + ); + } + if (calendarDayRepository.existsOutsideDateRange( + id, + candidate.academicYear().getStartDate(), + candidate.academicYear().getEndDate())) { + throw new ScheduleConflictException( + "Нельзя изменить учебный год графика: сохранённая сетка содержит даты за его границами" + ); + } + + calendar.setTitle(request.title().trim()); + applyCalendarDimensions(calendar, candidate, request.courseCount()); + AcademicCalendar saved = saveCalendar(calendar); + clearScheduleCacheAfterCommit(); + return saved; + } + + @Transactional + public StudentGroup updateGroup(Long id, CreateGroupRequest request) { + validateGroupRequest(request); + StudentGroup group = groupRepository.findByIdForUpdate(id) + .orElseThrow(() -> new NoSuchElementException("Учебная группа не найдена")); + GroupDimensions candidate = resolveGroupDimensions(request); + + boolean incompatibleAssignment = assignmentRepository.findByGroupIdWithDetails(id).stream() + .anyMatch(assignment -> !isCompatible( + request.getYearStartStudy(), + candidate.speciality(), + candidate.profile(), + candidate.studyForm(), + assignment.getAcademicYear(), + assignment.getAcademicCalendar() + )); + if (incompatibleAssignment) { + throw new ScheduleConflictException( + "Нельзя изменить группу: сохранённые назначения календарных графиков станут несовместимыми" + ); + } + + group.setName(request.getName().trim()); + group.setGroupSize(request.getGroupSize()); + group.setEducationForm(candidate.studyForm()); + group.setDepartmentId(request.getDepartmentId()); + group.setYearStartStudy(request.getYearStartStudy()); + group.setSpeciality(candidate.speciality()); + group.setSpecialtyProfile(candidate.profile()); + StudentGroup saved = saveGroup(group); + clearScheduleCacheAfterCommit(); + return saved; + } + + @Transactional + public StudentGroupCalendarAssignment saveAssignment(Long groupId, + GroupCalendarAssignmentDto request) { + if (request == null || request.academicYearId() == null || request.calendarId() == null) { + throw new IllegalArgumentException("Учебный год и календарный график обязательны"); + } + StudentGroup group = groupRepository.findByIdForUpdate(groupId) + .orElseThrow(() -> new NoSuchElementException("Учебная группа не найдена")); + AcademicCalendar calendar = calendarRepository.findByIdWithDetailsForUpdate(request.calendarId()) + .orElseThrow(() -> new IllegalArgumentException("Календарный график не найден")); + AcademicYear academicYear = academicYearRepository.findByIdForUpdate(request.academicYearId()) + .orElseThrow(() -> new IllegalArgumentException("Учебный год не найден")); + + if (!isCompatible(group, academicYear, calendar)) { + throw new IllegalArgumentException( + "Календарный график не соответствует учебному году, параметрам или курсу группы" + ); + } + + StudentGroupCalendarAssignment assignment = assignmentRepository + .findByGroupIdAndAcademicYearIdForUpdate(groupId, academicYear.getId()) + .orElseGet(StudentGroupCalendarAssignment::new); + assignment.setStudentGroup(group); + assignment.setAcademicYear(academicYear); + assignment.setAcademicCalendar(calendar); + try { + StudentGroupCalendarAssignment saved = assignmentRepository.saveAndFlush(assignment); + clearScheduleCacheAfterCommit(); + return saved; + } catch (DataIntegrityViolationException exception) { + throw new ScheduleConflictException( + "Назначение календарного графика было изменено конкурентно" + ); + } + } + + private void validateCalendarRequest(AcademicCalendarDto request) { + if (request == null) { + throw new IllegalArgumentException("Передайте данные календарного графика"); + } + if (request.title() == null || request.title().isBlank()) { + throw new IllegalArgumentException("Название графика обязательно"); + } + if (request.courseCount() == null || request.courseCount() <= 0) { + throw new IllegalArgumentException("Количество курсов должно быть больше нуля"); + } + if (request.courseCount() > 8) { + throw new IllegalArgumentException("Количество курсов не может быть больше 8"); + } + if (request.academicYearId() == null + || request.specialtyId() == null + || request.specialtyProfileId() == null + || request.studyFormId() == null) { + throw new IllegalArgumentException( + "Учебный год, специальность, профиль и форма обучения обязательны" + ); + } + } + + private void validateGroupRequest(CreateGroupRequest request) { + if (request == null) { + throw new IllegalArgumentException("Передайте данные учебной группы"); + } + if (request.getName() == null || request.getName().isBlank()) { + throw new IllegalArgumentException("Название группы обязательно"); + } + if (request.getGroupSize() == null) { + throw new IllegalArgumentException("Численность группы обязательна"); + } + if (request.getEducationFormId() == null) { + throw new IllegalArgumentException("Форма обучения обязательна"); + } + if (request.getDepartmentId() == null || request.getDepartmentId() == 0) { + throw new IllegalArgumentException("ID кафедры обязателен"); + } + if (request.getYearStartStudy() == null || request.getYearStartStudy() == 0) { + throw new IllegalArgumentException("Год начала обучения обязателен"); + } + if (request.getEffectiveSpecialtyId() == null || request.getEffectiveSpecialtyId() == 0) { + throw new IllegalArgumentException("Код специальности обязателен"); + } + if (request.getSpecialtyProfileId() == null || request.getSpecialtyProfileId() == 0) { + throw new IllegalArgumentException("Профиль обучения обязателен"); + } + } + + private CalendarDimensions resolveCalendarDimensions(AcademicCalendarDto request) { + AcademicYear academicYear = academicYearRepository.findById(request.academicYearId()) + .orElseThrow(() -> new IllegalArgumentException("Учебный год не найден")); + Speciality speciality = specialtiesRepository.findById(request.specialtyId()) + .orElseThrow(() -> new IllegalArgumentException("Специальность не найдена")); + SpecialtyProfile profile = resolveProfile(request.specialtyProfileId(), speciality); + EducationForm studyForm = educationFormRepository.findById(request.studyFormId()) + .orElseThrow(() -> new IllegalArgumentException("Форма обучения не найдена")); + return new CalendarDimensions(academicYear, speciality, profile, studyForm); + } + + private GroupDimensions resolveGroupDimensions(CreateGroupRequest request) { + EducationForm studyForm = educationFormRepository.findById(request.getEducationFormId()) + .orElseThrow(() -> new IllegalArgumentException("Форма обучения не найдена")); + Speciality speciality = specialtiesRepository.findById(request.getEffectiveSpecialtyId()) + .orElseThrow(() -> new IllegalArgumentException("Специальность не найдена")); + SpecialtyProfile profile = resolveProfile(request.getSpecialtyProfileId(), speciality); + return new GroupDimensions(speciality, profile, studyForm); + } + + private SpecialtyProfile resolveProfile(Long profileId, Speciality speciality) { + SpecialtyProfile profile = profileRepository.findById(profileId) + .orElseThrow(() -> new IllegalArgumentException( + "Профиль обучения не найден для выбранной специальности" + )); + if (!profile.getSpeciality().getId().equals(speciality.getId())) { + throw new IllegalArgumentException( + "Профиль обучения не найден для выбранной специальности" + ); + } + return profile; + } + + private boolean isCompatible(StudentGroup group, + AcademicYear assignmentYear, + AcademicCalendar calendar) { + return isCompatible( + group, + assignmentYear, + calendar.getAcademicYear(), + calendar.getSpeciality(), + calendar.getSpecialtyProfile(), + calendar.getStudyForm(), + calendar.getCourseCount() + ); + } + + private boolean isCompatible(StudentGroup group, + AcademicYear assignmentYear, + AcademicYear calendarYear, + Speciality calendarSpeciality, + SpecialtyProfile calendarProfile, + EducationForm calendarStudyForm, + Integer courseCount) { + return isCompatible( + group.getYearStartStudy(), + group.getSpeciality(), + group.getSpecialtyProfile(), + group.getEducationForm(), + assignmentYear, + calendarYear, + calendarSpeciality, + calendarProfile, + calendarStudyForm, + courseCount + ); + } + + private boolean isCompatible(Integer yearStartStudy, + Speciality groupSpeciality, + SpecialtyProfile groupProfile, + EducationForm groupStudyForm, + AcademicYear assignmentYear, + AcademicCalendar calendar) { + return isCompatible( + yearStartStudy, + groupSpeciality, + groupProfile, + groupStudyForm, + assignmentYear, + calendar.getAcademicYear(), + calendar.getSpeciality(), + calendar.getSpecialtyProfile(), + calendar.getStudyForm(), + calendar.getCourseCount() + ); + } + + private boolean isCompatible(Integer yearStartStudy, + Speciality groupSpeciality, + SpecialtyProfile groupProfile, + EducationForm groupStudyForm, + AcademicYear assignmentYear, + AcademicYear calendarYear, + Speciality calendarSpeciality, + SpecialtyProfile calendarProfile, + EducationForm calendarStudyForm, + Integer courseCount) { + if (!sameId(assignmentYear, calendarYear) + || !sameId(groupSpeciality, calendarSpeciality) + || !sameId(groupProfile, calendarProfile) + || !sameId(groupStudyForm, calendarStudyForm)) { + return false; + } + int course = CourseAndSemesterCalculator.getActualCourse( + yearStartStudy, + assignmentYear.getStartDate() + ); + return course >= 1 && courseCount != null && course <= courseCount; + } + + private boolean sameId(AcademicYear first, AcademicYear second) { + return first != null && second != null && first.getId().equals(second.getId()); + } + + private boolean sameId(Speciality first, Speciality second) { + return first != null && second != null && first.getId().equals(second.getId()); + } + + private boolean sameId(SpecialtyProfile first, SpecialtyProfile second) { + return first != null && second != null && first.getId().equals(second.getId()); + } + + private boolean sameId(EducationForm first, EducationForm second) { + return first != null && second != null && first.getId().equals(second.getId()); + } + + private void applyCalendarDimensions(AcademicCalendar calendar, + CalendarDimensions dimensions, + Integer courseCount) { + calendar.setAcademicYear(dimensions.academicYear()); + calendar.setSpeciality(dimensions.speciality()); + calendar.setSpecialtyProfile(dimensions.profile()); + calendar.setStudyForm(dimensions.studyForm()); + calendar.setCourseCount(courseCount); + } + + private AcademicCalendar saveCalendar(AcademicCalendar calendar) { + try { + return calendarRepository.saveAndFlush(calendar); + } catch (DataIntegrityViolationException exception) { + throw new ScheduleConflictException( + "Изменение календарного графика конфликтует с сохранёнными данными" + ); + } + } + + private StudentGroup saveGroup(StudentGroup group) { + try { + return groupRepository.saveAndFlush(group); + } catch (DataIntegrityViolationException exception) { + throw new ScheduleConflictException( + "Изменение учебной группы конфликтует с сохранёнными данными" + ); + } + } + + private void clearScheduleCacheAfterCommit() { + if (!TransactionSynchronizationManager.isSynchronizationActive() + || !TransactionSynchronizationManager.isActualTransactionActive()) { + scheduleGeneratorService.clearCache(); + return; + } + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { + @Override + public void afterCommit() { + scheduleGeneratorService.clearCache(); + } + }); + } + + private record CalendarDimensions(AcademicYear academicYear, + Speciality speciality, + SpecialtyProfile profile, + EducationForm studyForm) { + } + + private record GroupDimensions(Speciality speciality, + SpecialtyProfile profile, + EducationForm studyForm) { + } +} diff --git a/backend/src/main/java/com/magistr/app/service/BusinessTimeService.java b/backend/src/main/java/com/magistr/app/service/BusinessTimeService.java new file mode 100644 index 0000000..495145e --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/BusinessTimeService.java @@ -0,0 +1,56 @@ +package com.magistr.app.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.time.Clock; +import java.time.Instant; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.zone.ZoneRulesException; +import java.util.Objects; + +/** Единый источник бизнес-даты и абсолютного времени приложения. */ +@Service +public class BusinessTimeService { + + public static final ZoneId DEFAULT_ZONE = ZoneId.of("Europe/Moscow"); + + private final Clock clock; + private final ZoneId zoneId; + + @Autowired + public BusinessTimeService(@Value("${app.time.business-zone:Europe/Moscow}") String zoneId) { + this(Clock.systemUTC(), parseZone(zoneId)); + } + + public BusinessTimeService(Clock clock, ZoneId zoneId) { + this.clock = Objects.requireNonNull(clock, "Часы приложения обязательны"); + this.zoneId = Objects.requireNonNull(zoneId, "Часовой пояс бизнес-даты обязателен"); + } + + public LocalDate today() { + return LocalDate.ofInstant(clock.instant(), zoneId); + } + + public Instant now() { + return clock.instant(); + } + + public ZoneId zoneId() { + return zoneId; + } + + public static BusinessTimeService systemDefault() { + return new BusinessTimeService(Clock.systemUTC(), DEFAULT_ZONE); + } + + private static ZoneId parseZone(String value) { + try { + return ZoneId.of(value == null || value.isBlank() ? DEFAULT_ZONE.getId() : value.trim()); + } catch (ZoneRulesException exception) { + throw new IllegalStateException("Некорректный часовой пояс бизнес-даты: " + value, exception); + } + } +} diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java b/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java index 772cb32..37bf881 100644 --- a/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java +++ b/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java @@ -10,6 +10,7 @@ import com.magistr.app.repository.TimeSlotScopeRepository; import com.magistr.app.repository.UserRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.DayOfWeek; @@ -33,6 +34,7 @@ public class ScheduleGeneratorService { private final TimeSlotRepository timeSlotRepository; private final TimeSlotScopeRepository timeSlotScopeRepository; private final TimeSlotDateAssignmentRepository dateAssignmentRepository; + private final BusinessTimeService businessTime; public ScheduleGeneratorService(ScheduleRuleRepository scheduleRuleRepository, GroupRepository groupRepository, @@ -41,6 +43,20 @@ public class ScheduleGeneratorService { TimeSlotRepository timeSlotRepository, TimeSlotScopeRepository timeSlotScopeRepository, TimeSlotDateAssignmentRepository dateAssignmentRepository) { + this(scheduleRuleRepository, groupRepository, userRepository, academicDateService, + timeSlotRepository, timeSlotScopeRepository, dateAssignmentRepository, + BusinessTimeService.systemDefault()); + } + + @Autowired + public ScheduleGeneratorService(ScheduleRuleRepository scheduleRuleRepository, + GroupRepository groupRepository, + UserRepository userRepository, + AcademicDateService academicDateService, + TimeSlotRepository timeSlotRepository, + TimeSlotScopeRepository timeSlotScopeRepository, + TimeSlotDateAssignmentRepository dateAssignmentRepository, + BusinessTimeService businessTime) { this.scheduleRuleRepository = scheduleRuleRepository; this.groupRepository = groupRepository; this.userRepository = userRepository; @@ -48,45 +64,134 @@ public class ScheduleGeneratorService { this.timeSlotRepository = timeSlotRepository; this.timeSlotScopeRepository = timeSlotScopeRepository; this.dateAssignmentRepository = dateAssignmentRepository; + this.businessTime = businessTime; } public List buildScheduleForGroup(Long groupId, LocalDate startDate, LocalDate endDate) { validateRange(startDate, endDate); StudentGroup group = groupRepository.findById(groupId) .orElseThrow(() -> new IllegalArgumentException("Группа не найдена")); + return buildScheduleForGroupsInternal(List.of(group), startDate, endDate); + } + + public List buildScheduleForGroups(Collection groups, + LocalDate startDate, + LocalDate endDate) { + validateRange(startDate, endDate); + List groupSnapshot = Optional.ofNullable(groups) + .orElseGet(List::of) + .stream() + .filter(Objects::nonNull) + .filter(group -> group.getId() != null) + .collect(Collectors.toMap( + StudentGroup::getId, + group -> group, + (first, second) -> first, + LinkedHashMap::new + )) + .values() + .stream() + .toList(); + return buildScheduleForGroupsInternal(groupSnapshot, startDate, endDate); + } + + private List buildScheduleForGroupsInternal(List groups, + LocalDate startDate, + LocalDate endDate) { + if (groups.isEmpty()) { + return List.of(); + } + + List semesters = academicDateService.findSemesters(startDate, endDate); + if (semesters.isEmpty()) { + return List.of(); + } + Set semesterIds = semesters.stream() + .map(Semester::getId) + .collect(Collectors.toCollection(LinkedHashSet::new)); + Set groupIds = groups.stream() + .map(StudentGroup::getId) + .collect(Collectors.toCollection(LinkedHashSet::new)); + List rules = scheduleRuleRepository.findByGroupIdsAndSemesterIds(groupIds, semesterIds); + AcademicDateService.ScheduleSnapshot dateSnapshot = academicDateService + .createScheduleSnapshot(groups, semesters, endDate); + TimeSlotSnapshot timeSlotSnapshot = loadTimeSlotSnapshot(startDate, endDate, rules); + Map> rulesByGroupAndSemester = indexRulesByGroupAndSemester( + rules, + groupIds + ); + + List result = new ArrayList<>(); + for (StudentGroup group : groups) { + result.addAll(buildScheduleForGroup( + group, + startDate, + endDate, + dateSnapshot, + timeSlotSnapshot, + rulesByGroupAndSemester + )); + } + return result; + } + + private List buildScheduleForGroup(StudentGroup group, + LocalDate startDate, + LocalDate endDate, + AcademicDateService.ScheduleSnapshot dateSnapshot, + TimeSlotSnapshot timeSlotSnapshot, + Map> rulesByGroupAndSemester) { - Map> rulesBySemester = new HashMap<>(); Map consumedHoursProgress = new HashMap<>(); List result = new ArrayList<>(); Set warnedAcademicYears = new HashSet<>(); Set primedSemesterIds = new HashSet<>(); for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) { - Optional semesterOpt = academicDateService.findSemester(date); + Optional semesterOpt = dateSnapshot.findSemester(date); if (semesterOpt.isEmpty()) { continue; } Semester semester = semesterOpt.get(); - if (!academicDateService.hasCalendarAssignment(group, semester) + if (!dateSnapshot.hasCalendarAssignment(group, semester) && warnedAcademicYears.add(semester.getAcademicYear().getId())) { logger.info("Для группы '{}' не назначен календарный учебный график на учебный год {}", group.getName(), semester.getAcademicYear().getTitle()); } - if (!academicDateService.isTheoryDay(group, semester, date)) { + if (!dateSnapshot.isTheoryDay(group, semester, date)) { continue; } - List rules = rulesBySemester.computeIfAbsent( - semester.getId(), - semesterId -> scheduleRuleRepository.findByGroupIdAndSemesterId(groupId, semesterId) + List rules = rulesByGroupAndSemester.getOrDefault( + new GroupSemesterKey(group.getId(), semester.getId()), + List.of() ); if (primedSemesterIds.add(semester.getId())) { - primeConsumedHoursBeforeRange(semester, rules, startDate, group, null, consumedHoursProgress); + primeConsumedHoursBeforeRange( + semester, + rules, + startDate, + group, + null, + consumedHoursProgress, + dateSnapshot, + timeSlotSnapshot + ); } for (ScheduleRule rule : sortRules(rules)) { - processRuleForDate(rule, date, group, null, consumedHoursProgress, result); + processRuleForDate( + rule, + semester, + date, + group, + null, + consumedHoursProgress, + result, + dateSnapshot, + timeSlotSnapshot + ); } } @@ -99,28 +204,68 @@ public class ScheduleGeneratorService { throw new IllegalArgumentException("Преподаватель не найден"); } - Map> rulesBySemester = new HashMap<>(); + List semesters = academicDateService.findSemesters(startDate, endDate); + if (semesters.isEmpty()) { + return List.of(); + } + Set semesterIds = semesters.stream() + .map(Semester::getId) + .collect(Collectors.toCollection(LinkedHashSet::new)); + List rules = scheduleRuleRepository.findByTeacherIdAndSemesterIds(teacherId, semesterIds); + List groups = rules.stream() + .flatMap(rule -> rule.getGroups().stream()) + .filter(group -> group.getId() != null) + .collect(Collectors.toMap( + StudentGroup::getId, + group -> group, + (first, second) -> first, + LinkedHashMap::new + )) + .values() + .stream() + .toList(); + AcademicDateService.ScheduleSnapshot dateSnapshot = academicDateService + .createScheduleSnapshot(groups, semesters, endDate); + TimeSlotSnapshot timeSlotSnapshot = loadTimeSlotSnapshot(startDate, endDate, rules); + Map> rulesBySemester = rules.stream() + .collect(Collectors.groupingBy(rule -> rule.getSemester().getId())); Map consumedHoursProgress = new HashMap<>(); List result = new ArrayList<>(); Set primedSemesterIds = new HashSet<>(); for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) { - Optional semesterOpt = academicDateService.findSemester(date); + Optional semesterOpt = dateSnapshot.findSemester(date); if (semesterOpt.isEmpty()) { continue; } Semester semester = semesterOpt.get(); - List rules = rulesBySemester.computeIfAbsent( - semester.getId(), - semesterId -> scheduleRuleRepository.findByTeacherIdAndSemesterId(teacherId, semesterId) - ); + List semesterRules = rulesBySemester.getOrDefault(semester.getId(), List.of()); if (primedSemesterIds.add(semester.getId())) { - primeConsumedHoursBeforeRange(semester, rules, startDate, null, teacherId, consumedHoursProgress); + primeConsumedHoursBeforeRange( + semester, + semesterRules, + startDate, + null, + teacherId, + consumedHoursProgress, + dateSnapshot, + timeSlotSnapshot + ); } - for (ScheduleRule rule : sortRules(rules)) { - processRuleForDate(rule, date, null, teacherId, consumedHoursProgress, result); + for (ScheduleRule rule : sortRules(semesterRules)) { + processRuleForDate( + rule, + semester, + date, + null, + teacherId, + consumedHoursProgress, + result, + dateSnapshot, + timeSlotSnapshot + ); } } @@ -161,12 +306,48 @@ public class ScheduleGeneratorService { .toList(); } + private Map> indexRulesByGroupAndSemester( + Collection rules, + Set requestedGroupIds + ) { + Map> result = new HashMap<>(); + for (ScheduleRule rule : rules) { + Long semesterId = rule.getSemester().getId(); + for (StudentGroup group : rule.getGroups()) { + if (!requestedGroupIds.contains(group.getId())) { + continue; + } + result.computeIfAbsent( + new GroupSemesterKey(group.getId(), semesterId), + ignored -> new ArrayList<>() + ).add(rule); + } + } + result.replaceAll((key, value) -> sortRules(value)); + return result; + } + + private TimeSlotSnapshot loadTimeSlotSnapshot(LocalDate startDate, + LocalDate endDate, + Collection rules) { + if (rules.isEmpty()) { + return TimeSlotSnapshot.empty(); + } + return new TimeSlotSnapshot( + dateAssignmentRepository.findForScheduleRange(startDate, endDate), + timeSlotScopeRepository.findByApplyModeOrderByDisplayOrderAsc(APPLY_MODE_WEEKDAY), + timeSlotRepository.findAllForSchedule() + ); + } + private void primeConsumedHoursBeforeRange(Semester semester, List rules, LocalDate rangeStart, StudentGroup targetGroup, Long targetTeacherId, - Map consumedHoursProgress) { + Map consumedHoursProgress, + AcademicDateService.ScheduleSnapshot dateSnapshot, + TimeSlotSnapshot timeSlotSnapshot) { LocalDate endExclusive = minDate(rangeStart, semester.getEndDate().plusDays(1)); if (!semester.getStartDate().isBefore(endExclusive)) { return; @@ -175,7 +356,17 @@ public class ScheduleGeneratorService { List sortedRules = sortRules(rules); for (LocalDate date = semester.getStartDate(); date.isBefore(endExclusive); date = date.plusDays(1)) { for (ScheduleRule rule : sortedRules) { - processRuleForDate(rule, date, targetGroup, targetTeacherId, consumedHoursProgress, null); + processRuleForDate( + rule, + semester, + date, + targetGroup, + targetTeacherId, + consumedHoursProgress, + null, + dateSnapshot, + timeSlotSnapshot + ); } } } @@ -185,19 +376,21 @@ public class ScheduleGeneratorService { } private void processRuleForDate(ScheduleRule rule, - LocalDate date, - StudentGroup targetGroup, - Long targetTeacherId, - Map consumedHoursProgress, - List result) { + Semester semester, + LocalDate date, + StudentGroup targetGroup, + Long targetTeacherId, + Map consumedHoursProgress, + List result, + AcademicDateService.ScheduleSnapshot dateSnapshot, + TimeSlotSnapshot timeSlotSnapshot) { if (rule.getLectureAcademicHours() == null || rule.getLaboratoryAcademicHours() == null || rule.getPracticeAcademicHours() == null) { return; } - Optional semesterOpt = academicDateService.findSemester(date); - if (semesterOpt.isEmpty() || !Objects.equals(semesterOpt.get().getId(), rule.getSemester().getId())) { + if (semester == null || !Objects.equals(semester.getId(), rule.getSemester().getId())) { return; } if (!rule.getSubject().isActiveOn(date)) { @@ -207,8 +400,7 @@ public class ScheduleGeneratorService { return; } - Semester semester = semesterOpt.get(); - List eligibleGroups = eligibleGroups(rule, targetGroup, semester, date); + List eligibleGroups = eligibleGroups(rule, targetGroup, semester, date, dateSnapshot); if (eligibleGroups.isEmpty()) { return; } @@ -233,7 +425,7 @@ public class ScheduleGeneratorService { if (!slot.getTeacher().isActiveOn(date) || !slot.getClassroom().isActiveOn(date)) { continue; } - if (date.isAfter(LocalDate.now()) && Boolean.FALSE.equals(slot.getClassroom().getIsAvailable())) { + if (date.isAfter(businessTime.today()) && Boolean.FALSE.equals(slot.getClassroom().getIsAvailable())) { continue; } ScheduleLessonCategory category = ScheduleLessonCategory.fromLessonType(slot.getLessonType()); @@ -283,7 +475,7 @@ public class ScheduleGeneratorService { .orElse(0); result.add(toRenderedLesson(rule, slot, date, weekNumber, dateParity, lessonGroups, lessonSubgroups, - totalHours, consumedHours, remainingAfterLesson)); + totalHours, consumedHours, remainingAfterLesson, timeSlotSnapshot)); } for (ActiveLessonScope scope : activeScopes) { consumedHoursProgress.put( @@ -294,16 +486,20 @@ public class ScheduleGeneratorService { } } - private List eligibleGroups(ScheduleRule rule, StudentGroup targetGroup, Semester semester, LocalDate date) { + private List eligibleGroups(ScheduleRule rule, + StudentGroup targetGroup, + Semester semester, + LocalDate date, + AcademicDateService.ScheduleSnapshot dateSnapshot) { if (targetGroup != null) { - return targetGroup.isActiveOn(date) && academicDateService.isTheoryDay(targetGroup, semester, date) + return targetGroup.isActiveOn(date) && dateSnapshot.isTheoryDay(targetGroup, semester, date) ? List.of(targetGroup) : List.of(); } return rule.getGroups().stream() .filter(group -> group.isActiveOn(date)) - .filter(group -> academicDateService.isTheoryDay(group, semester, date)) + .filter(group -> dateSnapshot.isTheoryDay(group, semester, date)) .sorted(Comparator.comparing(StudentGroup::getName)) .toList(); } @@ -356,6 +552,12 @@ public class ScheduleGeneratorService { private record ActiveLessonScope(LessonScope scope, int consumedHours, int remainingAfterLesson) { } + private record GroupSemesterKey(Long groupId, Long semesterId) { + } + + private record ScopeOrderKey(Long scopeId, Integer orderNumber) { + } + private RenderedLessonDto toRenderedLesson(ScheduleRule rule, ScheduleRuleSlot slot, LocalDate date, @@ -365,8 +567,9 @@ public class ScheduleGeneratorService { List subgroups, int lessonTypeAcademicHours, int consumedBeforeLesson, - int remainingAfterLesson) { - TimeSlot timeSlot = resolveEffectiveTimeSlot(slot.getTimeSlot(), date); + int remainingAfterLesson, + TimeSlotSnapshot timeSlotSnapshot) { + TimeSlot timeSlot = timeSlotSnapshot.resolve(slot.getTimeSlot(), date); List sortedGroups = groups.stream() .sorted(Comparator.comparing(StudentGroup::getName)) .toList(); @@ -415,23 +618,55 @@ public class ScheduleGeneratorService { return subgroup.getStudentGroup().getName() + ": " + subgroup.getName(); } - private TimeSlot resolveEffectiveTimeSlot(TimeSlot baseSlot, LocalDate date) { - if (baseSlot == null || baseSlot.getOrderNumber() == null) { - return baseSlot; - } - return effectiveScope(date) - .flatMap(scope -> timeSlotRepository.findByTimeSlotScopeIdAndOrderNumber( - scope.getId(), - baseSlot.getOrderNumber())) - .orElse(baseSlot); - } + private static final class TimeSlotSnapshot { - private Optional effectiveScope(LocalDate date) { - return dateAssignmentRepository.findByDate(date) - .map(TimeSlotDateAssignment::getTimeSlotScope) - .or(() -> timeSlotScopeRepository.findByApplyModeAndDayOfWeek( - APPLY_MODE_WEEKDAY, - date.getDayOfWeek().getValue())); + private final Map dateScopeIds; + private final Map weekdayScopeIds; + private final Map slotsByScopeAndOrder; + + private TimeSlotSnapshot(Collection dateAssignments, + Collection weekdayScopes, + Collection timeSlots) { + this.dateScopeIds = dateAssignments.stream() + .collect(Collectors.toUnmodifiableMap( + TimeSlotDateAssignment::getDate, + assignment -> assignment.getTimeSlotScope().getId() + )); + this.weekdayScopeIds = weekdayScopes.stream() + .filter(scope -> scope.getDayOfWeek() != null) + .collect(Collectors.toUnmodifiableMap( + TimeSlotScope::getDayOfWeek, + TimeSlotScope::getId, + (first, second) -> first + )); + this.slotsByScopeAndOrder = timeSlots.stream() + .collect(Collectors.toUnmodifiableMap( + slot -> new ScopeOrderKey( + slot.getTimeSlotScope().getId(), + slot.getOrderNumber() + ), + slot -> slot + )); + } + + private static TimeSlotSnapshot empty() { + return new TimeSlotSnapshot(List.of(), List.of(), List.of()); + } + + private TimeSlot resolve(TimeSlot baseSlot, LocalDate date) { + if (baseSlot == null || baseSlot.getOrderNumber() == null || date == null) { + return baseSlot; + } + Long scopeId = Optional.ofNullable(dateScopeIds.get(date)) + .orElseGet(() -> weekdayScopeIds.get(date.getDayOfWeek().getValue())); + if (scopeId == null) { + return baseSlot; + } + return slotsByScopeAndOrder.getOrDefault( + new ScopeOrderKey(scopeId, baseSlot.getOrderNumber()), + baseSlot + ); + } } public static String dayName(DayOfWeek dayOfWeek) { diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java b/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java index af5cc6a..eb2f021 100644 --- a/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java +++ b/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java @@ -41,10 +41,10 @@ public class ScheduleQueryService { if (date == null) { throw new IllegalArgumentException("Дата расписания обязательна"); } - List generatedLessons = groupRepository.findAll().stream() + List groups = groupRepository.findAll().stream() .filter(group -> groupLifecycleService.mayHaveScheduleInRange(group, date, date)) - .flatMap(group -> scheduleGeneratorService.buildScheduleForGroup(group.getId(), date, date).stream()) .toList(); + List generatedLessons = scheduleGeneratorService.buildScheduleForGroups(groups, date, date); return deduplicate(generatedLessons); } @@ -85,16 +85,70 @@ public class ScheduleQueryService { String parity, LocalDate startDate, LocalDate endDate) { + return searchInternal( + groupId, + teacherId, + classroomId, + departmentId, + subjectId, + lessonTypeId, + timeSlotId, + parity, + startDate, + endDate, + true + ); + } + + /** + * Строит расписание для workload-агрегатов без интерактивного ограничения 50 групп. + * Набор поддерживаемых фильтров намеренно сужен до кафедры и временного слота, чтобы + * этот путь не превратился во второй общий поисковый API. + */ + public List searchForAggregation(Long departmentId, + Long timeSlotId, + LocalDate startDate, + LocalDate endDate) { + return searchInternal( + null, + null, + null, + departmentId, + null, + null, + timeSlotId, + null, + startDate, + endDate, + false + ); + } + + private List searchInternal(Long groupId, + Long teacherId, + Long classroomId, + Long departmentId, + Long subjectId, + Long lessonTypeId, + Long timeSlotId, + String parity, + LocalDate startDate, + LocalDate endDate, + boolean enforceInteractiveGroupLimit) { validateRange(startDate, endDate); List generatedLessons; boolean teacherOnlySearch = groupId == null && departmentId == null && teacherId != null; if (teacherOnlySearch) { generatedLessons = scheduleGeneratorService.buildScheduleForTeacher(teacherId, startDate, endDate); } else { - List groups = resolveGroups(groupId, departmentId, startDate, endDate); - generatedLessons = groups.stream() - .flatMap(group -> scheduleGeneratorService.buildScheduleForGroup(group.getId(), startDate, endDate).stream()) - .toList(); + List groups = resolveGroups( + groupId, + departmentId, + startDate, + endDate, + enforceInteractiveGroupLimit + ); + generatedLessons = scheduleGeneratorService.buildScheduleForGroups(groups, startDate, endDate); } List overrideSnapshot = scheduleOverrideRepository .findByLessonDateBetweenWithDetails(startDate, endDate); @@ -249,7 +303,11 @@ public class ScheduleQueryService { } } - private List resolveGroups(Long groupId, Long departmentId, LocalDate startDate, LocalDate endDate) { + private List resolveGroups(Long groupId, + Long departmentId, + LocalDate startDate, + LocalDate endDate, + boolean enforceInteractiveGroupLimit) { if (groupId != null) { return groupRepository.findById(groupId) .filter(group -> groupLifecycleService.mayHaveScheduleInRange(group, startDate, endDate)) @@ -265,7 +323,9 @@ public class ScheduleQueryService { groups = groups.stream() .filter(group -> groupLifecycleService.mayHaveScheduleInRange(group, startDate, endDate)) .toList(); - if (departmentId == null && groups.size() > MAX_GROUPS_WITHOUT_SCOPE) { + if (enforceInteractiveGroupLimit + && departmentId == null + && groups.size() > MAX_GROUPS_WITHOUT_SCOPE) { throw new IllegalArgumentException("Уточните группу или кафедру: широкий поиск затрагивает " + groups.size() + " активных групп, максимум " + MAX_GROUPS_WITHOUT_SCOPE); } diff --git a/backend/src/main/java/com/magistr/app/service/SubjectImportService.java b/backend/src/main/java/com/magistr/app/service/SubjectImportService.java new file mode 100644 index 0000000..daed6de --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/SubjectImportService.java @@ -0,0 +1,105 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.CreateSubjectRequest; +import com.magistr.app.model.Subject; +import com.magistr.app.repository.SubjectRepository; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; + +@Service +public class SubjectImportService { + + private static final int MAX_NAME_LENGTH = 200; + private static final int MAX_CODE_LENGTH = 20; + + private final SubjectRepository subjectRepository; + + public SubjectImportService(SubjectRepository subjectRepository) { + this.subjectRepository = subjectRepository; + } + + @Transactional + public List importSubjects(List requests, Long departmentId) { + if (requests == null || requests.isEmpty()) { + throw new IllegalArgumentException("Передайте список дисциплин для загрузки"); + } + if (departmentId == null || departmentId <= 0) { + throw new IllegalArgumentException("Кафедра обязательна"); + } + + List candidates = normalizeCandidates(requests); + Map existingByCanonicalName = new LinkedHashMap<>(); + for (SubjectCandidate candidate : candidates) { + subjectRepository.findByNameIgnoreCase(candidate.name()).ifPresent(existing -> { + if (!Objects.equals(existing.getDepartmentId(), departmentId)) { + throw new ScheduleConflictException( + "Дисциплина «" + candidate.name() + "» уже принадлежит другой кафедре" + ); + } + existingByCanonicalName.put(candidate.canonicalName(), existing); + }); + } + + List subjects = new ArrayList<>(candidates.size()); + for (SubjectCandidate candidate : candidates) { + Subject subject = existingByCanonicalName.getOrDefault( + candidate.canonicalName(), + new Subject() + ); + subject.setName(candidate.name()); + subject.setCode(candidate.code()); + subject.setDepartmentId(departmentId); + if (subject.isArchivedRecord()) { + subject.restore(); + } + subjects.add(subject); + } + + try { + return subjectRepository.saveAllAndFlush(subjects); + } catch (DataIntegrityViolationException exception) { + throw new ScheduleConflictException( + "Дисциплина с таким названием уже существует" + ); + } + } + + private List normalizeCandidates(List requests) { + Map unique = new LinkedHashMap<>(); + for (CreateSubjectRequest request : requests) { + if (request == null || request.getName() == null || request.getName().isBlank()) { + continue; + } + String name = request.getName().trim(); + String code = trimToNull(request.getCode()); + if (name.length() > MAX_NAME_LENGTH) { + throw new IllegalArgumentException("Название дисциплины не может быть длиннее 200 символов"); + } + if (code != null && code.length() > MAX_CODE_LENGTH) { + throw new IllegalArgumentException("Код дисциплины не может быть длиннее 20 символов"); + } + String canonicalName = name.toLowerCase(Locale.ROOT); + unique.put(canonicalName, new SubjectCandidate(canonicalName, name, code)); + } + return List.copyOf(unique.values()); + } + + private String trimToNull(String value) { + if (value == null) { + return null; + } + String trimmed = value.trim(); + return trimmed.isEmpty() ? null : trimmed; + } + + private record SubjectCandidate(String canonicalName, String name, String code) { + } +} diff --git a/backend/src/main/java/com/magistr/app/service/TeacherDepartmentService.java b/backend/src/main/java/com/magistr/app/service/TeacherDepartmentService.java new file mode 100644 index 0000000..118af72 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/TeacherDepartmentService.java @@ -0,0 +1,234 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.DepartmentTransferRequest; +import com.magistr.app.model.Department; +import com.magistr.app.model.Role; +import com.magistr.app.model.TeacherDepartmentAssignment; +import com.magistr.app.model.User; +import com.magistr.app.repository.DepartmentRepository; +import com.magistr.app.repository.TeacherDepartmentAssignmentRepository; +import com.magistr.app.repository.UserRepository; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +@Service +public class TeacherDepartmentService { + + private final TeacherDepartmentAssignmentRepository assignmentRepository; + private final UserRepository userRepository; + private final DepartmentRepository departmentRepository; + private final BusinessTimeService businessTime; + + public TeacherDepartmentService(TeacherDepartmentAssignmentRepository assignmentRepository, + UserRepository userRepository, + DepartmentRepository departmentRepository) { + this(assignmentRepository, userRepository, departmentRepository, + BusinessTimeService.systemDefault()); + } + + @Autowired + public TeacherDepartmentService(TeacherDepartmentAssignmentRepository assignmentRepository, + UserRepository userRepository, + DepartmentRepository departmentRepository, + BusinessTimeService businessTime) { + this.assignmentRepository = assignmentRepository; + this.userRepository = userRepository; + this.departmentRepository = departmentRepository; + this.businessTime = businessTime; + } + + @Transactional(readOnly = true) + public List findTeachersForDepartmentAtDate(Long departmentId, LocalDate date) { + if (departmentId == null || date == null) { + return List.of(); + } + Map teachersById = new LinkedHashMap<>(); + assignmentRepository.findDepartmentTeachersAtDate(departmentId, date).stream() + .map(TeacherDepartmentAssignment::getTeacher) + .filter(Objects::nonNull) + .filter(teacher -> teacher.getRole() == Role.TEACHER) + .filter(teacher -> teacher.isActiveOn(date)) + .forEach(teacher -> teachersById.putIfAbsent(teacher.getId(), teacher)); + return List.copyOf(teachersById.values()); + } + + @Transactional(readOnly = true) + public boolean hasAssignmentAtDate(Long teacherId, Long departmentId, LocalDate date) { + return teacherId != null + && departmentId != null + && date != null + && assignmentRepository.existsActiveAssignment(teacherId, departmentId, date); + } + + @Transactional(readOnly = true) + public Optional findPrimaryDepartmentIdAtDate(Long teacherId, LocalDate date) { + if (teacherId == null || date == null) { + return Optional.empty(); + } + return assignmentRepository.findPrimaryAtDate(teacherId, date) + .map(TeacherDepartmentAssignment::getDepartment) + .filter(Objects::nonNull) + .map(Department::getId); + } + + @Transactional(readOnly = true) + public Map> findAssignmentsForTeachersBetween( + Collection teacherIds, + LocalDate startDate, + LocalDate endDate + ) { + if (teacherIds == null || teacherIds.isEmpty() || startDate == null || endDate == null) { + return Map.of(); + } + Set normalizedIds = teacherIds.stream() + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + if (normalizedIds.isEmpty()) { + return Map.of(); + } + return assignmentRepository.findForTeachersBetween(normalizedIds, startDate, endDate).stream() + .collect(Collectors.groupingBy( + assignment -> assignment.getTeacher().getId(), + LinkedHashMap::new, + Collectors.toList() + )); + } + + public Optional resolveDepartmentIdAtDate( + Collection assignments, + LocalDate date + ) { + if (assignments == null || date == null) { + return Optional.empty(); + } + return assignments.stream() + .filter(Objects::nonNull) + .filter(assignment -> isActiveAt(assignment, date)) + .filter(assignment -> assignment.getDepartment() != null) + .sorted(Comparator + .comparing( + (TeacherDepartmentAssignment assignment) -> + !Boolean.TRUE.equals(assignment.getPrimaryAssignment()) + ) + .thenComparing( + TeacherDepartmentAssignment::getValidFrom, + Comparator.nullsLast(Comparator.reverseOrder()) + ) + .thenComparing( + TeacherDepartmentAssignment::getId, + Comparator.nullsLast(Comparator.reverseOrder()) + )) + .map(assignment -> assignment.getDepartment().getId()) + .findFirst(); + } + + @Transactional + public TeacherDepartmentAssignment transferTeacher(Long teacherId, + DepartmentTransferRequest request, + LocalDate today, + Long createdBy) { + if (request == null || request.departmentId() == null) { + throw new IllegalArgumentException("Кафедра обязательна"); + } + LocalDate operationDate = today == null ? businessTime.today() : today; + LocalDate validFrom = request.validFrom() == null ? operationDate : request.validFrom(); + User teacher = userRepository.findByIdForUpdate(teacherId) + .orElseThrow(() -> new IllegalArgumentException("Преподаватель не найден")); + if (teacher.getRole() != Role.TEACHER) { + throw new IllegalArgumentException("Преподаватель не найден"); + } + if (teacher.isArchivedRecord()) { + throw new IllegalArgumentException("Архивного преподавателя нельзя перевести"); + } + Department department = departmentRepository.findById(request.departmentId()) + .filter(candidate -> !candidate.isArchivedRecord()) + .orElseThrow(() -> new IllegalArgumentException("Активная кафедра не найдена")); + + List primaryHistory = new ArrayList<>( + assignmentRepository.findPrimaryHistoryForUpdate(teacherId) + ); + TeacherDepartmentAssignment sameDate = primaryHistory.stream() + .filter(assignment -> validFrom.equals(assignment.getValidFrom())) + .findFirst() + .orElse(null); + if (sameDate != null) { + sameDate.setDepartment(department); + sameDate.setComment(normalizeComment(request.comment())); + sameDate.setCreatedBy(createdBy); + TeacherDepartmentAssignment saved = saveAssignment(sameDate); + synchronizeLegacyDepartment(teacher, primaryHistory, operationDate); + return saved; + } + + primaryHistory.stream() + .filter(assignment -> isActiveAt(assignment, validFrom)) + .findFirst() + .ifPresent(current -> current.setValidTo(validFrom.minusDays(1))); + + LocalDate nextValidFrom = primaryHistory.stream() + .map(TeacherDepartmentAssignment::getValidFrom) + .filter(date -> date != null && date.isAfter(validFrom)) + .min(LocalDate::compareTo) + .orElse(null); + + assignmentRepository.flush(); + TeacherDepartmentAssignment assignment = new TeacherDepartmentAssignment(); + assignment.setTeacher(teacher); + assignment.setDepartment(department); + assignment.setValidFrom(validFrom); + assignment.setValidTo(nextValidFrom == null ? null : nextValidFrom.minusDays(1)); + assignment.setPrimaryAssignment(true); + assignment.setComment(normalizeComment(request.comment())); + assignment.setCreatedBy(createdBy); + TeacherDepartmentAssignment saved = saveAssignment(assignment); + + primaryHistory.add(saved); + synchronizeLegacyDepartment(teacher, primaryHistory, operationDate); + return saved; + } + + private void synchronizeLegacyDepartment(User teacher, + List primaryHistory, + LocalDate date) { + resolveDepartmentIdAtDate(primaryHistory, date).ifPresent(departmentId -> { + if (!Objects.equals(teacher.getDepartmentId(), departmentId)) { + teacher.setDepartmentId(departmentId); + userRepository.save(teacher); + } + }); + } + + private TeacherDepartmentAssignment saveAssignment(TeacherDepartmentAssignment assignment) { + try { + return assignmentRepository.saveAndFlush(assignment); + } catch (DataIntegrityViolationException exception) { + throw new ScheduleConflictException( + "Период основной кафедры пересекается с другим назначением преподавателя" + ); + } + } + + private boolean isActiveAt(TeacherDepartmentAssignment assignment, LocalDate date) { + return assignment.getValidFrom() != null + && !assignment.getValidFrom().isAfter(date) + && (assignment.getValidTo() == null || !assignment.getValidTo().isBefore(date)); + } + + private String normalizeComment(String comment) { + return comment == null || comment.isBlank() ? null : comment.trim(); + } +} diff --git a/backend/src/main/java/com/magistr/app/service/TimeSlotService.java b/backend/src/main/java/com/magistr/app/service/TimeSlotService.java new file mode 100644 index 0000000..3fd66f6 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/TimeSlotService.java @@ -0,0 +1,161 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.TimeSlotDto; +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.TimeSlotScope; +import com.magistr.app.repository.ScheduleRuleSlotRepository; +import com.magistr.app.repository.TimeSlotRepository; +import com.magistr.app.repository.TimeSlotScopeRepository; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.Duration; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.stream.Stream; + +@Service +public class TimeSlotService { + + private static final String APPLY_MODE_DEFAULT = "DEFAULT"; + private static final String SLOT_CONFLICT_MESSAGE = + "Номер пары или интервал времени уже занят в выбранной сетке"; + + private final TimeSlotRepository timeSlotRepository; + private final TimeSlotScopeRepository timeSlotScopeRepository; + private final ScheduleRuleSlotRepository scheduleRuleSlotRepository; + + public TimeSlotService(TimeSlotRepository timeSlotRepository, + TimeSlotScopeRepository timeSlotScopeRepository, + ScheduleRuleSlotRepository scheduleRuleSlotRepository) { + this.timeSlotRepository = timeSlotRepository; + this.timeSlotScopeRepository = timeSlotScopeRepository; + this.scheduleRuleSlotRepository = scheduleRuleSlotRepository; + } + + @Transactional + public TimeSlot create(TimeSlotDto request) { + validate(request); + TimeSlotScope targetScope = lockScope(request.scopeId()); + ensureUniqueAndNonOverlapping(request, null); + + TimeSlot timeSlot = new TimeSlot(); + apply(timeSlot, targetScope, request); + return save(timeSlot); + } + + @Transactional + public TimeSlot update(Long id, TimeSlotDto request) { + validate(request); + TimeSlot timeSlot = timeSlotRepository.findByIdForUpdate(id) + .orElseThrow(() -> new NoSuchElementException("Временной слот не найден")); + + Long currentScopeId = timeSlot.getTimeSlotScope().getId(); + List scopeIds = Stream.of(currentScopeId, request.scopeId()) + .filter(Objects::nonNull) + .distinct() + .sorted() + .toList(); + TimeSlotScope targetScope = null; + for (Long scopeId : scopeIds) { + TimeSlotScope lockedScope = lockScope(scopeId); + if (scopeId.equals(request.scopeId())) { + targetScope = lockedScope; + } + } + if (targetScope == null) { + throw new NoSuchElementException("Сетка времени не найдена"); + } + + if (scheduleRuleSlotRepository.existsByTimeSlotId(id) + && !APPLY_MODE_DEFAULT.equals(targetScope.getApplyMode())) { + throw new IllegalArgumentException( + "Слот базовой сетки, используемый в правилах расписания, нельзя перенести в другую сетку" + ); + } + + ensureUniqueAndNonOverlapping(request, id); + apply(timeSlot, targetScope, request); + return save(timeSlot); + } + + @Transactional + public void delete(Long id) { + TimeSlot timeSlot = timeSlotRepository.findByIdForUpdate(id) + .orElseThrow(() -> new NoSuchElementException("Временной слот не найден")); + if (scheduleRuleSlotRepository.existsByTimeSlotId(id)) { + throw new IllegalArgumentException( + "Нельзя удалить слот, который используется в правилах расписания" + ); + } + try { + timeSlotRepository.delete(timeSlot); + timeSlotRepository.flush(); + } catch (DataIntegrityViolationException exception) { + throw new IllegalArgumentException( + "Нельзя удалить слот, который используется в расписании", + exception + ); + } + } + + private void validate(TimeSlotDto request) { + if (request == null) { + throw new IllegalArgumentException("Данные временного слота обязательны"); + } + if (request.orderNumber() == null || request.orderNumber() <= 0) { + throw new IllegalArgumentException("Номер пары должен быть больше нуля"); + } + if (request.scopeId() == null) { + throw new IllegalArgumentException("Выберите сетку времени"); + } + if (request.startTime() == null || request.endTime() == null) { + throw new IllegalArgumentException("Время начала и окончания обязательно"); + } + if (!request.startTime().isBefore(request.endTime())) { + throw new IllegalArgumentException("Время начала должно быть раньше времени окончания"); + } + if (Duration.between(request.startTime(), request.endTime()).toMinutes() < 1) { + throw new IllegalArgumentException("Длительность временного слота должна быть не меньше одной минуты"); + } + } + + private TimeSlotScope lockScope(Long scopeId) { + return timeSlotScopeRepository.findByIdForUpdate(scopeId) + .orElseThrow(() -> new NoSuchElementException("Сетка времени не найдена")); + } + + private void ensureUniqueAndNonOverlapping(TimeSlotDto request, Long currentId) { + boolean duplicateOrder = currentId == null + ? timeSlotRepository.existsByTimeSlotScopeIdAndOrderNumber( + request.scopeId(), request.orderNumber()) + : timeSlotRepository.existsByTimeSlotScopeIdAndOrderNumberAndIdNot( + request.scopeId(), request.orderNumber(), currentId); + boolean overlapping = currentId == null + ? timeSlotRepository.existsOverlapping( + request.scopeId(), request.startTime(), request.endTime()) + : timeSlotRepository.existsOverlappingExcluding( + request.scopeId(), currentId, request.startTime(), request.endTime()); + if (duplicateOrder || overlapping) { + throw new ScheduleConflictException(SLOT_CONFLICT_MESSAGE); + } + } + + private void apply(TimeSlot timeSlot, TimeSlotScope scope, TimeSlotDto request) { + timeSlot.setOrderNumber(request.orderNumber()); + timeSlot.setTimeSlotScope(scope); + timeSlot.setStartTime(request.startTime()); + timeSlot.setEndTime(request.endTime()); + timeSlot.setDurationMinutes((int) Duration.between(request.startTime(), request.endTime()).toMinutes()); + } + + private TimeSlot save(TimeSlot timeSlot) { + try { + return timeSlotRepository.saveAndFlush(timeSlot); + } catch (DataIntegrityViolationException exception) { + throw new ScheduleConflictException(SLOT_CONFLICT_MESSAGE); + } + } +} diff --git a/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java b/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java index 3b0f9e9..18cd659 100644 --- a/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java +++ b/backend/src/main/java/com/magistr/app/utils/CourseAndSemesterCalculator.java @@ -4,12 +4,13 @@ import com.magistr.app.model.SemesterType; import org.springframework.stereotype.Service; import java.time.LocalDate; +import java.time.ZoneId; @Service public class CourseAndSemesterCalculator { public static int getActualCourse(Integer yearStartStudy) { - return getActualCourse(yearStartStudy, LocalDate.now()); + return getActualCourse(yearStartStudy, LocalDate.now(ZoneId.of("Europe/Moscow"))); } public static int getActualCourse(Integer yearStartStudy, LocalDate date) { @@ -22,7 +23,7 @@ public class CourseAndSemesterCalculator { } public static int getActualSemester(Integer yearStartStudy) { - return getActualSemester(yearStartStudy, LocalDate.now()); + return getActualSemester(yearStartStudy, LocalDate.now(ZoneId.of("Europe/Moscow"))); } public static int getActualSemester(Integer yearStartStudy, LocalDate date) { diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index b87931a..b46180f 100755 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -10,6 +10,11 @@ spring.datasource.driver-class-name=org.postgresql.Driver spring.jpa.hibernate.ddl-auto=none spring.jpa.show-sql=false spring.jpa.open-in-view=false +spring.jpa.properties.hibernate.jdbc.time_zone=UTC +spring.jackson.time-zone=UTC + +# Единая зона календарных бизнес-дат. Абсолютные timestamps хранятся в UTC. +app.time.business-zone=${BUSINESS_TIME_ZONE:Europe/Moscow} # Мультитенантность app.tenants.config-path=${TENANTS_CONFIG_PATH:tenants.json} @@ -33,5 +38,24 @@ app.jwt.access-ttl=${JWT_ACCESS_TOKEN_TTL:15m} app.jwt.refresh-ttl=${JWT_REFRESH_TOKEN_TTL:7d} app.jwt.refresh-cookie-name=${JWT_REFRESH_COOKIE_NAME:magistr_refresh} app.jwt.refresh-cookie-secure=${JWT_REFRESH_COOKIE_SECURE:false} +app.jwt.refresh-cleanup.enabled=${JWT_REFRESH_CLEANUP_ENABLED:true} +app.jwt.refresh-cleanup.retention=${JWT_REFRESH_CLEANUP_RETENTION:30d} +app.jwt.refresh-cleanup.batch-size=${JWT_REFRESH_CLEANUP_BATCH_SIZE:500} +app.jwt.refresh-cleanup.max-batches-per-tenant=${JWT_REFRESH_CLEANUP_MAX_BATCHES:20} +app.jwt.refresh-cleanup.interval-ms=${JWT_REFRESH_CLEANUP_INTERVAL_MS:3600000} +app.jwt.refresh-cleanup.initial-delay-ms=${JWT_REFRESH_CLEANUP_INITIAL_DELAY_MS:60000} + +# Защита входа. X-Forwarded-For принимается только от перечисленных proxy-сетей. +app.login-security.max-failures=${LOGIN_RATE_MAX_FAILURES:5} +app.login-security.attempt-window=${LOGIN_RATE_ATTEMPT_WINDOW:15m} +app.login-security.base-block-duration=${LOGIN_RATE_BASE_BLOCK_DURATION:1m} +app.login-security.max-block-duration=${LOGIN_RATE_MAX_BLOCK_DURATION:15m} +app.login-security.audit-cleanup.enabled=${LOGIN_AUDIT_CLEANUP_ENABLED:true} +app.login-security.audit-cleanup.retention=${LOGIN_AUDIT_RETENTION:90d} +app.login-security.audit-cleanup.batch-size=${LOGIN_AUDIT_CLEANUP_BATCH_SIZE:500} +app.login-security.audit-cleanup.max-batches-per-tenant=${LOGIN_AUDIT_CLEANUP_MAX_BATCHES:20} +app.login-security.audit-cleanup.interval-ms=${LOGIN_AUDIT_CLEANUP_INTERVAL_MS:86400000} +app.login-security.audit-cleanup.initial-delay-ms=${LOGIN_AUDIT_CLEANUP_INITIAL_DELAY_MS:120000} +app.http.trusted-proxy-cidrs=${TRUSTED_PROXY_CIDRS:} #logging.level.root=DEBUG diff --git a/backend/src/main/resources/db/migration/V1__init.sql b/backend/src/main/resources/db/migration/V1__init.sql index a0fc2fe..734d875 100755 --- a/backend/src/main/resources/db/migration/V1__init.sql +++ b/backend/src/main/resources/db/migration/V1__init.sql @@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS departments ( status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT ); @@ -30,7 +30,7 @@ CREATE TABLE IF NOT EXISTS specialties ( status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT ); @@ -46,11 +46,11 @@ CREATE TABLE IF NOT EXISTS specialty_profiles ( specialty_id BIGINT NOT NULL REFERENCES specialties(id) ON DELETE CASCADE, name VARCHAR(500) NOT NULL, description TEXT, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT, CONSTRAINT uq_specialty_profiles_name UNIQUE (specialty_id, name) @@ -72,12 +72,12 @@ CREATE TABLE IF NOT EXISTS users ( full_name VARCHAR(255) NOT NULL, job_title VARCHAR(255) NOT NULL, department_id BIGINT NOT NULL REFERENCES departments(id), - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT ); @@ -96,9 +96,9 @@ CREATE TABLE IF NOT EXISTS auth_refresh_tokens ( user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, tenant VARCHAR(100) NOT NULL, token_hash VARCHAR(64) UNIQUE NOT NULL, - issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - expires_at TIMESTAMP NOT NULL, - revoked_at TIMESTAMP, + issued_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + expires_at TIMESTAMPTZ NOT NULL, + revoked_at TIMESTAMPTZ, rotated_to_token_hash VARCHAR(64), user_agent VARCHAR(512), ip_address VARCHAR(64) @@ -110,6 +110,57 @@ CREATE INDEX IF NOT EXISTS idx_auth_refresh_tokens_user CREATE INDEX IF NOT EXISTS idx_auth_refresh_tokens_tenant_expires ON auth_refresh_tokens(tenant, expires_at); +CREATE INDEX IF NOT EXISTS idx_auth_refresh_tokens_cleanup_expires + ON auth_refresh_tokens(expires_at); + +CREATE INDEX IF NOT EXISTS idx_auth_refresh_tokens_cleanup_revoked + ON auth_refresh_tokens(revoked_at) + WHERE revoked_at IS NOT NULL; + +CREATE TABLE IF NOT EXISTS auth_login_rate_limits ( + id BIGSERIAL PRIMARY KEY, + tenant VARCHAR(100) NOT NULL, + username_normalized VARCHAR(100) NOT NULL, + client_ip VARCHAR(64) NOT NULL, + failure_count INTEGER NOT NULL DEFAULT 0, + window_started_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + last_failure_at TIMESTAMPTZ, + blocked_until TIMESTAMPTZ, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT uq_auth_login_rate_limit_key + UNIQUE (tenant, username_normalized, client_ip), + CONSTRAINT chk_auth_login_rate_limit_failure_count + CHECK (failure_count >= 0) +); + +CREATE INDEX IF NOT EXISTS idx_auth_login_rate_limits_blocked_until + ON auth_login_rate_limits(blocked_until) + WHERE blocked_until IS NOT NULL; + +CREATE INDEX IF NOT EXISTS idx_auth_login_rate_limits_updated_at + ON auth_login_rate_limits(updated_at, id); + +CREATE TABLE IF NOT EXISTS auth_login_attempt_audit ( + id BIGSERIAL PRIMARY KEY, + tenant VARCHAR(100) NOT NULL, + username_normalized VARCHAR(100) NOT NULL, + client_ip VARCHAR(64) NOT NULL, + outcome VARCHAR(20) NOT NULL, + occurred_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + retry_after_seconds INTEGER, + CONSTRAINT chk_auth_login_attempt_audit_outcome + CHECK (outcome IN ('FAILURE', 'BLOCKED')), + CONSTRAINT chk_auth_login_attempt_audit_retry_after + CHECK (retry_after_seconds IS NULL OR retry_after_seconds > 0) +); + +CREATE INDEX IF NOT EXISTS idx_auth_login_attempt_audit_occurred + ON auth_login_attempt_audit(occurred_at, id); + +CREATE INDEX IF NOT EXISTS idx_auth_login_attempt_audit_key + ON auth_login_attempt_audit(tenant, username_normalized, client_ip, occurred_at DESC); + CREATE TABLE IF NOT EXISTS teacher_department_assignments ( id BIGSERIAL PRIMARY KEY, teacher_id BIGINT NOT NULL REFERENCES users(id), @@ -118,7 +169,7 @@ CREATE TABLE IF NOT EXISTS teacher_department_assignments ( valid_to DATE, is_primary BOOLEAN NOT NULL DEFAULT TRUE, comment TEXT, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, created_by BIGINT REFERENCES users(id), CONSTRAINT chk_teacher_department_dates CHECK (valid_to IS NULL OR valid_to >= valid_from) ); @@ -156,10 +207,10 @@ CREATE TABLE IF NOT EXISTS teacher_creation_requests ( comment TEXT, status VARCHAR(20) NOT NULL DEFAULT 'PENDING', requested_by BIGINT REFERENCES users(id), - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, reviewed_by BIGINT REFERENCES users(id), - reviewed_at TIMESTAMP, + reviewed_at TIMESTAMPTZ, review_comment TEXT, created_teacher_id BIGINT REFERENCES users(id), CONSTRAINT chk_teacher_creation_request_status CHECK (status IN ('PENDING', 'APPROVED', 'REJECTED')) @@ -182,11 +233,11 @@ CREATE TABLE IF NOT EXISTS education_forms ( id BIGSERIAL PRIMARY KEY, name VARCHAR(100) UNIQUE NOT NULL, description TEXT, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT ); @@ -209,11 +260,11 @@ CREATE TABLE IF NOT EXISTS student_groups ( specialty_id BIGINT NOT NULL REFERENCES specialties(id), specialty_profile_id BIGINT NOT NULL REFERENCES specialty_profiles(id), year_start_study BIGINT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT ); @@ -242,7 +293,7 @@ CREATE TABLE IF NOT EXISTS subgroups ( status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT, UNIQUE(group_id, name) @@ -271,33 +322,38 @@ ON CONFLICT (group_id, name) DO NOTHING; -- Дисциплины CREATE TABLE IF NOT EXISTS subjects ( id BIGSERIAL PRIMARY KEY, - name VARCHAR(200) UNIQUE NOT NULL, + name VARCHAR(200) NOT NULL, code VARCHAR(20), department_id BIGINT NOT NULL REFERENCES departments(id), description TEXT, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT ); +CREATE UNIQUE INDEX IF NOT EXISTS uq_subjects_name_ci + ON subjects (LOWER(name)); +COMMENT ON INDEX uq_subjects_name_ci IS + 'Глобально уникальное название дисциплины без учёта регистра'; + INSERT INTO subjects (name, department_id) VALUES ('Высшая математика', 1), ('Философия', 1), ('Информатика', 1), ('Базы данных', 1), ('Английский язык', 1) -ON CONFLICT (name) DO NOTHING; +ON CONFLICT DO NOTHING; CREATE TABLE IF NOT EXISTS subject_comments ( id BIGSERIAL PRIMARY KEY, subject_id BIGINT NOT NULL REFERENCES subjects(id), author_id BIGINT REFERENCES users(id), comment TEXT NOT NULL, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_subject_comments_subject @@ -326,7 +382,7 @@ CREATE TABLE IF NOT EXISTS equipments ( status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT ); @@ -349,11 +405,11 @@ CREATE TABLE IF NOT EXISTS classrooms ( floor INT, is_available BOOLEAN DEFAULT TRUE, description TEXT, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, - archived_at TIMESTAMP, + archived_at TIMESTAMPTZ, archived_by BIGINT, archive_reason TEXT ); @@ -561,8 +617,8 @@ CREATE TABLE IF NOT EXISTS academic_calendars ( specialty_profile_id BIGINT NOT NULL REFERENCES specialty_profiles(id), study_form_id BIGINT NOT NULL REFERENCES education_forms(id), course_count INT NOT NULL DEFAULT 4, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, CONSTRAINT chk_academic_calendars_course_count CHECK (course_count BETWEEN 1 AND 8), CONSTRAINT uq_academic_calendar_title UNIQUE (academic_year_id, specialty_profile_id, study_form_id, title) ); @@ -622,7 +678,7 @@ CREATE TABLE IF NOT EXISTS academic_calendar_subjects ( calendar_id BIGINT NOT NULL REFERENCES academic_calendars(id) ON DELETE CASCADE, semester_number INT NOT NULL, subject_id BIGINT NOT NULL REFERENCES subjects(id), - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, CONSTRAINT chk_academic_calendar_subjects_semester_positive CHECK (semester_number > 0), CONSTRAINT uq_academic_calendar_subject UNIQUE (calendar_id, semester_number, subject_id) ); @@ -638,7 +694,7 @@ CREATE TABLE IF NOT EXISTS student_group_calendar_assignments ( group_id BIGINT NOT NULL REFERENCES student_groups(id) ON DELETE CASCADE, academic_year_id BIGINT NOT NULL REFERENCES academic_years(id) ON DELETE CASCADE, calendar_id BIGINT NOT NULL REFERENCES academic_calendars(id) ON DELETE CASCADE, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, CONSTRAINT uq_group_calendar_year UNIQUE (group_id, academic_year_id) ); @@ -654,7 +710,9 @@ FROM student_groups sg JOIN academic_years ay ON ay.title = '2025-2026' JOIN academic_calendars calendar ON calendar.academic_year_id = ay.id + AND calendar.specialty_id = sg.specialty_id AND calendar.specialty_profile_id = sg.specialty_profile_id + AND calendar.study_form_id = sg.education_form_id WHERE sg.name IN ('ИВТ-21-1', 'ИБ-41м') ON CONFLICT (group_id, academic_year_id) DO NOTHING; @@ -674,7 +732,7 @@ CREATE TABLE IF NOT EXISTS schedule_rules ( version_group_id BIGINT, change_reason TEXT, created_by BIGINT REFERENCES users(id), - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT chk_schedule_rules_type_hours_non_negative CHECK ( lecture_academic_hours >= 0 AND laboratory_academic_hours >= 0 @@ -718,7 +776,7 @@ CREATE TABLE IF NOT EXISTS schedule_rule_slots ( classroom_locked BOOLEAN NOT NULL DEFAULT FALSE, teacher_locked BOOLEAN NOT NULL DEFAULT FALSE, locked_by BIGINT REFERENCES users(id), - locked_at TIMESTAMP, + locked_at TIMESTAMPTZ, lock_comment TEXT, CONSTRAINT chk_schedule_rule_slots_day CHECK (day_of_week BETWEEN 1 AND 7), CONSTRAINT chk_schedule_rule_slots_parity CHECK (parity IN ('BOTH', 'EVEN', 'ODD')), @@ -749,7 +807,7 @@ CREATE TABLE IF NOT EXISTS schedule_overrides ( new_lesson_format VARCHAR(30), comment TEXT, created_by BIGINT REFERENCES users(id), - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT chk_schedule_overrides_action CHECK (action IN ('MOVE', 'CANCEL', 'REPLACE')), CONSTRAINT uq_schedule_overrides_slot_date UNIQUE (base_rule_slot_id, lesson_date) ); @@ -1029,6 +1087,13 @@ COMMENT ON COLUMN auth_refresh_tokens.revoked_at IS 'Дата и время от COMMENT ON COLUMN auth_refresh_tokens.rotated_to_token_hash IS 'Хэш следующего refresh-токена после ротации'; COMMENT ON COLUMN auth_refresh_tokens.user_agent IS 'User-Agent клиента при выдаче токена'; COMMENT ON COLUMN auth_refresh_tokens.ip_address IS 'IP-адрес клиента при выдаче токена'; +COMMENT ON TABLE auth_login_rate_limits IS 'Общий для backend-pod счётчик неудачных попыток входа'; +COMMENT ON COLUMN auth_login_rate_limits.username_normalized IS 'Нормализованное имя пользователя для ключа rate limit'; +COMMENT ON COLUMN auth_login_rate_limits.client_ip IS 'IP клиента, принятый только от настроенного доверенного proxy'; +COMMENT ON COLUMN auth_login_rate_limits.blocked_until IS 'Момент окончания временной блокировки комбинации tenant, username и IP'; +COMMENT ON TABLE auth_login_attempt_audit IS 'Аудит отклонённых и заблокированных попыток входа без паролей'; +COMMENT ON COLUMN auth_login_attempt_audit.outcome IS 'Результат попытки: FAILURE или BLOCKED'; +COMMENT ON COLUMN auth_login_attempt_audit.retry_after_seconds IS 'Возвращённый клиенту срок Retry-After в секундах'; COMMENT ON COLUMN education_forms.id IS 'ID формы обучения'; COMMENT ON COLUMN education_forms.name IS 'Название формы обучения'; @@ -1130,3 +1195,856 @@ COMMENT ON COLUMN student_group_calendar_assignments.calendar_id IS 'ID назн COMMENT ON COLUMN teacher_lesson_types.user_id IS 'ID преподавателя'; COMMENT ON COLUMN teacher_lesson_types.subject_id IS 'ID предмета'; COMMENT ON COLUMN teacher_lesson_types.lesson_type_id IS 'ID типа занятия'; + +-- ========================================== +-- Ограничения активных подгрупп +-- ========================================== +ALTER TABLE subgroups + DROP CONSTRAINT IF EXISTS subgroups_group_id_name_key; + +CREATE UNIQUE INDEX IF NOT EXISTS ux_subgroups_active_group_name + ON subgroups (group_id, lower(name)) + WHERE status <> 'ARCHIVED'; + +-- ========================================== +-- Инварианты точечных изменений расписания +-- ========================================== +DO $$ +DECLARE + cancel_violations BIGINT; + move_violations BIGINT; + replace_violations BIGINT; + format_violations BIGINT; +BEGIN + SELECT count(*) + INTO cancel_violations + FROM schedule_overrides + WHERE action = 'CANCEL' + AND (new_time_slot_id IS NOT NULL + OR new_classroom_id IS NOT NULL + OR new_teacher_id IS NOT NULL + OR new_lesson_format IS NOT NULL); + + SELECT count(*) + INTO move_violations + FROM schedule_overrides + WHERE action = 'MOVE' + AND new_time_slot_id IS NULL + AND new_classroom_id IS NULL; + + SELECT count(*) + INTO replace_violations + FROM schedule_overrides + WHERE action = 'REPLACE' + AND new_teacher_id IS NULL + AND new_classroom_id IS NULL + AND new_lesson_format IS NULL; + + SELECT count(*) + INTO format_violations + FROM schedule_overrides + WHERE new_lesson_format IS NOT NULL + AND new_lesson_format NOT IN ('Очно', 'Онлайн'); + + IF cancel_violations > 0 + OR move_violations > 0 + OR replace_violations > 0 + OR format_violations > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = format( + 'Невозможно создать baseline: невалидные точечные изменения CANCEL=%s, MOVE=%s, REPLACE=%s, формат=%s. Исправьте seed-данные V1 и повторите создание схемы.', + cancel_violations, + move_violations, + replace_violations, + format_violations + ); + END IF; +END $$; + +ALTER TABLE schedule_overrides + ADD CONSTRAINT chk_schedule_overrides_cancel_payload + CHECK ( + action <> 'CANCEL' + OR ( + new_time_slot_id IS NULL + AND new_classroom_id IS NULL + AND new_teacher_id IS NULL + AND new_lesson_format IS NULL + ) + ) NOT VALID, + ADD CONSTRAINT chk_schedule_overrides_move_payload + CHECK ( + action <> 'MOVE' + OR new_time_slot_id IS NOT NULL + OR new_classroom_id IS NOT NULL + ) NOT VALID, + ADD CONSTRAINT chk_schedule_overrides_replace_payload + CHECK ( + action <> 'REPLACE' + OR new_teacher_id IS NOT NULL + OR new_classroom_id IS NOT NULL + OR new_lesson_format IS NOT NULL + ) NOT VALID, + ADD CONSTRAINT chk_schedule_overrides_format + CHECK ( + new_lesson_format IS NULL + OR new_lesson_format IN ('Очно', 'Онлайн') + ) NOT VALID; + +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_cancel_payload; + +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_move_payload; + +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_replace_payload; + +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_format; + +-- ========================================== +-- Инварианты правил расписания +-- ========================================== +DO $$ +DECLARE + lecture_violations BIGINT; + laboratory_violations BIGINT; + practice_violations BIGINT; +BEGIN + SELECT count(*) + INTO lecture_violations + FROM schedule_rules + WHERE mod(lecture_academic_hours, 2) <> 0; + + SELECT count(*) + INTO laboratory_violations + FROM schedule_rules + WHERE mod(laboratory_academic_hours, 2) <> 0; + + SELECT count(*) + INTO practice_violations + FROM schedule_rules + WHERE mod(practice_academic_hours, 2) <> 0; + + IF lecture_violations > 0 + OR laboratory_violations > 0 + OR practice_violations > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = format( + 'Невозможно создать baseline: нечётные академические часы правил расписания — лекции=%s, лабораторные=%s, практики=%s. Исправьте seed-данные V1 и повторите создание схемы.', + lecture_violations, + laboratory_violations, + practice_violations + ); + END IF; +END $$; + +DO $$ +DECLARE + duplicate_slot_groups BIGINT; +BEGIN + SELECT count(*) + INTO duplicate_slot_groups + FROM ( + SELECT + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + FROM schedule_rule_slots + GROUP BY + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + HAVING count(*) > 1 + ) duplicates; + + IF duplicate_slot_groups > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23505', + MESSAGE = format( + 'Невозможно создать baseline: найдено групп точных дублей слотов правил=%s. Исправьте seed-данные V1 и повторите создание схемы.', + duplicate_slot_groups + ); + END IF; +END $$; + +ALTER TABLE schedule_rules + ADD CONSTRAINT chk_schedule_rules_academic_hours_even + CHECK ( + mod(lecture_academic_hours, 2) = 0 + AND mod(laboratory_academic_hours, 2) = 0 + AND mod(practice_academic_hours, 2) = 0 + ) NOT VALID; + +ALTER TABLE schedule_rules + VALIDATE CONSTRAINT chk_schedule_rules_academic_hours_even; + +ALTER TABLE schedule_rule_slots + ADD CONSTRAINT uq_schedule_rule_slots_exact_payload + UNIQUE ( + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + ); + +-- ========================================== +-- Инварианты временных слотов +-- ========================================== +DO $$ +DECLARE + duration_violations BIGINT; + overlap_violations BIGINT; + scope_violations BIGINT; +BEGIN + SELECT count(*) + INTO duration_violations + FROM time_slots + WHERE duration_minutes <> floor(extract(epoch FROM (end_time - start_time)) / 60)::INT; + + SELECT count(*) + INTO overlap_violations + FROM time_slots first_slot + JOIN time_slots second_slot + ON second_slot.time_slot_scope_id = first_slot.time_slot_scope_id + AND second_slot.id > first_slot.id + AND first_slot.start_time < second_slot.end_time + AND second_slot.start_time < first_slot.end_time; + + SELECT count(*) + INTO scope_violations + FROM schedule_rule_slots rule_slot + JOIN time_slots time_slot ON time_slot.id = rule_slot.time_slot_id + JOIN time_slot_scopes scope ON scope.id = time_slot.time_slot_scope_id + WHERE scope.apply_mode <> 'DEFAULT'; + + IF duration_violations > 0 + OR overlap_violations > 0 + OR scope_violations > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = format( + 'Невозможно создать baseline: неверная длительность слотов=%s, пересекающиеся интервалы=%s, слоты правил вне базовой сетки=%s. Исправьте seed-данные V1 и повторите создание схемы.', + duration_violations, + overlap_violations, + scope_violations + ); + END IF; +END $$; + +CREATE EXTENSION IF NOT EXISTS btree_gist; + +ALTER TABLE time_slots + ADD CONSTRAINT chk_time_slots_duration_matches_range + CHECK ( + duration_minutes = floor(extract(epoch FROM (end_time - start_time)) / 60)::INT + ) NOT VALID; + +ALTER TABLE time_slots + VALIDATE CONSTRAINT chk_time_slots_duration_matches_range; + +ALTER TABLE time_slots + ADD CONSTRAINT ex_time_slots_scope_no_overlap + EXCLUDE USING gist ( + time_slot_scope_id WITH =, + (numrange( + extract(epoch FROM start_time), + extract(epoch FROM end_time), + '[)' + )) WITH && + ); + +CREATE OR REPLACE FUNCTION enforce_schedule_rule_slot_default_scope() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +DECLARE + target_apply_mode VARCHAR(20); +BEGIN + SELECT scope.apply_mode + INTO target_apply_mode + FROM time_slots time_slot + JOIN time_slot_scopes scope ON scope.id = time_slot.time_slot_scope_id + WHERE time_slot.id = NEW.time_slot_id + FOR KEY SHARE OF time_slot, scope; + + IF target_apply_mode IS NOT NULL AND target_apply_mode <> 'DEFAULT' THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'В правилах расписания можно использовать только слоты базовой сетки времени'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_schedule_rule_slots_default_scope + BEFORE INSERT OR UPDATE OF time_slot_id + ON schedule_rule_slots + FOR EACH ROW + EXECUTE FUNCTION enforce_schedule_rule_slot_default_scope(); + +CREATE OR REPLACE FUNCTION prevent_used_time_slot_scope_change() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +DECLARE + target_apply_mode VARCHAR(20); +BEGIN + SELECT apply_mode + INTO target_apply_mode + FROM time_slot_scopes + WHERE id = NEW.time_slot_scope_id; + + IF target_apply_mode <> 'DEFAULT' + AND EXISTS ( + SELECT 1 + FROM schedule_rule_slots + WHERE time_slot_id = OLD.id + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Слот, используемый в правилах расписания, нельзя переносить из базовой сетки времени'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_time_slots_protect_used_scope + BEFORE UPDATE OF time_slot_scope_id + ON time_slots + FOR EACH ROW + WHEN (OLD.time_slot_scope_id IS DISTINCT FROM NEW.time_slot_scope_id) + EXECUTE FUNCTION prevent_used_time_slot_scope_change(); + +CREATE OR REPLACE FUNCTION prevent_used_time_slot_scope_mode_change() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +BEGIN + IF NEW.apply_mode <> 'DEFAULT' + AND EXISTS ( + SELECT 1 + FROM time_slots time_slot + JOIN schedule_rule_slots rule_slot ON rule_slot.time_slot_id = time_slot.id + WHERE time_slot.time_slot_scope_id = OLD.id + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Сетку со слотами, используемыми в правилах расписания, нельзя сделать небазовой'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_time_slot_scopes_protect_used_mode + BEFORE UPDATE OF apply_mode + ON time_slot_scopes + FOR EACH ROW + WHEN (OLD.apply_mode IS DISTINCT FROM NEW.apply_mode) + EXECUTE FUNCTION prevent_used_time_slot_scope_mode_change(); + +-- ========================================== +-- Инварианты учебных периодов +-- ========================================== +DO $$ +DECLARE + academic_year_overlap_violations BIGINT; + semester_bounds_violations BIGINT; + semester_overlap_violations BIGINT; +BEGIN + SELECT count(*) + INTO academic_year_overlap_violations + FROM academic_years first_year + JOIN academic_years second_year + ON second_year.id > first_year.id + AND first_year.start_date <= second_year.end_date + AND second_year.start_date <= first_year.end_date; + + SELECT count(*) + INTO semester_bounds_violations + FROM semesters semester + JOIN academic_years academic_year ON academic_year.id = semester.academic_year_id + WHERE semester.start_date < academic_year.start_date + OR semester.end_date > academic_year.end_date; + + SELECT count(*) + INTO semester_overlap_violations + FROM semesters first_semester + JOIN semesters second_semester + ON second_semester.academic_year_id = first_semester.academic_year_id + AND second_semester.id > first_semester.id + AND first_semester.start_date <= second_semester.end_date + AND second_semester.start_date <= first_semester.end_date; + + IF academic_year_overlap_violations > 0 + OR semester_bounds_violations > 0 + OR semester_overlap_violations > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = format( + 'Невозможно создать baseline: пересечения учебных годов=%s, семестры вне границ года=%s, пересечения семестров=%s. Исправьте seed-данные V1 и повторите создание схемы.', + academic_year_overlap_violations, + semester_bounds_violations, + semester_overlap_violations + ); + END IF; +END $$; + +ALTER TABLE academic_years + ADD CONSTRAINT ex_academic_years_no_overlap + EXCLUDE USING gist ( + (daterange(start_date, end_date, '[]')) WITH && + ); + +ALTER TABLE semesters + ADD CONSTRAINT ex_semesters_year_no_overlap + EXCLUDE USING gist ( + academic_year_id WITH =, + (daterange(start_date, end_date, '[]')) WITH && + ); + +CREATE OR REPLACE FUNCTION enforce_semester_within_academic_year() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +DECLARE + academic_year_start DATE; + academic_year_end DATE; +BEGIN + SELECT start_date, end_date + INTO academic_year_start, academic_year_end + FROM academic_years + WHERE id = NEW.academic_year_id + FOR KEY SHARE; + + IF academic_year_start IS NOT NULL + AND ( + NEW.start_date < academic_year_start + OR NEW.end_date > academic_year_end + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Семестр должен полностью находиться в границах учебного года'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_semesters_within_academic_year + BEFORE INSERT OR UPDATE OF academic_year_id, start_date, end_date + ON semesters + FOR EACH ROW + EXECUTE FUNCTION enforce_semester_within_academic_year(); + +CREATE OR REPLACE FUNCTION prevent_academic_year_excluding_semesters() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +BEGIN + IF EXISTS ( + SELECT 1 + FROM semesters semester + WHERE semester.academic_year_id = OLD.id + AND ( + semester.start_date < NEW.start_date + OR semester.end_date > NEW.end_date + ) + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Новые границы учебного года не включают все его семестры'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_academic_years_include_semesters + BEFORE UPDATE OF start_date, end_date + ON academic_years + FOR EACH ROW + WHEN (OLD.start_date IS DISTINCT FROM NEW.start_date OR OLD.end_date IS DISTINCT FROM NEW.end_date) + EXECUTE FUNCTION prevent_academic_year_excluding_semesters(); + +-- ========================================== +-- Инварианты зависимостей календарных графиков +-- ========================================== +DO $$ +DECLARE + assignment_violations BIGINT; + calendar_day_violations BIGINT; + calendar_subject_violations BIGINT; +BEGIN + SELECT count(*) + INTO assignment_violations + FROM student_group_calendar_assignments assignment + JOIN student_groups student_group ON student_group.id = assignment.group_id + JOIN academic_years academic_year ON academic_year.id = assignment.academic_year_id + JOIN academic_calendars calendar ON calendar.id = assignment.calendar_id + WHERE assignment.academic_year_id <> calendar.academic_year_id + OR student_group.specialty_id <> calendar.specialty_id + OR student_group.specialty_profile_id <> calendar.specialty_profile_id + OR student_group.education_form_id <> calendar.study_form_id + OR CASE + WHEN extract(month FROM academic_year.start_date) >= 9 + THEN extract(year FROM academic_year.start_date)::INT + - student_group.year_start_study::INT + 1 + ELSE extract(year FROM academic_year.start_date)::INT + - student_group.year_start_study::INT + END NOT BETWEEN 1 AND calendar.course_count; + + SELECT count(*) + INTO calendar_day_violations + FROM academic_calendar_days calendar_day + JOIN academic_calendars calendar ON calendar.id = calendar_day.calendar_id + JOIN academic_years academic_year ON academic_year.id = calendar.academic_year_id + WHERE calendar_day.course_number > calendar.course_count + OR calendar_day.date < academic_year.start_date + OR calendar_day.date > academic_year.end_date; + + SELECT count(*) + INTO calendar_subject_violations + FROM academic_calendar_subjects calendar_subject + JOIN academic_calendars calendar ON calendar.id = calendar_subject.calendar_id + WHERE calendar_subject.semester_number > calendar.course_count * 2; + + IF assignment_violations > 0 + OR calendar_day_violations > 0 + OR calendar_subject_violations > 0 THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = format( + 'Невозможно создать baseline: несовместимые назначения графиков=%s, строки сетки вне измерений=%s, дисциплины вне измерений=%s. Исправьте seed-данные V1 и повторите создание схемы.', + assignment_violations, + calendar_day_violations, + calendar_subject_violations + ); + END IF; +END $$; + +CREATE OR REPLACE FUNCTION calculate_group_course_for_academic_year( + academic_year_start DATE, + group_start_year BIGINT +) +RETURNS INTEGER +LANGUAGE SQL +IMMUTABLE +STRICT +AS $$ + SELECT CASE + WHEN extract(month FROM academic_year_start) >= 9 + THEN extract(year FROM academic_year_start)::INT - group_start_year::INT + 1 + ELSE extract(year FROM academic_year_start)::INT - group_start_year::INT + END +$$; + +CREATE OR REPLACE FUNCTION enforce_calendar_assignment_compatibility() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +DECLARE + calendar_academic_year_id BIGINT; + calendar_specialty_id BIGINT; + calendar_profile_id BIGINT; + calendar_study_form_id BIGINT; + calendar_course_count INTEGER; + group_specialty_id BIGINT; + group_profile_id BIGINT; + group_study_form_id BIGINT; + group_course INTEGER; +BEGIN + SELECT + calendar.academic_year_id, + calendar.specialty_id, + calendar.specialty_profile_id, + calendar.study_form_id, + calendar.course_count, + student_group.specialty_id, + student_group.specialty_profile_id, + student_group.education_form_id, + calculate_group_course_for_academic_year( + academic_year.start_date, + student_group.year_start_study + ) + INTO + calendar_academic_year_id, + calendar_specialty_id, + calendar_profile_id, + calendar_study_form_id, + calendar_course_count, + group_specialty_id, + group_profile_id, + group_study_form_id, + group_course + FROM student_groups student_group + CROSS JOIN academic_calendars calendar + JOIN academic_years academic_year ON academic_year.id = NEW.academic_year_id + WHERE student_group.id = NEW.group_id + AND calendar.id = NEW.calendar_id + FOR NO KEY UPDATE OF student_group + FOR KEY SHARE OF calendar, academic_year; + + IF calendar_academic_year_id IS NOT NULL + AND ( + NEW.academic_year_id <> calendar_academic_year_id + OR group_specialty_id <> calendar_specialty_id + OR group_profile_id <> calendar_profile_id + OR group_study_form_id <> calendar_study_form_id + OR group_course NOT BETWEEN 1 AND calendar_course_count + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Календарный график не соответствует учебному году, параметрам или курсу группы'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_calendar_assignments_compatible + BEFORE INSERT OR UPDATE OF group_id, academic_year_id, calendar_id + ON student_group_calendar_assignments + FOR EACH ROW + EXECUTE FUNCTION enforce_calendar_assignment_compatibility(); + +CREATE OR REPLACE FUNCTION prevent_incompatible_academic_calendar_change() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +DECLARE + academic_year_start DATE; + academic_year_end DATE; +BEGIN + SELECT start_date, end_date + INTO academic_year_start, academic_year_end + FROM academic_years + WHERE id = NEW.academic_year_id + FOR KEY SHARE; + + IF EXISTS ( + SELECT 1 + FROM student_group_calendar_assignments assignment + JOIN student_groups student_group ON student_group.id = assignment.group_id + JOIN academic_years assigned_year ON assigned_year.id = assignment.academic_year_id + WHERE assignment.calendar_id = OLD.id + AND ( + assignment.academic_year_id <> NEW.academic_year_id + OR student_group.specialty_id <> NEW.specialty_id + OR student_group.specialty_profile_id <> NEW.specialty_profile_id + OR student_group.education_form_id <> NEW.study_form_id + OR calculate_group_course_for_academic_year( + assigned_year.start_date, + student_group.year_start_study + ) NOT BETWEEN 1 AND NEW.course_count + ) + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Нельзя изменить график: сохранённые назначения групп станут несовместимыми'; + END IF; + + IF EXISTS ( + SELECT 1 + FROM academic_calendar_days calendar_day + WHERE calendar_day.calendar_id = OLD.id + AND ( + calendar_day.course_number > NEW.course_count + OR calendar_day.date < academic_year_start + OR calendar_day.date > academic_year_end + ) + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Нельзя изменить график: сохранённая сетка выходит за новые измерения'; + END IF; + + IF EXISTS ( + SELECT 1 + FROM academic_calendar_subjects calendar_subject + WHERE calendar_subject.calendar_id = OLD.id + AND calendar_subject.semester_number > NEW.course_count * 2 + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Нельзя изменить график: дисциплины выходят за новые измерения'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_academic_calendars_protect_dependencies + BEFORE UPDATE OF academic_year_id, specialty_id, specialty_profile_id, study_form_id, course_count + ON academic_calendars + FOR EACH ROW + EXECUTE FUNCTION prevent_incompatible_academic_calendar_change(); + +CREATE OR REPLACE FUNCTION prevent_incompatible_student_group_change() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +BEGIN + IF EXISTS ( + SELECT 1 + FROM student_group_calendar_assignments assignment + JOIN academic_calendars calendar ON calendar.id = assignment.calendar_id + JOIN academic_years academic_year ON academic_year.id = assignment.academic_year_id + WHERE assignment.group_id = OLD.id + AND ( + assignment.academic_year_id <> calendar.academic_year_id + OR NEW.specialty_id <> calendar.specialty_id + OR NEW.specialty_profile_id <> calendar.specialty_profile_id + OR NEW.education_form_id <> calendar.study_form_id + OR calculate_group_course_for_academic_year( + academic_year.start_date, + NEW.year_start_study + ) NOT BETWEEN 1 AND calendar.course_count + ) + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Нельзя изменить группу: сохранённые назначения календарных графиков станут несовместимыми'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_student_groups_protect_calendar_assignments + BEFORE UPDATE OF education_form_id, specialty_id, specialty_profile_id, year_start_study + ON student_groups + FOR EACH ROW + EXECUTE FUNCTION prevent_incompatible_student_group_change(); + +CREATE OR REPLACE FUNCTION enforce_calendar_day_dimensions() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +DECLARE + calendar_course_count INTEGER; + academic_year_start DATE; + academic_year_end DATE; +BEGIN + SELECT calendar.course_count, academic_year.start_date, academic_year.end_date + INTO calendar_course_count, academic_year_start, academic_year_end + FROM academic_calendars calendar + JOIN academic_years academic_year ON academic_year.id = calendar.academic_year_id + WHERE calendar.id = NEW.calendar_id + FOR KEY SHARE OF calendar, academic_year; + + IF calendar_course_count IS NOT NULL + AND ( + NEW.course_number > calendar_course_count + OR NEW.date < academic_year_start + OR NEW.date > academic_year_end + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Строка сетки выходит за измерения календарного графика'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_calendar_days_dimensions + BEFORE INSERT OR UPDATE OF calendar_id, course_number, date + ON academic_calendar_days + FOR EACH ROW + EXECUTE FUNCTION enforce_calendar_day_dimensions(); + +CREATE OR REPLACE FUNCTION enforce_calendar_subject_dimensions() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +DECLARE + calendar_course_count INTEGER; +BEGIN + SELECT course_count + INTO calendar_course_count + FROM academic_calendars + WHERE id = NEW.calendar_id + FOR KEY SHARE; + + IF calendar_course_count IS NOT NULL + AND NEW.semester_number > calendar_course_count * 2 THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Номер семестра дисциплины выходит за измерения календарного графика'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_calendar_subjects_dimensions + BEFORE INSERT OR UPDATE OF calendar_id, semester_number + ON academic_calendar_subjects + FOR EACH ROW + EXECUTE FUNCTION enforce_calendar_subject_dimensions(); + +CREATE OR REPLACE FUNCTION prevent_academic_year_breaking_calendar_dependencies() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +BEGIN + IF EXISTS ( + SELECT 1 + FROM academic_calendars calendar + JOIN academic_calendar_days calendar_day ON calendar_day.calendar_id = calendar.id + WHERE calendar.academic_year_id = OLD.id + AND ( + calendar_day.date < NEW.start_date + OR calendar_day.date > NEW.end_date + ) + ) OR EXISTS ( + SELECT 1 + FROM student_group_calendar_assignments assignment + JOIN student_groups student_group ON student_group.id = assignment.group_id + JOIN academic_calendars calendar ON calendar.id = assignment.calendar_id + WHERE assignment.academic_year_id = OLD.id + AND calculate_group_course_for_academic_year( + NEW.start_date, + student_group.year_start_study + ) NOT BETWEEN 1 AND calendar.course_count + ) THEN + RAISE EXCEPTION USING + ERRCODE = '23514', + MESSAGE = 'Новые границы учебного года нарушают календарные сетки или назначения групп'; + END IF; + + RETURN NEW; +END $$; + +CREATE TRIGGER trg_academic_years_protect_calendar_dependencies + BEFORE UPDATE OF start_date, end_date + ON academic_years + FOR EACH ROW + WHEN (OLD.start_date IS DISTINCT FROM NEW.start_date OR OLD.end_date IS DISTINCT FROM NEW.end_date) + EXECUTE FUNCTION prevent_academic_year_breaking_calendar_dependencies(); + +-- ========================================== +-- Историческая принадлежность преподавателей к кафедрам +-- ========================================== +ALTER TABLE teacher_department_assignments + ADD CONSTRAINT ex_teacher_primary_department_no_overlap + EXCLUDE USING gist ( + teacher_id WITH =, + (daterange(valid_from, COALESCE(valid_to, 'infinity'::DATE), '[]')) WITH && + ) + WHERE (is_primary = TRUE); + +COMMENT ON CONSTRAINT ex_teacher_primary_department_no_overlap + ON teacher_department_assignments + IS 'У преподавателя не могут пересекаться периоды двух основных кафедр'; diff --git a/backend/src/main/resources/db/migration/V2__subgroups_active_unique_name.sql b/backend/src/main/resources/db/migration/V2__subgroups_active_unique_name.sql deleted file mode 100644 index 9f5959d..0000000 --- a/backend/src/main/resources/db/migration/V2__subgroups_active_unique_name.sql +++ /dev/null @@ -1,6 +0,0 @@ -ALTER TABLE subgroups - DROP CONSTRAINT IF EXISTS subgroups_group_id_name_key; - -CREATE UNIQUE INDEX IF NOT EXISTS ux_subgroups_active_group_name - ON subgroups (group_id, lower(name)) - WHERE status <> 'ARCHIVED'; diff --git a/backend/src/main/resources/db/migration/V3__schedule_override_invariants.sql b/backend/src/main/resources/db/migration/V3__schedule_override_invariants.sql deleted file mode 100644 index ca5b5e6..0000000 --- a/backend/src/main/resources/db/migration/V3__schedule_override_invariants.sql +++ /dev/null @@ -1,94 +0,0 @@ -DO $$ -DECLARE - cancel_violations BIGINT; - move_violations BIGINT; - replace_violations BIGINT; - format_violations BIGINT; -BEGIN - SELECT count(*) - INTO cancel_violations - FROM schedule_overrides - WHERE action = 'CANCEL' - AND (new_time_slot_id IS NOT NULL - OR new_classroom_id IS NOT NULL - OR new_teacher_id IS NOT NULL - OR new_lesson_format IS NOT NULL); - - SELECT count(*) - INTO move_violations - FROM schedule_overrides - WHERE action = 'MOVE' - AND new_time_slot_id IS NULL - AND new_classroom_id IS NULL; - - SELECT count(*) - INTO replace_violations - FROM schedule_overrides - WHERE action = 'REPLACE' - AND new_teacher_id IS NULL - AND new_classroom_id IS NULL - AND new_lesson_format IS NULL; - - SELECT count(*) - INTO format_violations - FROM schedule_overrides - WHERE new_lesson_format IS NOT NULL - AND new_lesson_format NOT IN ('Очно', 'Онлайн'); - - IF cancel_violations > 0 - OR move_violations > 0 - OR replace_violations > 0 - OR format_violations > 0 THEN - RAISE EXCEPTION USING - ERRCODE = '23514', - MESSAGE = format( - 'Невозможно применить инварианты точечных изменений: CANCEL=%s, MOVE=%s, REPLACE=%s, формат=%s. Исправьте данные tenant-БД и повторите миграцию.', - cancel_violations, - move_violations, - replace_violations, - format_violations - ); - END IF; -END $$; - -ALTER TABLE schedule_overrides - ADD CONSTRAINT chk_schedule_overrides_cancel_payload - CHECK ( - action <> 'CANCEL' - OR ( - new_time_slot_id IS NULL - AND new_classroom_id IS NULL - AND new_teacher_id IS NULL - AND new_lesson_format IS NULL - ) - ) NOT VALID, - ADD CONSTRAINT chk_schedule_overrides_move_payload - CHECK ( - action <> 'MOVE' - OR new_time_slot_id IS NOT NULL - OR new_classroom_id IS NOT NULL - ) NOT VALID, - ADD CONSTRAINT chk_schedule_overrides_replace_payload - CHECK ( - action <> 'REPLACE' - OR new_teacher_id IS NOT NULL - OR new_classroom_id IS NOT NULL - OR new_lesson_format IS NOT NULL - ) NOT VALID, - ADD CONSTRAINT chk_schedule_overrides_format - CHECK ( - new_lesson_format IS NULL - OR new_lesson_format IN ('Очно', 'Онлайн') - ) NOT VALID; - -ALTER TABLE schedule_overrides - VALIDATE CONSTRAINT chk_schedule_overrides_cancel_payload; - -ALTER TABLE schedule_overrides - VALIDATE CONSTRAINT chk_schedule_overrides_move_payload; - -ALTER TABLE schedule_overrides - VALIDATE CONSTRAINT chk_schedule_overrides_replace_payload; - -ALTER TABLE schedule_overrides - VALIDATE CONSTRAINT chk_schedule_overrides_format; diff --git a/backend/src/main/resources/db/migration/V4__schedule_rule_even_hours.sql b/backend/src/main/resources/db/migration/V4__schedule_rule_even_hours.sql deleted file mode 100644 index ee2d767..0000000 --- a/backend/src/main/resources/db/migration/V4__schedule_rule_even_hours.sql +++ /dev/null @@ -1,97 +0,0 @@ -DO $$ -DECLARE - lecture_violations BIGINT; - laboratory_violations BIGINT; - practice_violations BIGINT; -BEGIN - SELECT count(*) - INTO lecture_violations - FROM schedule_rules - WHERE mod(lecture_academic_hours, 2) <> 0; - - SELECT count(*) - INTO laboratory_violations - FROM schedule_rules - WHERE mod(laboratory_academic_hours, 2) <> 0; - - SELECT count(*) - INTO practice_violations - FROM schedule_rules - WHERE mod(practice_academic_hours, 2) <> 0; - - IF lecture_violations > 0 - OR laboratory_violations > 0 - OR practice_violations > 0 THEN - RAISE EXCEPTION USING - ERRCODE = '23514', - MESSAGE = format( - 'Невозможно применить инвариант чётности академических часов правил расписания: лекции=%s, лабораторные=%s, практики=%s. Исправьте данные tenant-БД и повторите миграцию.', - lecture_violations, - laboratory_violations, - practice_violations - ); - END IF; -END $$; - -DO $$ -DECLARE - duplicate_slot_groups BIGINT; -BEGIN - SELECT count(*) - INTO duplicate_slot_groups - FROM ( - SELECT - schedule_rule_id, - day_of_week, - parity, - time_slot_id, - teacher_id, - classroom_id, - lesson_type_id, - lesson_format - FROM schedule_rule_slots - GROUP BY - schedule_rule_id, - day_of_week, - parity, - time_slot_id, - teacher_id, - classroom_id, - lesson_type_id, - lesson_format - HAVING count(*) > 1 - ) duplicates; - - IF duplicate_slot_groups > 0 THEN - RAISE EXCEPTION USING - ERRCODE = '23505', - MESSAGE = format( - 'Невозможно применить инвариант уникальности слотов правил расписания: найдено групп точных дублей=%s. Исправьте данные tenant-БД и повторите миграцию.', - duplicate_slot_groups - ); - END IF; -END $$; - -ALTER TABLE schedule_rules - ADD CONSTRAINT chk_schedule_rules_academic_hours_even - CHECK ( - mod(lecture_academic_hours, 2) = 0 - AND mod(laboratory_academic_hours, 2) = 0 - AND mod(practice_academic_hours, 2) = 0 - ) NOT VALID; - -ALTER TABLE schedule_rules - VALIDATE CONSTRAINT chk_schedule_rules_academic_hours_even; - -ALTER TABLE schedule_rule_slots - ADD CONSTRAINT uq_schedule_rule_slots_exact_payload - UNIQUE ( - schedule_rule_id, - day_of_week, - parity, - time_slot_id, - teacher_id, - classroom_id, - lesson_type_id, - lesson_format - ); diff --git a/backend/src/test/java/com/magistr/app/config/auth/ClientIpResolverTest.java b/backend/src/test/java/com/magistr/app/config/auth/ClientIpResolverTest.java new file mode 100644 index 0000000..f9c0bc7 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/auth/ClientIpResolverTest.java @@ -0,0 +1,51 @@ +package com.magistr.app.config.auth; + +import org.junit.jupiter.api.Test; +import org.springframework.mock.web.MockHttpServletRequest; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class ClientIpResolverTest { + + @Test + void ignoresForwardedHeaderFromUntrustedClient() { + ClientIpResolver resolver = new ClientIpResolver("10.42.0.0/16"); + MockHttpServletRequest request = request("203.0.113.7", "192.0.2.10"); + + assertThat(resolver.resolve(request)).isEqualTo("203.0.113.7"); + } + + @Test + void selectsFirstUntrustedAddressFromRightBehindTrustedProxyChain() { + ClientIpResolver resolver = new ClientIpResolver("10.42.0.0/16, 172.16.0.0/12"); + MockHttpServletRequest request = request( + "10.42.1.15", + "192.0.2.99, 198.51.100.23, 172.18.0.4" + ); + + assertThat(resolver.resolve(request)).isEqualTo("198.51.100.23"); + } + + @Test + void rejectsEntireForwardedHeaderWhenItContainsInvalidAddress() { + ClientIpResolver resolver = new ClientIpResolver("10.42.0.0/16"); + MockHttpServletRequest request = request("10.42.1.15", "198.51.100.23, attacker.example"); + + assertThat(resolver.resolve(request)).isEqualTo("10.42.1.15"); + } + + @Test + void rejectsInvalidTrustedProxyConfigurationAtStartup() { + assertThatThrownBy(() -> new ClientIpResolver("10.42.0.0/99")) + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("Некорректная маска"); + } + + private MockHttpServletRequest request(String remoteAddress, String forwardedFor) { + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setRemoteAddr(remoteAddress); + request.addHeader("X-Forwarded-For", forwardedFor); + return request; + } +} diff --git a/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitConcurrencyIntegrationTest.java new file mode 100644 index 0000000..62227ee --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitConcurrencyIntegrationTest.java @@ -0,0 +1,200 @@ +package com.magistr.app.config.auth; + +import com.magistr.app.model.AuthLoginRateLimit; +import com.magistr.app.repository.AuthLoginAttemptAuditRepository; +import com.magistr.app.repository.AuthLoginRateLimitRepository; +import com.magistr.app.repository.UserRepository; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.transaction.support.TransactionTemplate; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Timestamp; +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneOffset; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +@Testcontainers +@SpringBootTest( + classes = LoginRateLimitConcurrencyIntegrationTest.TestApplication.class, + properties = "management.endpoint.health.validate-group-membership=false" +) +class LoginRateLimitConcurrencyIntegrationTest { + + private static final Instant NOW = Instant.parse("2026-07-19T09:00:00Z"); + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @DynamicPropertySource + static void databaseProperties(DynamicPropertyRegistry registry) { + registry.add("spring.datasource.url", POSTGRES::getJdbcUrl); + registry.add("spring.datasource.username", POSTGRES::getUsername); + registry.add("spring.datasource.password", POSTGRES::getPassword); + } + + @Autowired + private AuthLoginRateLimitRepository rateLimitRepository; + + @Autowired + private AuthLoginAttemptAuditRepository auditRepository; + + @Autowired + private UserRepository userRepository; + + @Autowired + private TransactionTemplate transactionTemplate; + + @Autowired + private JdbcTemplate jdbcTemplate; + + private ExecutorService executor; + + @BeforeEach + void clearLoginSecurityTables() { + auditRepository.deleteAll(); + rateLimitRepository.deleteAll(); + } + + @AfterEach + void stopExecutor() throws InterruptedException { + if (executor != null) { + executor.shutdownNow(); + assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); + } + } + + @Test + void twoServiceInstancesShareAtomicPostgreSqlCounter() throws Exception { + LoginSecurityProperties properties = new LoginSecurityProperties(); + properties.setMaxFailures(2); + BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(4); + LoginRateLimitService firstPod = service(properties, encoder); + LoginRateLimitService secondPod = service(properties, encoder); + String username = "missing-" + UUID.randomUUID(); + String clientIp = "198.51.100.42"; + + executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + List> futures = List.of( + executor.submit(() -> authenticateAfterSignal(firstPod, username, clientIp, ready, start)), + executor.submit(() -> authenticateAfterSignal(secondPod, username, clientIp, ready, start)) + ); + assertThat(ready.await(5, TimeUnit.SECONDS)).isTrue(); + start.countDown(); + + List statuses = List.of( + futures.get(0).get(10, TimeUnit.SECONDS).status(), + futures.get(1).get(10, TimeUnit.SECONDS).status() + ); + assertThat(statuses).containsExactlyInAnyOrder( + LoginRateLimitService.AuthenticationDecision.Status.REJECTED, + LoginRateLimitService.AuthenticationDecision.Status.BLOCKED + ); + + Integer failureCount = jdbcTemplate.queryForObject(""" + SELECT failure_count + FROM auth_login_rate_limits + WHERE tenant = ? AND username_normalized = ? AND client_ip = ? + """, Integer.class, "tenant", username, clientIp); + assertThat(failureCount).isEqualTo(2); + assertThat(auditRepository.count()).isEqualTo(2); + } + + @Test + void cleanupDeletesOnlyExpiredAuditAndInactiveCounters() { + Instant now = NOW; + Instant cutoff = now.minus(90, java.time.temporal.ChronoUnit.DAYS); + jdbcTemplate.update(""" + INSERT INTO auth_login_attempt_audit + (tenant, username_normalized, client_ip, outcome, occurred_at) + VALUES + ('tenant', 'old', '198.51.100.1', 'FAILURE', ?), + ('tenant', 'fresh', '198.51.100.2', 'FAILURE', ?) + """, timestamp(now.minus(91, java.time.temporal.ChronoUnit.DAYS)), + timestamp(now.minus(1, java.time.temporal.ChronoUnit.DAYS))); + jdbcTemplate.update(""" + INSERT INTO auth_login_rate_limits + (tenant, username_normalized, client_ip, failure_count, + window_started_at, blocked_until, updated_at) + VALUES + ('tenant', 'old', '198.51.100.1', 1, ?, NULL, ?), + ('tenant', 'blocked', '198.51.100.2', 5, ?, ?, ?), + ('tenant', 'fresh', '198.51.100.3', 1, ?, NULL, ?) + """, + timestamp(now.minus(91, java.time.temporal.ChronoUnit.DAYS)), + timestamp(now.minus(91, java.time.temporal.ChronoUnit.DAYS)), + timestamp(now.minus(91, java.time.temporal.ChronoUnit.DAYS)), + timestamp(now.plusSeconds(300)), + timestamp(now.minus(91, java.time.temporal.ChronoUnit.DAYS)), + timestamp(now.minus(1, java.time.temporal.ChronoUnit.DAYS)), + timestamp(now.minus(1, java.time.temporal.ChronoUnit.DAYS))); + + assertThat(auditRepository.deleteCleanupBatch(cutoff, 100)).isEqualTo(1); + assertThat(rateLimitRepository.deleteStaleBatch(cutoff, now, 100)).isEqualTo(1); + assertThat(auditRepository.count()).isEqualTo(1); + assertThat(rateLimitRepository.count()).isEqualTo(2); + } + + private Timestamp timestamp(Instant value) { + return Timestamp.from(value); + } + + private LoginRateLimitService.AuthenticationDecision authenticateAfterSignal( + LoginRateLimitService service, + String username, + String clientIp, + CountDownLatch ready, + CountDownLatch start + ) throws InterruptedException { + ready.countDown(); + if (!start.await(5, TimeUnit.SECONDS)) { + throw new IllegalStateException("Не удалось синхронно запустить попытки входа"); + } + return transactionTemplate.execute(status -> + service.authenticate("tenant", username, "неверный-пароль", clientIp) + ); + } + + private LoginRateLimitService service(LoginSecurityProperties properties, + BCryptPasswordEncoder encoder) { + return new LoginRateLimitService( + rateLimitRepository, + auditRepository, + userRepository, + encoder, + properties, + Clock.fixed(NOW, ZoneOffset.UTC) + ); + } + + @SpringBootConfiguration + @EnableAutoConfiguration + @EntityScan(basePackageClasses = AuthLoginRateLimit.class) + @EnableJpaRepositories(basePackageClasses = AuthLoginRateLimitRepository.class) + static class TestApplication { + } +} diff --git a/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitServiceTest.java b/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitServiceTest.java new file mode 100644 index 0000000..1ed832d --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitServiceTest.java @@ -0,0 +1,149 @@ +package com.magistr.app.config.auth; + +import com.magistr.app.model.AuthLoginAttemptAudit; +import com.magistr.app.model.AuthLoginRateLimit; +import com.magistr.app.model.User; +import com.magistr.app.repository.AuthLoginAttemptAuditRepository; +import com.magistr.app.repository.AuthLoginRateLimitRepository; +import com.magistr.app.repository.UserRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneOffset; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +class LoginRateLimitServiceTest { + + private static final Instant NOW = Instant.parse("2026-07-19T09:00:00Z"); + + private AuthLoginRateLimitRepository rateLimitRepository; + private AuthLoginAttemptAuditRepository auditRepository; + private UserRepository userRepository; + private BCryptPasswordEncoder passwordEncoder; + private LoginSecurityProperties properties; + + @BeforeEach + void setUp() { + rateLimitRepository = mock(AuthLoginRateLimitRepository.class); + auditRepository = mock(AuthLoginAttemptAuditRepository.class); + userRepository = mock(UserRepository.class); + passwordEncoder = new BCryptPasswordEncoder(4); + properties = new LoginSecurityProperties(); + } + + @Test + void fifthFailureBlocksKeyAndWritesAuditWithoutPassword() { + AuthLoginRateLimit state = state(4, NOW, null); + when(rateLimitRepository.findForUpdate("tenant", "admin", "198.51.100.5")) + .thenReturn(Optional.of(state)); + when(userRepository.findByUsername("Admin")).thenReturn(Optional.empty()); + LoginRateLimitService service = service(); + + LoginRateLimitService.AuthenticationDecision decision = service.authenticate( + "tenant", "Admin", "секретный-пароль", "198.51.100.5" + ); + + assertThat(decision.status()) + .isEqualTo(LoginRateLimitService.AuthenticationDecision.Status.BLOCKED); + assertThat(decision.retryAfterSeconds()).isEqualTo(60); + assertThat(state.getFailureCount()).isEqualTo(5); + assertThat(state.getBlockedUntil()).isEqualTo(NOW.plusSeconds(60)); + + ArgumentCaptor auditCaptor = + ArgumentCaptor.forClass(AuthLoginAttemptAudit.class); + verify(auditRepository).save(auditCaptor.capture()); + assertThat(auditCaptor.getValue().getOutcome()).isEqualTo("BLOCKED"); + assertThat(auditCaptor.getValue().getRetryAfterSeconds()).isEqualTo(60); + assertThat(auditCaptor.getValue().getUsernameNormalized()).isEqualTo("admin"); + } + + @Test + void activeBlockDoesNotQueryUserAndReturnsRemainingDelay() { + AuthLoginRateLimit state = state(5, NOW, NOW.plusSeconds(37)); + when(rateLimitRepository.findForUpdate("tenant", "admin", "198.51.100.5")) + .thenReturn(Optional.of(state)); + LoginRateLimitService service = service(); + + LoginRateLimitService.AuthenticationDecision decision = service.authenticate( + "tenant", "admin", "любой", "198.51.100.5" + ); + + assertThat(decision.status()) + .isEqualTo(LoginRateLimitService.AuthenticationDecision.Status.BLOCKED); + assertThat(decision.retryAfterSeconds()).isEqualTo(37); + verify(userRepository, never()).findByUsername(any()); + } + + @Test + void archivedUserIsRejectedLikeUnknownUser() { + AuthLoginRateLimit state = state(0, NOW, null); + when(rateLimitRepository.findForUpdate("tenant", "archived", "198.51.100.5")) + .thenReturn(Optional.of(state)); + User user = new User(); + user.setPassword(passwordEncoder.encode("верный-пароль")); + user.archive("Тест"); + when(userRepository.findByUsername("archived")).thenReturn(Optional.of(user)); + LoginRateLimitService service = service(); + + LoginRateLimitService.AuthenticationDecision decision = service.authenticate( + "tenant", "archived", "верный-пароль", "198.51.100.5" + ); + + assertThat(decision.status()) + .isEqualTo(LoginRateLimitService.AuthenticationDecision.Status.REJECTED); + assertThat(state.getFailureCount()).isEqualTo(1); + } + + @Test + void successfulLoginRemovesPreviousFailureState() { + AuthLoginRateLimit state = state(2, NOW, null); + when(rateLimitRepository.findForUpdate("tenant", "admin", "198.51.100.5")) + .thenReturn(Optional.of(state)); + User user = new User(); + user.setPassword(passwordEncoder.encode("верный-пароль")); + when(userRepository.findByUsername("admin")).thenReturn(Optional.of(user)); + LoginRateLimitService service = service(); + + LoginRateLimitService.AuthenticationDecision decision = service.authenticate( + "tenant", "admin", "верный-пароль", "198.51.100.5" + ); + + assertThat(decision.status()) + .isEqualTo(LoginRateLimitService.AuthenticationDecision.Status.AUTHENTICATED); + assertThat(decision.user()).isSameAs(user); + verify(rateLimitRepository).delete(state); + verify(auditRepository, never()).save(any()); + } + + private LoginRateLimitService service() { + return new LoginRateLimitService( + rateLimitRepository, + auditRepository, + userRepository, + passwordEncoder, + properties, + Clock.fixed(NOW, ZoneOffset.UTC) + ); + } + + private AuthLoginRateLimit state(int failureCount, + Instant windowStartedAt, + Instant blockedUntil) { + AuthLoginRateLimit state = new AuthLoginRateLimit(); + state.setFailureCount(failureCount); + state.setWindowStartedAt(windowStartedAt); + state.setBlockedUntil(blockedUntil); + return state; + } +} diff --git a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenCleanupJobTest.java b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenCleanupJobTest.java new file mode 100644 index 0000000..5301a34 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenCleanupJobTest.java @@ -0,0 +1,195 @@ +package com.magistr.app.config.auth; + +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantContext; +import com.magistr.app.config.tenant.TenantRoutingDataSource; +import com.magistr.app.repository.AuthRefreshTokenRepository; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.time.Clock; +import java.time.Duration; +import java.time.Instant; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.*; + +@DisplayName("Tenant-aware очистка refresh-сессий") +class RefreshTokenCleanupJobTest { + + private static final ZoneId ZONE = ZoneId.of("Europe/Moscow"); + private static final Clock CLOCK = Clock.fixed(Instant.parse("2026-07-18T09:00:00Z"), ZONE); + private static final Instant NOW = CLOCK.instant(); + private static final Duration RETENTION = Duration.ofDays(30); + + private ExecutorService executor; + + @AfterEach + void cleanup() throws InterruptedException { + TenantContext.clear(); + if (executor != null) { + executor.shutdownNow(); + assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); + } + } + + @Test + @DisplayName("два pod удаляют старые строки идемпотентно и сохраняют active/fresh audit") + void twoPodsKeepActiveAndFreshAuditRows() throws Exception { + TenantRoutingDataSource routingDataSource = routing("alpha", "beta"); + AuthRefreshTokenRepository repository = mock(AuthRefreshTokenRepository.class); + TokenStore store = new TokenStore("alpha", "beta"); + when(repository.deleteCleanupBatch(any(Instant.class), anyInt())) + .thenAnswer(invocation -> store.deleteBatch( + TenantContext.getCurrentTenant(), + invocation.getArgument(0), + invocation.getArgument(1) + )); + RefreshTokenCleanupJob firstPod = job(routingDataSource, repository, true); + RefreshTokenCleanupJob secondPod = job(routingDataSource, repository, true); + + executor = Executors.newFixedThreadPool(2); + CountDownLatch start = new CountDownLatch(1); + Future first = executor.submit(() -> { + start.await(5, TimeUnit.SECONDS); + return firstPod.cleanupNow(); + }); + Future second = executor.submit(() -> { + start.await(5, TimeUnit.SECONDS); + return secondPod.cleanupNow(); + }); + start.countDown(); + + var firstSummary = first.get(5, TimeUnit.SECONDS); + var secondSummary = second.get(5, TimeUnit.SECONDS); + + assertThat(firstSummary.deletedCount() + secondSummary.deletedCount()).isEqualTo(4); + assertThat(firstSummary.failedTenantCount() + secondSummary.failedTenantCount()).isZero(); + assertThat(store.labels("alpha")).containsExactlyInAnyOrder("fresh-expired", "fresh-revoked", "active"); + assertThat(store.labels("beta")).containsExactlyInAnyOrder("fresh-expired", "fresh-revoked", "active"); + + var repeated = firstPod.cleanupNow(); + assertThat(repeated.deletedCount()).isZero(); + assertThat(store.labels("alpha")).hasSize(3); + assertThat(store.labels("beta")).hasSize(3); + } + + @Test + @DisplayName("повторный локальный запуск пропускается, пока текущий проход не завершён") + void overlappingRunInsidePodIsSkipped() throws Exception { + TenantRoutingDataSource routingDataSource = routing("alpha"); + AuthRefreshTokenRepository repository = mock(AuthRefreshTokenRepository.class); + CountDownLatch enteredRepository = new CountDownLatch(1); + CountDownLatch releaseRepository = new CountDownLatch(1); + when(repository.deleteCleanupBatch(any(Instant.class), anyInt())).thenAnswer(invocation -> { + enteredRepository.countDown(); + if (!releaseRepository.await(5, TimeUnit.SECONDS)) { + throw new IllegalStateException("Тест не разрешил завершить очистку"); + } + return 0; + }); + RefreshTokenCleanupJob job = job(routingDataSource, repository, true); + executor = Executors.newSingleThreadExecutor(); + Future running = executor.submit(job::cleanupNow); + assertThat(enteredRepository.await(5, TimeUnit.SECONDS)).isTrue(); + + var overlapping = job.cleanupNow(); + + assertThat(overlapping.skippedBecauseAlreadyRunning()).isTrue(); + releaseRepository.countDown(); + assertThat(running.get(5, TimeUnit.SECONDS).skippedBecauseAlreadyRunning()).isFalse(); + } + + @Test + @DisplayName("отключённое расписание не обращается к tenant-БД") + void disabledScheduleDoesNothing() { + TenantRoutingDataSource routingDataSource = routing("alpha"); + AuthRefreshTokenRepository repository = mock(AuthRefreshTokenRepository.class); + RefreshTokenCleanupJob job = job(routingDataSource, repository, false); + + job.cleanupScheduled(); + + verifyNoInteractions(repository); + } + + private RefreshTokenCleanupJob job(TenantRoutingDataSource routingDataSource, + AuthRefreshTokenRepository repository, + boolean enabled) { + return new RefreshTokenCleanupJob( + routingDataSource, + repository, + enabled, + RETENTION, + 2, + 10, + CLOCK + ); + } + + private TenantRoutingDataSource routing(String... tenants) { + TenantRoutingDataSource routingDataSource = mock(TenantRoutingDataSource.class); + Map configs = new LinkedHashMap<>(); + for (String tenant : tenants) { + configs.put(tenant, new TenantConfig(tenant, tenant, "jdbc:test:" + tenant, "user", "password")); + } + when(routingDataSource.snapshotTenantConfigs()).thenReturn(Map.copyOf(configs)); + return routingDataSource; + } + + private static final class TokenStore { + + private final Map> rowsByTenant = new LinkedHashMap<>(); + + private TokenStore(String... tenants) { + for (String tenant : tenants) { + rowsByTenant.put(tenant, new ArrayList<>(List.of( + new TokenRow("old-expired", minusDays(NOW, 31), null), + new TokenRow("old-revoked", plusDays(NOW, 7), minusDays(NOW, 31)), + new TokenRow("fresh-expired", minusDays(NOW, 1), null), + new TokenRow("fresh-revoked", plusDays(NOW, 7), minusDays(NOW, 1)), + new TokenRow("active", plusDays(NOW, 7), null) + ))); + } + } + + private synchronized int deleteBatch(String tenant, Instant cutoff, int batchSize) { + assertThat(tenant).isNotBlank(); + List rows = rowsByTenant.get(tenant); + List candidates = rows.stream() + .filter(row -> row.expiresAt().isBefore(cutoff) + || row.revokedAt() != null && row.revokedAt().isBefore(cutoff)) + .limit(batchSize) + .toList(); + rows.removeAll(candidates); + return candidates.size(); + } + + private synchronized List labels(String tenant) { + return rowsByTenant.get(tenant).stream().map(TokenRow::label).toList(); + } + } + + private static Instant minusDays(Instant value, long days) { + return value.minus(days, java.time.temporal.ChronoUnit.DAYS); + } + + private static Instant plusDays(Instant value, long days) { + return value.plus(days, java.time.temporal.ChronoUnit.DAYS); + } + + private record TokenRow(String label, Instant expiresAt, Instant revokedAt) { + } +} diff --git a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java index ea5e02b..8f197b1 100644 --- a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java @@ -28,6 +28,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -131,6 +133,82 @@ class RefreshTokenServiceConcurrencyIntegrationTest { assertThat(storedTokens).filteredOn(token -> token.getRotatedToTokenHash() != null).hasSize(1); } + @Test + void concurrentCleanupKeepsActiveAndFreshAuditRows() throws Exception { + User user = createTestUser(); + Instant now = Instant.now(); + Instant cutoff = now.minus(30, ChronoUnit.DAYS); + AuthRefreshToken oldExpired = token(user, "old-expired", now.minus(31, ChronoUnit.DAYS), null); + AuthRefreshToken oldRevoked = token(user, "old-revoked", now.plus(7, ChronoUnit.DAYS), now.minus(31, ChronoUnit.DAYS)); + AuthRefreshToken freshExpired = token(user, "fresh-expired", now.minus(1, ChronoUnit.DAYS), null); + AuthRefreshToken freshRevoked = token(user, "fresh-revoked", now.plus(7, ChronoUnit.DAYS), now.minus(1, ChronoUnit.DAYS)); + AuthRefreshToken active = token(user, "active", now.plus(7, ChronoUnit.DAYS), null); + tokenRepository.saveAllAndFlush(List.of( + oldExpired, + oldRevoked, + freshExpired, + freshRevoked, + active + )); + List relevantHashes = List.of( + oldExpired.getTokenHash(), + oldRevoked.getTokenHash(), + freshExpired.getTokenHash(), + freshRevoked.getTokenHash(), + active.getTokenHash() + ); + + executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + List> futures = List.of( + executor.submit(() -> cleanupAfterSignal(cutoff, ready, start)), + executor.submit(() -> cleanupAfterSignal(cutoff, ready, start)) + ); + awaitReady(ready); + start.countDown(); + + int deleted = futures.get(0).get(10, TimeUnit.SECONDS) + + futures.get(1).get(10, TimeUnit.SECONDS); + + assertThat(deleted).isEqualTo(2); + List remaining = tokenRepository.findAll().stream() + .filter(token -> relevantHashes.contains(token.getTokenHash())) + .toList(); + assertThat(remaining) + .extracting(AuthRefreshToken::getTokenHash) + .containsExactlyInAnyOrder( + freshExpired.getTokenHash(), + freshRevoked.getTokenHash(), + active.getTokenHash() + ); + assertThat(tokenRepository.deleteCleanupBatch(cutoff, 100)).isZero(); + } + + private int cleanupAfterSignal(Instant cutoff, + CountDownLatch ready, + CountDownLatch start) throws InterruptedException { + ready.countDown(); + if (!start.await(5, TimeUnit.SECONDS)) { + throw new IllegalStateException("Не удалось синхронно запустить очистку refresh-сессий"); + } + return tokenRepository.deleteCleanupBatch(cutoff, 100); + } + + private AuthRefreshToken token(User user, + String marker, + Instant expiresAt, + Instant revokedAt) { + AuthRefreshToken token = new AuthRefreshToken(); + token.setUser(user); + token.setTenant(TENANT); + token.setTokenHash(service.hashToken(marker + "-" + UUID.randomUUID())); + token.setIssuedAt(Instant.now().minus(40, ChronoUnit.DAYS)); + token.setExpiresAt(expiresAt); + token.setRevokedAt(revokedAt); + return token; + } + private Optional rotateAfterSignal( String rawToken, CountDownLatch ready, diff --git a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java index 439b23a..9889d9d 100644 --- a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java +++ b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceTest.java @@ -8,7 +8,8 @@ import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import java.time.Duration; -import java.time.LocalDateTime; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; @@ -35,7 +36,7 @@ class RefreshTokenServiceTest { assertThat(stored.getTokenHash()).isNotEqualTo(rawToken); assertThat(stored.getTokenHash()).hasSize(64); assertThat(stored.getTenant()).isEqualTo("magistr"); - assertThat(stored.getExpiresAt()).isAfter(LocalDateTime.now()); + assertThat(stored.getExpiresAt()).isAfter(Instant.now()); } @Test @@ -96,8 +97,8 @@ class RefreshTokenServiceTest { token.setUser(user()); token.setTenant("magistr"); token.setTokenHash(hash); - token.setIssuedAt(LocalDateTime.now().minusMinutes(1)); - token.setExpiresAt(LocalDateTime.now().plusDays(1)); + token.setIssuedAt(Instant.now().minus(1, ChronoUnit.MINUTES)); + token.setExpiresAt(Instant.now().plus(1, ChronoUnit.DAYS)); return token; } diff --git a/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java b/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java index 20e4841..b848a88 100644 --- a/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java +++ b/backend/src/test/java/com/magistr/app/controller/AuthControllerTest.java @@ -2,20 +2,30 @@ package com.magistr.app.controller; import com.magistr.app.config.auth.AuthContext; import com.magistr.app.config.auth.AuthenticatedUser; +import com.magistr.app.config.auth.ClientIpResolver; +import com.magistr.app.config.auth.LoginRateLimitService; +import com.magistr.app.config.tenant.TenantContext; +import com.magistr.app.dto.LoginRequest; +import com.magistr.app.dto.LoginResponse; import com.magistr.app.model.Role; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; +import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; +import org.springframework.mock.web.MockHttpServletRequest; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; class AuthControllerTest { @AfterEach void clearAuthContext() { AuthContext.clear(); + TenantContext.clear(); } @Test @@ -35,4 +45,35 @@ class AuthControllerTest { assertThat(body).containsKey("departmentId"); assertThat(body.get("departmentId")).isNull(); } + + @Test + void loginReturnsTooManyRequestsAndRetryAfterWhenKeyIsBlocked() { + LoginRateLimitService rateLimitService = mock(LoginRateLimitService.class); + ClientIpResolver clientIpResolver = mock(ClientIpResolver.class); + MockHttpServletRequest servletRequest = new MockHttpServletRequest(); + LoginRequest loginRequest = new LoginRequest(); + loginRequest.setUsername("admin"); + loginRequest.setPassword("неверный-пароль"); + TenantContext.setCurrentTenant("tenant"); + when(clientIpResolver.resolve(servletRequest)).thenReturn("198.51.100.7"); + when(rateLimitService.authenticate( + "tenant", "admin", "неверный-пароль", "198.51.100.7" + )).thenReturn(new LoginRateLimitService.AuthenticationDecision( + LoginRateLimitService.AuthenticationDecision.Status.BLOCKED, + null, + 73 + )); + AuthController controller = new AuthController( + rateLimitService, clientIpResolver, null, null, null + ); + + ResponseEntity response = controller.login(loginRequest, servletRequest); + + assertThat(response.getStatusCode().value()).isEqualTo(429); + assertThat(response.getHeaders().getFirst(HttpHeaders.RETRY_AFTER)).isEqualTo("73"); + assertThat(response.getBody()).isNotNull(); + assertThat(response.getBody().isSuccess()).isFalse(); + assertThat(response.getBody().getMessage()) + .isEqualTo("Слишком много попыток входа. Повторите позже"); + } } diff --git a/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java b/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java index 2d41912..d37b63f 100644 --- a/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java +++ b/backend/src/test/java/com/magistr/app/controller/DepartmentWorkspaceControllerTest.java @@ -16,6 +16,8 @@ import com.magistr.app.repository.TeacherCreationRequestRepository; import com.magistr.app.repository.TeacherDepartmentAssignmentRepository; import com.magistr.app.repository.UserRepository; import com.magistr.app.service.ScheduleQueryService; +import com.magistr.app.service.SubjectImportService; +import com.magistr.app.service.TeacherDepartmentService; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; @@ -51,7 +53,9 @@ class DepartmentWorkspaceControllerTest { mock(DepartmentRepository.class), mock(TeacherDepartmentAssignmentRepository.class), mock(TeacherCreationRequestRepository.class), - mock(ScheduleQueryService.class) + mock(ScheduleQueryService.class), + mock(TeacherDepartmentService.class), + mock(SubjectImportService.class) ); AuthContext.setCurrentUser(new AuthenticatedUser(1L, "кафедра", Role.DEPARTMENT, 2L)); @@ -61,14 +65,13 @@ class DepartmentWorkspaceControllerTest { } @Test - void teachersUseAssignmentsAndFallbackWithoutDuplicates() { + void teachersUseDatedAssignmentsWithoutLegacyFallback() { UserRepository userRepository = mock(UserRepository.class); TeacherDepartmentAssignmentRepository assignmentRepository = mock(TeacherDepartmentAssignmentRepository.class); + TeacherDepartmentService teacherDepartmentService = mock(TeacherDepartmentService.class); User assignedTeacher = user(10L, "assigned", "Петров Препод Петрович", 2L); User directTeacher = user(11L, "direct", "Препод Тест Тестович", 1L); - when(assignmentRepository.findDepartmentTeachersAtDate(1L, LocalDate.now())) - .thenReturn(List.of(assignment(assignedTeacher, 1L))); - when(userRepository.findByRoleAndDepartmentIdAndStatusNot(Role.TEACHER, 1L, LifecycleEntity.STATUS_ARCHIVED)) + when(teacherDepartmentService.findTeachersForDepartmentAtDate(1L, LocalDate.now())) .thenReturn(List.of(directTeacher, assignedTeacher)); DepartmentWorkspaceController controller = new DepartmentWorkspaceController( mock(SubjectRepository.class), @@ -77,13 +80,15 @@ class DepartmentWorkspaceControllerTest { mock(DepartmentRepository.class), assignmentRepository, mock(TeacherCreationRequestRepository.class), - mock(ScheduleQueryService.class) + mock(ScheduleQueryService.class), + teacherDepartmentService, + mock(SubjectImportService.class) ); List teachers = controller.getTeachers(1L); assertThat(teachers).extracting(UserResponse::getFullName) - .containsExactly("Петров Препод Петрович", "Препод Тест Тестович"); + .containsExactlyInAnyOrder("Петров Препод Петрович", "Препод Тест Тестович"); } @Test @@ -103,7 +108,9 @@ class DepartmentWorkspaceControllerTest { departmentRepository, assignmentRepository, mock(TeacherCreationRequestRepository.class), - mock(ScheduleQueryService.class) + mock(ScheduleQueryService.class), + mock(TeacherDepartmentService.class), + mock(SubjectImportService.class) ); AuthContext.setCurrentUser(new AuthenticatedUser(3L, "department", Role.DEPARTMENT, 1L)); diff --git a/backend/src/test/java/com/magistr/app/controller/EducationOfficeRoleMatrixTest.java b/backend/src/test/java/com/magistr/app/controller/EducationOfficeRoleMatrixTest.java new file mode 100644 index 0000000..9ebdd52 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/controller/EducationOfficeRoleMatrixTest.java @@ -0,0 +1,119 @@ +package com.magistr.app.controller; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.magistr.app.config.auth.AuthenticatedUser; +import com.magistr.app.config.auth.AuthorizationInterceptor; +import com.magistr.app.config.auth.JwtTokenService; +import com.magistr.app.config.tenant.TenantContext; +import com.magistr.app.model.EducationForm; +import com.magistr.app.model.LifecycleEntity; +import com.magistr.app.model.Role; +import com.magistr.app.repository.AcademicCalendarRepository; +import com.magistr.app.repository.EducationFormRepository; +import com.magistr.app.repository.GroupRepository; +import com.magistr.app.repository.SpecialtiesRepository; +import com.magistr.app.repository.SpecialtyProfileRepository; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import java.util.List; +import java.util.Optional; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +class EducationOfficeRoleMatrixTest { + + private static final String TENANT = "tenant-role-matrix"; + private static final String TOKEN = "education-office-token"; + + private MockMvc mockMvc; + + @BeforeEach + void setUp() { + TenantContext.clear(); + TenantContext.setCurrentTenant(TENANT); + + JwtTokenService jwtTokenService = mock(JwtTokenService.class); + when(jwtTokenService.authenticate(TOKEN, TENANT)).thenReturn(Optional.of( + new AuthenticatedUser(10L, "учебный.отдел", Role.EDUCATION_OFFICE, null) + )); + + SpecialtiesRepository specialtiesRepository = mock(SpecialtiesRepository.class); + SpecialtyProfileRepository profileRepository = mock(SpecialtyProfileRepository.class); + when(specialtiesRepository.findByStatusNot(LifecycleEntity.STATUS_ARCHIVED)).thenReturn(List.of()); + when(specialtiesRepository.existsById(1L)).thenReturn(true); + when(profileRepository.findBySpecialityIdOrderByNameAsc(1L)).thenReturn(List.of()); + SpecialityController specialityController = new SpecialityController( + specialtiesRepository, + profileRepository + ); + + EducationFormRepository educationFormRepository = mock(EducationFormRepository.class); + GroupRepository groupRepository = mock(GroupRepository.class); + AcademicCalendarRepository calendarRepository = mock(AcademicCalendarRepository.class); + when(educationFormRepository.findAllByOrderByNameAsc()).thenReturn(List.of()); + when(educationFormRepository.findByName("Очная")).thenReturn(Optional.empty()); + when(educationFormRepository.save(any(EducationForm.class))).thenAnswer(invocation -> { + EducationForm form = invocation.getArgument(0); + form.setId(20L); + return form; + }); + when(educationFormRepository.existsById(20L)).thenReturn(true); + when(groupRepository.findByEducationFormId(20L)).thenReturn(List.of()); + when(calendarRepository.countByStudyFormId(20L)).thenReturn(0L); + EducationFormController educationFormController = new EducationFormController( + educationFormRepository, + groupRepository, + calendarRepository + ); + + mockMvc = MockMvcBuilders + .standaloneSetup(specialityController, educationFormController) + .addInterceptors(new AuthorizationInterceptor(jwtTokenService, new ObjectMapper())) + .build(); + } + + @AfterEach + void clearContext() { + TenantContext.clear(); + } + + @Test + void educationOfficeInitializesCalendarAndManagesEducationFormsWithoutForbidden() throws Exception { + mockMvc.perform(get("/api/specialties").header("Authorization", bearer())) + .andExpect(status().isOk()); + mockMvc.perform(get("/api/specialties/1/profiles").header("Authorization", bearer())) + .andExpect(status().isOk()); + mockMvc.perform(get("/api/education-forms").header("Authorization", bearer())) + .andExpect(status().isOk()); + mockMvc.perform(post("/api/education-forms") + .header("Authorization", bearer()) + .contentType("application/json") + .content("{\"name\":\"Очная\"}")) + .andExpect(status().isOk()); + mockMvc.perform(delete("/api/education-forms/20").header("Authorization", bearer())) + .andExpect(status().isOk()); + } + + @Test + void educationOfficeStillCannotModifySpecialties() throws Exception { + mockMvc.perform(post("/api/specialties") + .header("Authorization", bearer()) + .contentType("application/json") + .content("{\"specialityName\":\"Тест\",\"specialityCode\":\"01\"}")) + .andExpect(status().isForbidden()); + } + + private String bearer() { + return "Bearer " + TOKEN; + } +} diff --git a/backend/src/test/java/com/magistr/app/controller/GlobalExceptionHandlerDataIntegrityTest.java b/backend/src/test/java/com/magistr/app/controller/GlobalExceptionHandlerDataIntegrityTest.java new file mode 100644 index 0000000..addb17d --- /dev/null +++ b/backend/src/test/java/com/magistr/app/controller/GlobalExceptionHandlerDataIntegrityTest.java @@ -0,0 +1,111 @@ +package com.magistr.app.controller; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.mock.web.MockHttpServletRequest; + +import java.sql.SQLException; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +@DisplayName("Безопасное преобразование нарушений целостности БД") +class GlobalExceptionHandlerDataIntegrityTest { + + private final GlobalExceptionHandler handler = new GlobalExceptionHandler(); + + @Test + @DisplayName("известный CHECK возвращает русский 400 без JDBC details") + void knownCheckConstraintReturnsSafeBadRequest() { + String technicalMessage = "ERROR: new row violates check constraint " + + "\"chk_time_slots_time_range\" Detail: failing row contains secret-value"; + + var response = handler.handleDataIntegrityViolation( + violation(technicalMessage, "23514"), + request("POST", "/api/admin/time-slots") + ); + + assertThat(response.getStatusCode().value()).isEqualTo(400); + assertThat(response.getBody()) + .containsEntry("error", "Некорректный запрос") + .containsEntry("message", "Время начала пары должно быть раньше времени окончания"); + assertNoTechnicalDetails(response.getBody()); + } + + @Test + @DisplayName("известный UNIQUE возвращает русский 409 без имени ограничения") + void knownUniqueConstraintReturnsSafeConflict() { + String technicalMessage = "duplicate key value violates unique constraint " + + "\"uq_subjects_name_ci\" Detail: Key (lower(name))=(secret-value) already exists"; + + var response = handler.handleDataIntegrityViolation( + violation(technicalMessage, "23505"), + request("POST", "/api/subjects") + ); + + assertThat(response.getStatusCode().value()).isEqualTo(409); + assertThat(response.getBody()) + .containsEntry("error", "Конфликт") + .containsEntry("message", "Дисциплина с таким названием уже существует"); + assertNoTechnicalDetails(response.getBody()); + } + + @Test + @DisplayName("неизвестный constraint получает общий 409 без сырого исключения") + void unknownConstraintReturnsGenericSafeConflict() { + String technicalMessage = "duplicate key violates constraint \"tenant_private_constraint\" " + + "jdbc:postgresql://db/private?password=secret-value"; + + var response = handler.handleDataIntegrityViolation( + violation(technicalMessage, "23505"), + request("PUT", "/api/private") + ); + + assertThat(response.getStatusCode().value()).isEqualTo(409); + assertThat(response.getBody()) + .containsEntry("error", "Конфликт") + .containsEntry("message", "Такая запись уже существует"); + assertNoTechnicalDetails(response.getBody()); + } + + @Test + @DisplayName("неизвестная integrity-ошибка не превращается в 500 и не раскрывает cause") + void unknownIntegrityFailureReturnsGenericConflict() { + var exception = new DataIntegrityViolationException( + "could not execute statement; jdbc:postgresql://db/private", + new RuntimeException("password=secret-value") + ); + + var response = handler.handleDataIntegrityViolation( + exception, + request("DELETE", "/api/private/1") + ); + + assertThat(response.getStatusCode().value()).isEqualTo(409); + assertThat(response.getBody()) + .containsEntry("message", "Операция нарушает ограничения целостности данных"); + assertNoTechnicalDetails(response.getBody()); + } + + private DataIntegrityViolationException violation(String message, String sqlState) { + return new DataIntegrityViolationException(message, new SQLException(message, sqlState)); + } + + private MockHttpServletRequest request(String method, String path) { + MockHttpServletRequest request = new MockHttpServletRequest(method, path); + request.setRequestURI(path); + return request; + } + + private void assertNoTechnicalDetails(Map body) { + assertThat(body).isNotNull(); + String rendered = body.toString().toLowerCase(); + assertThat(rendered) + .doesNotContain("constraint") + .doesNotContain("jdbc:") + .doesNotContain("password") + .doesNotContain("secret-value") + .doesNotContain("sqlstate"); + } +} diff --git a/backend/src/test/java/com/magistr/app/controller/TeacherSubjectControllerTest.java b/backend/src/test/java/com/magistr/app/controller/TeacherSubjectControllerTest.java new file mode 100644 index 0000000..837cece --- /dev/null +++ b/backend/src/test/java/com/magistr/app/controller/TeacherSubjectControllerTest.java @@ -0,0 +1,78 @@ +package com.magistr.app.controller; + +import com.magistr.app.config.auth.AuthContext; +import com.magistr.app.config.auth.AuthenticatedUser; +import com.magistr.app.model.Role; +import com.magistr.app.model.Subject; +import com.magistr.app.model.TeacherSubject; +import com.magistr.app.model.User; +import com.magistr.app.repository.SubjectRepository; +import com.magistr.app.repository.TeacherSubjectRepository; +import com.magistr.app.repository.UserRepository; +import com.magistr.app.service.TeacherDepartmentService; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; + +import java.time.LocalDate; +import java.util.Map; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +class TeacherSubjectControllerTest { + + @AfterEach + void clearAuthContext() { + AuthContext.clear(); + } + + @Test + void departmentCanManageTeacherThroughAdditionalActiveAssignment() { + TeacherSubjectRepository teacherSubjectRepository = mock(TeacherSubjectRepository.class); + UserRepository userRepository = mock(UserRepository.class); + SubjectRepository subjectRepository = mock(SubjectRepository.class); + TeacherDepartmentService teacherDepartmentService = mock(TeacherDepartmentService.class); + User teacher = teacher(); + Subject subject = new Subject(); + subject.setId(20L); + subject.setName("Высшая математика"); + subject.setDepartmentId(1L); + when(userRepository.findById(teacher.getId())).thenReturn(Optional.of(teacher)); + when(subjectRepository.findById(subject.getId())).thenReturn(Optional.of(subject)); + when(teacherDepartmentService.hasAssignmentAtDate( + teacher.getId(), + 1L, + LocalDate.now() + )).thenReturn(true); + TeacherSubjectController controller = new TeacherSubjectController( + teacherSubjectRepository, + userRepository, + subjectRepository, + teacherDepartmentService + ); + AuthContext.setCurrentUser(new AuthenticatedUser(1L, "кафедра", Role.DEPARTMENT, 1L)); + + var response = controller.create(Map.of("userId", teacher.getId(), "subjectId", subject.getId())); + + assertThat(response.getStatusCode().value()).isEqualTo(200); + ArgumentCaptor captor = ArgumentCaptor.forClass(TeacherSubject.class); + verify(teacherSubjectRepository).save(captor.capture()); + assertThat(captor.getValue().getUserId()).isEqualTo(teacher.getId()); + assertThat(captor.getValue().getSubjectId()).isEqualTo(subject.getId()); + } + + private User teacher() { + User teacher = new User(); + teacher.setId(10L); + teacher.setUsername("teacher"); + teacher.setRole(Role.TEACHER); + teacher.setFullName("Петров Пётр Петрович"); + teacher.setJobTitle("Доцент"); + teacher.setDepartmentId(2L); + return teacher; + } +} diff --git a/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java b/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java index 5c39d3d..f063d21 100644 --- a/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java +++ b/backend/src/test/java/com/magistr/app/controller/UserControllerTest.java @@ -8,6 +8,7 @@ import com.magistr.app.model.User; import com.magistr.app.repository.DepartmentRepository; import com.magistr.app.repository.TeacherDepartmentAssignmentRepository; import com.magistr.app.repository.UserRepository; +import com.magistr.app.service.TeacherDepartmentService; import org.junit.jupiter.api.Test; import java.util.List; @@ -24,16 +25,19 @@ class UserControllerTest { UserRepository userRepository = mock(UserRepository.class); DepartmentRepository departmentRepository = mock(DepartmentRepository.class); TeacherDepartmentAssignmentRepository assignmentRepository = mock(TeacherDepartmentAssignmentRepository.class); + TeacherDepartmentService teacherDepartmentService = mock(TeacherDepartmentService.class); UserController controller = new UserController( userRepository, null, departmentRepository, - assignmentRepository + assignmentRepository, + teacherDepartmentService ); User teacher = user(10L, "teacher", Role.TEACHER, 2L); - when(assignmentRepository.findDepartmentTeachersAtDate(org.mockito.ArgumentMatchers.eq(2L), org.mockito.ArgumentMatchers.any())) - .thenReturn(List.of()); - when(userRepository.findByRoleAndDepartmentIdAndStatusNot(Role.TEACHER, 2L, LifecycleEntity.STATUS_ARCHIVED)) + when(teacherDepartmentService.findTeachersForDepartmentAtDate( + org.mockito.ArgumentMatchers.eq(2L), + org.mockito.ArgumentMatchers.any() + )) .thenReturn(List.of(teacher)); when(departmentRepository.findById(2L)) .thenReturn(Optional.of(new Department(2L, "Кафедра ВТ", 2L))); diff --git a/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java b/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java index 502f7ef..628ffb8 100644 --- a/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java +++ b/backend/src/test/java/com/magistr/app/controller/WorkloadControllerTest.java @@ -1,24 +1,87 @@ package com.magistr.app.controller; +import com.magistr.app.config.auth.AuthContext; +import com.magistr.app.config.auth.AuthenticatedUser; +import com.magistr.app.dto.RenderedLessonDto; +import com.magistr.app.dto.WorkloadSummaryDto; import com.magistr.app.model.Classroom; +import com.magistr.app.model.Department; import com.magistr.app.model.LifecycleEntity; +import com.magistr.app.model.Role; +import com.magistr.app.model.TeacherDepartmentAssignment; +import com.magistr.app.model.User; import com.magistr.app.repository.ClassroomRepository; import com.magistr.app.repository.DepartmentRepository; -import com.magistr.app.repository.UserRepository; import com.magistr.app.service.ScheduleQueryService; +import com.magistr.app.service.TeacherDepartmentService; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; +import org.springframework.http.HttpStatus; +import org.springframework.web.server.ResponseStatusException; import java.time.LocalDate; import java.util.List; +import java.util.Map; +import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; class WorkloadControllerTest { + @AfterEach + void clearAuthContext() { + AuthContext.clear(); + } + + @Test + void teacherWorkloadUsesDepartmentAtEachLessonDate() { + ScheduleQueryService scheduleQueryService = mock(ScheduleQueryService.class); + TeacherDepartmentService teacherDepartmentService = mock(TeacherDepartmentService.class); + DepartmentRepository departmentRepository = mock(DepartmentRepository.class); + LocalDate startDate = LocalDate.of(2026, 1, 1); + LocalDate endDate = LocalDate.of(2026, 3, 31); + RenderedLessonDto oldLesson = lesson(10L, "Петров Пётр", LocalDate.of(2026, 1, 15), 1L); + RenderedLessonDto newLesson = lesson(10L, "Петров Пётр", LocalDate.of(2026, 3, 15), 2L); + List assignments = List.of( + assignment(10L, 1L, LocalDate.of(2025, 9, 1), LocalDate.of(2026, 2, 28)), + assignment(10L, 2L, LocalDate.of(2026, 3, 1), null) + ); + when(scheduleQueryService.searchForAggregation(any(), any(), eq(startDate), eq(endDate))) + .thenReturn(List.of(oldLesson, newLesson)); + when(teacherDepartmentService.findAssignmentsForTeachersBetween( + eq(java.util.Set.of(10L)), + eq(startDate), + eq(endDate) + )).thenReturn(Map.of(10L, assignments)); + when(teacherDepartmentService.resolveDepartmentIdAtDate(assignments, oldLesson.date())) + .thenReturn(Optional.of(1L)); + when(teacherDepartmentService.resolveDepartmentIdAtDate(assignments, newLesson.date())) + .thenReturn(Optional.of(2L)); + when(departmentRepository.findById(1L)) + .thenReturn(Optional.of(new Department(1L, "Кафедра ИБ", 1L))); + when(departmentRepository.findById(2L)) + .thenReturn(Optional.of(new Department(2L, "Кафедра ВТ", 2L))); + WorkloadController controller = new WorkloadController( + scheduleQueryService, + mock(ClassroomRepository.class), + departmentRepository, + teacherDepartmentService + ); + authenticate(Role.ADMIN, null); + + List result = controller.teacherWorkload(startDate, endDate, null); + + assertThat(result).hasSize(2); + assertThat(result).extracting(WorkloadSummaryDto::departmentId) + .containsExactly(1L, 2L); + assertThat(result).extracting(WorkloadSummaryDto::lessonCount) + .containsOnly(1L); + } + @Test void freeClassroomsSkipsNullAvailabilityWithoutNpe() { ScheduleQueryService scheduleQueryService = mock(ScheduleQueryService.class); @@ -26,19 +89,97 @@ class WorkloadControllerTest { WorkloadController controller = new WorkloadController( scheduleQueryService, classroomRepository, - mock(UserRepository.class), - mock(DepartmentRepository.class) + mock(DepartmentRepository.class), + mock(TeacherDepartmentService.class) ); - when(scheduleQueryService.search(any(), any(), any(), any(), any(), any(), eq(1L), any(), any(), any())) + when(scheduleQueryService.searchForAggregation(any(), eq(1L), any(), any())) .thenReturn(List.of()); when(classroomRepository.findByStatusNot(LifecycleEntity.STATUS_ARCHIVED)) .thenReturn(List.of(classroom(1L, null), classroom(2L, false), classroom(3L, true))); + authenticate(Role.SCHEDULE_VIEWER, null); var result = controller.freeClassrooms(LocalDate.of(2026, 5, 27), 1L); assertThat(result).extracting("id").containsExactly(3L); } + @Test + void departmentRoleUsesOwnDepartmentForEveryWorkloadEndpoint() { + ScheduleQueryService scheduleQueryService = mock(ScheduleQueryService.class); + ClassroomRepository classroomRepository = mock(ClassroomRepository.class); + DepartmentRepository departmentRepository = mock(DepartmentRepository.class); + TeacherDepartmentService teacherDepartmentService = mock(TeacherDepartmentService.class); + WorkloadController controller = new WorkloadController( + scheduleQueryService, + classroomRepository, + departmentRepository, + teacherDepartmentService + ); + LocalDate startDate = LocalDate.of(2026, 5, 1); + LocalDate endDate = LocalDate.of(2026, 5, 31); + LocalDate date = LocalDate.of(2026, 5, 15); + when(scheduleQueryService.searchForAggregation(any(), any(), any(), any())) + .thenReturn(List.of()); + when(departmentRepository.findAll()).thenReturn(List.of()); + when(classroomRepository.findByStatusNot(LifecycleEntity.STATUS_ARCHIVED)).thenReturn(List.of()); + authenticate(Role.DEPARTMENT, 7L); + + controller.teacherWorkload(startDate, endDate, null); + controller.classroomWorkload(startDate, endDate, 7L); + controller.departmentWorkload(startDate, endDate, null); + controller.timeSlotWorkload(startDate, endDate, 7L); + controller.freeClassrooms(date, 3L); + + verify(scheduleQueryService, times(4)) + .searchForAggregation(eq(7L), isNull(), eq(startDate), eq(endDate)); + verify(scheduleQueryService) + .searchForAggregation(eq(7L), eq(3L), eq(date), eq(date)); + } + + @Test + void departmentRoleCannotRequestAnotherDepartment() { + ScheduleQueryService scheduleQueryService = mock(ScheduleQueryService.class); + WorkloadController controller = new WorkloadController( + scheduleQueryService, + mock(ClassroomRepository.class), + mock(DepartmentRepository.class), + mock(TeacherDepartmentService.class) + ); + authenticate(Role.DEPARTMENT, 7L); + + assertThatThrownBy(() -> controller.teacherWorkload( + LocalDate.of(2026, 5, 1), + LocalDate.of(2026, 5, 31), + 8L + )) + .isInstanceOfSatisfying(ResponseStatusException.class, exception -> { + assertThat(exception.getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN); + assertThat(exception.getReason()).isEqualTo("Нельзя просматривать нагрузку другой кафедры"); + }); + verifyNoInteractions(scheduleQueryService); + } + + @Test + void privilegedRoleKeepsGlobalScope() { + ScheduleQueryService scheduleQueryService = mock(ScheduleQueryService.class); + WorkloadController controller = new WorkloadController( + scheduleQueryService, + mock(ClassroomRepository.class), + mock(DepartmentRepository.class), + mock(TeacherDepartmentService.class) + ); + LocalDate startDate = LocalDate.of(2026, 5, 1); + LocalDate endDate = LocalDate.of(2026, 5, 31); + when(scheduleQueryService.searchForAggregation(any(), any(), any(), any())) + .thenReturn(List.of()); + authenticate(Role.EDUCATION_OFFICE, null); + + controller.timeSlotWorkload(startDate, endDate, null); + + verify(scheduleQueryService) + .searchForAggregation(isNull(), isNull(), eq(startDate), eq(endDate)); + } + private Classroom classroom(Long id, Boolean available) { Classroom classroom = new Classroom(); classroom.setId(id); @@ -47,4 +188,36 @@ class WorkloadControllerTest { classroom.setIsAvailable(available); return classroom; } + + private RenderedLessonDto lesson(Long teacherId, + String teacherName, + LocalDate date, + Long timeSlotId) { + RenderedLessonDto lesson = mock(RenderedLessonDto.class); + when(lesson.teacherId()).thenReturn(teacherId); + when(lesson.teacherName()).thenReturn(teacherName); + when(lesson.date()).thenReturn(date); + when(lesson.timeSlotId()).thenReturn(timeSlotId); + return lesson; + } + + private TeacherDepartmentAssignment assignment(Long teacherId, + Long departmentId, + LocalDate validFrom, + LocalDate validTo) { + User teacher = new User(); + teacher.setId(teacherId); + Department department = new Department(departmentId, "Кафедра " + departmentId, departmentId); + TeacherDepartmentAssignment assignment = new TeacherDepartmentAssignment(); + assignment.setTeacher(teacher); + assignment.setDepartment(department); + assignment.setValidFrom(validFrom); + assignment.setValidTo(validTo); + assignment.setPrimaryAssignment(true); + return assignment; + } + + private void authenticate(Role role, Long departmentId) { + AuthContext.setCurrentUser(new AuthenticatedUser(100L, "test", role, departmentId)); + } } diff --git a/backend/src/test/java/com/magistr/app/migration/AcademicPeriodInvariantMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/AcademicPeriodInvariantMigrationIntegrationTest.java new file mode 100644 index 0000000..c4fd3a1 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/AcademicPeriodInvariantMigrationIntegrationTest.java @@ -0,0 +1,292 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +@Testcontainers +@DisplayName("Инварианты учебных периодов базовой схемы") +class AcademicPeriodInvariantMigrationIntegrationTest { + + private static final String YEAR_OVERLAP_CONSTRAINT = "ex_academic_years_no_overlap"; + private static final String SEMESTER_OVERLAP_CONSTRAINT = "ex_semesters_year_no_overlap"; + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @Test + @DisplayName("V1 разрешает соседние периоды и запрещает overlap или выход семестра за год") + void migrationEnforcesAcademicPeriodInvariants() throws SQLException { + Flyway flyway = flyway("1"); + flyway.clean(); + flyway.migrate(); + + assertThat(flyway.info().current()).isNotNull(); + assertThat(flyway.info().current().getVersion().getVersion()).isEqualTo("1"); + + try (Connection connection = POSTGRES.createConnection("")) { + long academicYearId = insertAcademicYear( + connection, + "2026-2027", + LocalDate.of(2026, 7, 1), + LocalDate.of(2027, 6, 30) + ); + long autumnId = insertSemester( + connection, + academicYearId, + "autumn", + LocalDate.of(2026, 7, 1), + LocalDate.of(2027, 1, 31) + ); + + assertSqlState( + () -> insertAcademicYear( + connection, + "2027-overlap", + LocalDate.of(2027, 6, 30), + LocalDate.of(2028, 6, 30) + ), + "23P01", + YEAR_OVERLAP_CONSTRAINT + ); + assertSqlState( + () -> insertSemester( + connection, + academicYearId, + "spring", + LocalDate.of(2026, 6, 30), + LocalDate.of(2027, 6, 30) + ), + "23514", + "Семестр должен полностью находиться в границах учебного года" + ); + + long springId = insertSemester( + connection, + academicYearId, + "spring", + LocalDate.of(2027, 2, 1), + LocalDate.of(2027, 6, 30) + ); + assertSqlState( + () -> updateDate( + connection, + "UPDATE semesters SET start_date = ? WHERE id = ?", + LocalDate.of(2027, 1, 31), + springId + ), + "23P01", + SEMESTER_OVERLAP_CONSTRAINT + ); + assertSqlState( + () -> updateDate( + connection, + "UPDATE academic_years SET start_date = ? WHERE id = ?", + LocalDate.of(2026, 7, 2), + academicYearId + ), + "23514", + "Новые границы учебного года не включают все его семестры" + ); + + assertThat(autumnId).isPositive(); + assertThat(constraintCount(connection, "academic_years", YEAR_OVERLAP_CONSTRAINT)).isOne(); + assertThat(constraintCount(connection, "semesters", SEMESTER_OVERLAP_CONSTRAINT)).isOne(); + } + } + + @Test + @DisplayName("V1 отклоняет одну из двух конкурентных вставок пересекающихся учебных годов") + void migrationProtectsConcurrentAcademicYearWrites() throws Exception { + Flyway flyway = flyway("1"); + flyway.clean(); + flyway.migrate(); + + ExecutorService executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + try { + List> futures = List.of( + executor.submit(() -> concurrentYearInsert( + "2090-2091-a", + LocalDate.of(2090, 9, 1), + LocalDate.of(2091, 6, 30), + ready, + start + )), + executor.submit(() -> concurrentYearInsert( + "2091-2092-b", + LocalDate.of(2091, 6, 30), + LocalDate.of(2092, 6, 30), + ready, + start + )) + ); + + assertThat(ready.await(5, TimeUnit.SECONDS)).isTrue(); + start.countDown(); + List outcomes = List.of( + futures.get(0).get(10, TimeUnit.SECONDS), + futures.get(1).get(10, TimeUnit.SECONDS) + ); + + assertThat(outcomes).filteredOn(InsertOutcome::success).hasSize(1); + assertThat(outcomes).filteredOn(outcome -> !outcome.success()).singleElement() + .satisfies(outcome -> { + assertThat(outcome.sqlState()).isIn("23P01", "40P01"); + if ("23P01".equals(outcome.sqlState())) { + assertThat(outcome.message()).contains(YEAR_OVERLAP_CONSTRAINT); + } + }); + } finally { + start.countDown(); + executor.shutdownNow(); + } + } + + private InsertOutcome concurrentYearInsert(String title, + LocalDate startDate, + LocalDate endDate, + CountDownLatch ready, + CountDownLatch start) { + try (Connection connection = POSTGRES.createConnection("")) { + connection.setAutoCommit(false); + ready.countDown(); + if (!start.await(5, TimeUnit.SECONDS)) { + return new InsertOutcome(false, null, "Не получен общий сигнал запуска"); + } + try { + insertAcademicYear(connection, title, startDate, endDate); + connection.commit(); + return new InsertOutcome(true, null, null); + } catch (SQLException exception) { + connection.rollback(); + return new InsertOutcome(false, exception.getSQLState(), exception.getMessage()); + } + } catch (Exception exception) { + return new InsertOutcome(false, null, exception.getMessage()); + } + } + + private Flyway flyway(String targetVersion) { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion(targetVersion)) + .cleanDisabled(false) + .load(); + } + + private long insertAcademicYear(Connection connection, + String title, + LocalDate startDate, + LocalDate endDate) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO academic_years (title, start_date, end_date) + VALUES (?, ?, ?) + RETURNING id + """)) { + statement.setString(1, title); + statement.setDate(2, Date.valueOf(startDate)); + statement.setDate(3, Date.valueOf(endDate)); + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + } + + private long insertSemester(Connection connection, + long academicYearId, + String semesterType, + LocalDate startDate, + LocalDate endDate) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO semesters ( + academic_year_id, + semester_type, + start_date, + end_date + ) VALUES (?, ?, ?, ?) + RETURNING id + """)) { + statement.setLong(1, academicYearId); + statement.setString(2, semesterType); + statement.setDate(3, Date.valueOf(startDate)); + statement.setDate(4, Date.valueOf(endDate)); + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + } + + private void updateDate(Connection connection, String sql, LocalDate value, long id) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setDate(1, Date.valueOf(value)); + statement.setLong(2, id); + statement.executeUpdate(); + } + } + + private long constraintCount(Connection connection, + String tableName, + String constraintName) throws SQLException { + return queryLong( + connection, + "SELECT count(*) FROM pg_constraint WHERE conrelid = (?::TEXT)::regclass AND conname = ?", + tableName, + constraintName + ); + } + + private long queryLong(Connection connection, String sql, Object... parameters) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + for (int index = 0; index < parameters.length; index++) { + statement.setObject(index + 1, parameters[index]); + } + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).as("SQL-запрос должен вернуть строку: %s", sql).isTrue(); + return resultSet.getLong(1); + } + } + } + + private void assertSqlState(ThrowingSqlRunnable operation, + String expectedSqlState, + String expectedMessagePart) { + Throwable failure = catchThrowable(operation::run); + assertThat(failure).isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()).isEqualTo(expectedSqlState); + assertThat(sqlFailure.getMessage()).contains(expectedMessagePart); + } + + @FunctionalInterface + private interface ThrowingSqlRunnable { + void run() throws SQLException; + } + + private record InsertOutcome(boolean success, String sqlState, String message) { + } +} diff --git a/backend/src/test/java/com/magistr/app/migration/AcademicStructureInvariantIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/AcademicStructureInvariantIntegrationTest.java new file mode 100644 index 0000000..bc07564 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/AcademicStructureInvariantIntegrationTest.java @@ -0,0 +1,393 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +@Testcontainers +@DisplayName("Инварианты зависимостей календарных графиков базовой схемы") +class AcademicStructureInvariantIntegrationTest { + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @Test + @DisplayName("V1 сохраняет назначение и отклоняет несовместимые изменения графика или группы") + void baselineProtectsCalendarDependencies() throws SQLException { + Flyway flyway = baselineFlyway(); + flyway.clean(); + flyway.migrate(); + + assertThat(flyway.info().current()).isNotNull(); + assertThat(flyway.info().current().getVersion().getVersion()).isEqualTo("1"); + + try (Connection connection = POSTGRES.createConnection("")) { + long groupId = queryLong( + connection, + "SELECT id FROM student_groups WHERE name = 'ИВТ-21-1'" + ); + long assignmentId = queryLong( + connection, + "SELECT id FROM student_group_calendar_assignments WHERE group_id = ?", + groupId + ); + long calendarId = queryLong( + connection, + "SELECT calendar_id FROM student_group_calendar_assignments WHERE id = ?", + assignmentId + ); + long otherFormId = queryLong( + connection, + "SELECT id FROM education_forms WHERE name = 'Специалитет'" + ); + + assertThat(incompatibleAssignmentCount(connection)).isZero(); + assertSqlState( + () -> updateLong( + connection, + "UPDATE academic_calendars SET study_form_id = ? WHERE id = ?", + otherFormId, + calendarId + ), + "23514", + "сохранённые назначения групп станут несовместимыми" + ); + assertSqlState( + () -> updateLong( + connection, + "UPDATE student_groups SET education_form_id = ? WHERE id = ?", + otherFormId, + groupId + ), + "23514", + "сохранённые назначения календарных графиков станут несовместимыми" + ); + assertSqlState( + () -> updateInt( + connection, + "UPDATE academic_calendars SET course_count = ? WHERE id = ?", + 3, + calendarId + ), + "23514", + "сохранённая сетка выходит за новые измерения" + ); + assertSqlState( + () -> insertOutOfRangeCalendarDay(connection, calendarId), + "23514", + "Строка сетки выходит за измерения календарного графика" + ); + assertSqlState( + () -> insertOutOfRangeCalendarSubject(connection, calendarId), + "23514", + "Номер семестра дисциплины выходит за измерения календарного графика" + ); + + assertThat(queryLong( + connection, + "SELECT count(*) FROM student_group_calendar_assignments WHERE id = ?", + assignmentId + )).isOne(); + assertThat(queryLong( + connection, + "SELECT course_count FROM academic_calendars WHERE id = ?", + calendarId + )).isEqualTo(4); + assertThat(incompatibleAssignmentCount(connection)).isZero(); + } + } + + @Test + @DisplayName("V1 не допускает гонку между назначением графика и изменением параметров группы") + void baselineProtectsConcurrentGroupAndAssignmentWrites() throws Exception { + Flyway flyway = baselineFlyway(); + flyway.clean(); + flyway.migrate(); + + long groupId; + long calendarId; + long academicYearId; + long otherFormId; + try (Connection connection = POSTGRES.createConnection("")) { + groupId = insertCompatibleGroup(connection); + calendarId = queryLong(connection, """ + SELECT calendar.id + FROM academic_calendars calendar + JOIN academic_years academic_year ON academic_year.id = calendar.academic_year_id + JOIN specialties specialty ON specialty.id = calendar.specialty_id + JOIN education_forms study_form ON study_form.id = calendar.study_form_id + WHERE academic_year.title = '2025-2026' + AND specialty.specialty_code = '09.03.01' + AND study_form.name = 'Бакалавриат' + ORDER BY calendar.id + LIMIT 1 + """); + academicYearId = queryLong( + connection, + "SELECT id FROM academic_years WHERE title = '2025-2026'" + ); + otherFormId = queryLong( + connection, + "SELECT id FROM education_forms WHERE name = 'Специалитет'" + ); + } + + ExecutorService executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + try { + long finalGroupId = groupId; + long finalCalendarId = calendarId; + long finalAcademicYearId = academicYearId; + long finalOtherFormId = otherFormId; + List> futures = List.of( + executor.submit(() -> concurrentGroupUpdate( + finalGroupId, + finalOtherFormId, + ready, + start + )), + executor.submit(() -> concurrentAssignmentInsert( + finalGroupId, + finalAcademicYearId, + finalCalendarId, + ready, + start + )) + ); + + assertThat(ready.await(5, TimeUnit.SECONDS)).isTrue(); + start.countDown(); + List outcomes = List.of( + futures.get(0).get(10, TimeUnit.SECONDS), + futures.get(1).get(10, TimeUnit.SECONDS) + ); + + assertThat(outcomes).filteredOn(WriteOutcome::success).hasSize(1); + assertThat(outcomes).filteredOn(outcome -> !outcome.success()).singleElement() + .satisfies(outcome -> { + assertThat(outcome.sqlState()).isEqualTo("23514"); + assertThat(outcome.message()).containsAnyOf( + "Календарный график не соответствует", + "сохранённые назначения календарных графиков станут несовместимыми" + ); + }); + + try (Connection connection = POSTGRES.createConnection("")) { + assertThat(incompatibleAssignmentCount(connection)).isZero(); + assertThat(queryLong( + connection, + "SELECT count(*) FROM student_group_calendar_assignments WHERE group_id = ?", + groupId + )).isLessThanOrEqualTo(1); + } + } finally { + start.countDown(); + executor.shutdownNow(); + } + } + + private WriteOutcome concurrentGroupUpdate(long groupId, + long educationFormId, + CountDownLatch ready, + CountDownLatch start) { + return concurrentWrite( + "UPDATE student_groups SET education_form_id = ? WHERE id = ?", + List.of(educationFormId, groupId), + ready, + start + ); + } + + private WriteOutcome concurrentAssignmentInsert(long groupId, + long academicYearId, + long calendarId, + CountDownLatch ready, + CountDownLatch start) { + return concurrentWrite( + """ + INSERT INTO student_group_calendar_assignments (group_id, academic_year_id, calendar_id) + VALUES (?, ?, ?) + """, + List.of(groupId, academicYearId, calendarId), + ready, + start + ); + } + + private WriteOutcome concurrentWrite(String sql, + List parameters, + CountDownLatch ready, + CountDownLatch start) { + try (Connection connection = POSTGRES.createConnection("")) { + connection.setAutoCommit(false); + ready.countDown(); + if (!start.await(5, TimeUnit.SECONDS)) { + return new WriteOutcome(false, null, "Не получен общий сигнал запуска"); + } + try (PreparedStatement statement = connection.prepareStatement(sql)) { + for (int index = 0; index < parameters.size(); index++) { + statement.setLong(index + 1, parameters.get(index)); + } + statement.executeUpdate(); + connection.commit(); + return new WriteOutcome(true, null, null); + } catch (SQLException exception) { + connection.rollback(); + return new WriteOutcome(false, exception.getSQLState(), exception.getMessage()); + } + } catch (Exception exception) { + return new WriteOutcome(false, null, exception.getMessage()); + } + } + + private Flyway baselineFlyway() { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion("1")) + .cleanDisabled(false) + .load(); + } + + private long insertCompatibleGroup(Connection connection) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO student_groups ( + name, + group_size, + education_form_id, + department_id, + specialty_id, + specialty_profile_id, + year_start_study + ) + SELECT + 'КОНКУРЕНТНАЯ-ГРУППА', + 20, + study_form.id, + department.id, + specialty.id, + profile.id, + 2025 + FROM education_forms study_form + CROSS JOIN departments department + CROSS JOIN specialties specialty + JOIN specialty_profiles profile ON profile.specialty_id = specialty.id + WHERE study_form.name = 'Бакалавриат' + AND department.code = 1 + AND specialty.specialty_code = '09.03.01' + AND profile.name = 'Без профиля' + RETURNING id + """)) { + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + } + + private void insertOutOfRangeCalendarDay(Connection connection, long calendarId) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO academic_calendar_days ( + calendar_id, + course_number, + date, + week_number, + day_of_week, + activity_type_id + ) VALUES (?, 5, DATE '2025-09-01', 1, 1, ( + SELECT id FROM academic_calendar_activity_types WHERE code = 'Т' + )) + """)) { + statement.setLong(1, calendarId); + statement.executeUpdate(); + } + } + + private void insertOutOfRangeCalendarSubject(Connection connection, long calendarId) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO academic_calendar_subjects (calendar_id, semester_number, subject_id) + VALUES (?, 9, (SELECT min(id) FROM subjects)) + """)) { + statement.setLong(1, calendarId); + statement.executeUpdate(); + } + } + + private long incompatibleAssignmentCount(Connection connection) throws SQLException { + return queryLong(connection, """ + SELECT count(*) + FROM student_group_calendar_assignments assignment + JOIN student_groups student_group ON student_group.id = assignment.group_id + JOIN academic_calendars calendar ON calendar.id = assignment.calendar_id + WHERE assignment.academic_year_id <> calendar.academic_year_id + OR student_group.specialty_id <> calendar.specialty_id + OR student_group.specialty_profile_id <> calendar.specialty_profile_id + OR student_group.education_form_id <> calendar.study_form_id + """); + } + + private void updateLong(Connection connection, String sql, long value, long id) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setLong(1, value); + statement.setLong(2, id); + statement.executeUpdate(); + } + } + + private void updateInt(Connection connection, String sql, int value, long id) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setInt(1, value); + statement.setLong(2, id); + statement.executeUpdate(); + } + } + + private long queryLong(Connection connection, String sql, Object... parameters) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + for (int index = 0; index < parameters.length; index++) { + statement.setObject(index + 1, parameters[index]); + } + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).as("SQL-запрос должен вернуть строку: %s", sql).isTrue(); + return resultSet.getLong(1); + } + } + } + + private void assertSqlState(ThrowingSqlRunnable operation, + String expectedSqlState, + String expectedMessagePart) { + Throwable failure = catchThrowable(operation::run); + assertThat(failure).isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()).isEqualTo(expectedSqlState); + assertThat(sqlFailure.getMessage()).contains(expectedMessagePart); + } + + @FunctionalInterface + private interface ThrowingSqlRunnable { + void run() throws SQLException; + } + + private record WriteOutcome(boolean success, String sqlState, String message) { + } +} diff --git a/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java index 05e5f89..32e5456 100644 --- a/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java @@ -14,31 +14,21 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; -import java.util.Collections; -import java.util.IdentityHashMap; -import java.util.Set; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @Testcontainers -@DisplayName("Миграция инвариантов точечных изменений расписания") +@DisplayName("Инварианты точечных изменений расписания базовой схемы") class ScheduleOverrideMigrationIntegrationTest { - private static final String[] OVERRIDE_CONSTRAINTS = { - "chk_schedule_overrides_cancel_payload", - "chk_schedule_overrides_move_payload", - "chk_schedule_overrides_replace_payload", - "chk_schedule_overrides_format" - }; - @Container static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); @Test - @DisplayName("V3 принимает допустимые варианты и отклоняет недопустимые данные") + @DisplayName("V1 принимает допустимые варианты и отклоняет недопустимые данные") void migrationEnforcesScheduleOverrideInvariants() throws SQLException { - Flyway flyway = targetThreeFlyway(); + Flyway flyway = baselineFlyway(); flyway.clean(); flyway.migrate(); @@ -46,8 +36,8 @@ class ScheduleOverrideMigrationIntegrationTest { .as("После полной миграции должна существовать текущая версия") .isNotNull(); assertThat(flyway.info().current().getVersion().getVersion()) - .as("Последней успешно применённой миграцией должна быть V3") - .isEqualTo("3"); + .as("Последней успешно применённой миграцией должна быть V1") + .isEqualTo("1"); try (Connection connection = POSTGRES.createConnection("")) { SeedIds seedIds = loadSeedIds(connection); @@ -106,81 +96,11 @@ class ScheduleOverrideMigrationIntegrationTest { } } - @Test - @DisplayName("V3 останавливается на legacy-данных до добавления ограничений") - void migrationFailsPreflightWithoutPartialConstraints() throws SQLException { - Flyway targetTwo = targetTwoFlyway(); - targetTwo.clean(); - targetTwo.migrate(); - - try (Connection connection = POSTGRES.createConnection("")) { - SeedIds seedIds = loadSeedIds(connection); - insertOverride( - connection, - seedIds, - LocalDate.of(2026, 5, 4), - "REPLACE", - null, - null, - null - ); - } - - Flyway targetThree = targetThreeFlyway(); - Throwable migrationFailure = catchThrowable(targetThree::migrate); - - assertThat(migrationFailure) - .as("V3 должна остановить миграцию при пустом legacy-изменении REPLACE") - .isNotNull(); - assertThat(collectMessages(migrationFailure)) - .as("Ошибка preflight должна объяснять проблему на русском языке") - .contains("Невозможно применить инварианты точечных изменений") - .contains("REPLACE=1") - .contains("Исправьте данные tenant-БД и повторите миграцию"); - - assertThat(targetThree.info().current()) - .as("После отката V3 должна остаться текущая успешная версия") - .isNotNull(); - assertThat(targetThree.info().current().getVersion().getVersion()) - .as("Последней успешно применённой миграцией должна остаться V2") - .isEqualTo("2"); - - try (Connection connection = POSTGRES.createConnection("")) { - assertThat(queryLong( - connection, - "SELECT count(*) FROM flyway_schema_history WHERE success AND version = '3'" - )) - .as("V3 не должна отмечаться как успешно применённая") - .isZero(); - assertThat(queryLong( - connection, - """ - SELECT count(*) - FROM pg_constraint - WHERE conrelid = 'schedule_overrides'::regclass - AND conname::text = ANY (?) - """, - connection.createArrayOf("text", OVERRIDE_CONSTRAINTS) - )) - .as("Ни одно ограничение V3 не должно остаться после неуспешного preflight") - .isZero(); - } - } - - private Flyway targetThreeFlyway() { + private Flyway baselineFlyway() { return Flyway.configure() .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) .locations("classpath:db/migration") - .target(MigrationVersion.fromVersion("3")) - .cleanDisabled(false) - .load(); - } - - private Flyway targetTwoFlyway() { - return Flyway.configure() - .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) - .locations("classpath:db/migration") - .target(MigrationVersion.fromVersion("2")) + .target(MigrationVersion.fromVersion("1")) .cleanDisabled(false) .load(); } @@ -276,19 +196,6 @@ class ScheduleOverrideMigrationIntegrationTest { } } - private String collectMessages(Throwable failure) { - StringBuilder messages = new StringBuilder(); - Set visited = Collections.newSetFromMap(new IdentityHashMap<>()); - Throwable current = failure; - while (current != null && visited.add(current)) { - if (current.getMessage() != null) { - messages.append(current.getMessage()).append('\n'); - } - current = current.getCause(); - } - return messages.toString(); - } - private record SeedIds(long baseRuleSlotId, long classroomId, long teacherId) { } } diff --git a/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java index 2ac8f1e..b81a1ee 100644 --- a/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java @@ -12,15 +12,12 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.Collections; -import java.util.IdentityHashMap; -import java.util.Set; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @Testcontainers -@DisplayName("Миграция чётности академических часов правил расписания") +@DisplayName("Инварианты правил расписания базовой схемы") class ScheduleRuleHoursMigrationIntegrationTest { private static final String HOURS_CONSTRAINT = "chk_schedule_rules_academic_hours_even"; @@ -30,9 +27,9 @@ class ScheduleRuleHoursMigrationIntegrationTest { static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); @Test - @DisplayName("V4 принимает чётные часы и отклоняет нечётное значение каждого вида занятий") + @DisplayName("V1 принимает чётные часы и отклоняет нечётное значение каждого вида занятий") void migrationEnforcesEvenAcademicHours() throws SQLException { - Flyway flyway = targetFourFlyway(); + Flyway flyway = baselineFlyway(); flyway.clean(); flyway.migrate(); @@ -40,8 +37,8 @@ class ScheduleRuleHoursMigrationIntegrationTest { .as("После полной миграции должна существовать текущая версия") .isNotNull(); assertThat(flyway.info().current().getVersion().getVersion()) - .as("Последней успешно применённой миграцией должна быть V4") - .isEqualTo("4"); + .as("Последней успешно применённой миграцией должна быть V1") + .isEqualTo("1"); try (Connection connection = POSTGRES.createConnection("")) { SeedIds seedIds = loadSeedIds(connection); @@ -63,7 +60,7 @@ class ScheduleRuleHoursMigrationIntegrationTest { """, HOURS_CONSTRAINT )) - .as("Ограничение чётности V4 должно быть провалидировано") + .as("Ограничение чётности V1 должно быть провалидировано") .isOne(); assertOddHoursRejected(connection, seedIds, 1, 2, 2, "лекций"); @@ -73,113 +70,11 @@ class ScheduleRuleHoursMigrationIntegrationTest { } } - @Test - @DisplayName("V4 останавливается на legacy-правиле с нечётными часами до добавления ограничения") - void migrationFailsPreflightWithoutPartialConstraint() throws SQLException { - Flyway targetThree = targetThreeFlyway(); - targetThree.clean(); - targetThree.migrate(); - - try (Connection connection = POSTGRES.createConnection("")) { - SeedIds seedIds = loadSeedIds(connection); - insertScheduleRule(connection, seedIds, 1, 3, 5); - } - - Flyway targetFour = targetFourFlyway(); - Throwable migrationFailure = catchThrowable(targetFour::migrate); - - assertThat(migrationFailure) - .as("V4 должна остановить миграцию при нечётных часах legacy-правила") - .isNotNull(); - assertThat(collectMessages(migrationFailure)) - .as("Ошибка preflight должна объяснять проблему на русском языке") - .contains("Невозможно применить инвариант чётности академических часов правил расписания") - .contains("лекции=1") - .contains("лабораторные=1") - .contains("практики=1") - .contains("Исправьте данные tenant-БД и повторите миграцию"); - - assertThat(targetFour.info().current()) - .as("После отката V4 должна остаться текущая успешная версия") - .isNotNull(); - assertThat(targetFour.info().current().getVersion().getVersion()) - .as("Последней успешно применённой миграцией должна остаться V3") - .isEqualTo("3"); - - try (Connection connection = POSTGRES.createConnection("")) { - assertThat(queryLong( - connection, - "SELECT count(*) FROM flyway_schema_history WHERE success AND version = '4'" - )) - .as("V4 не должна отмечаться как успешно применённая") - .isZero(); - assertThat(queryLong( - connection, - """ - SELECT count(*) - FROM pg_constraint - WHERE conrelid = 'schedule_rules'::regclass - AND conname = ? - """, - HOURS_CONSTRAINT - )) - .as("Ограничение V4 не должно частично остаться после неуспешного preflight") - .isZero(); - } - } - - @Test - @DisplayName("V4 останавливается на legacy-дубле слота до добавления ограничений") - void migrationFailsOnLegacyExactSlotDuplicate() throws SQLException { - Flyway targetThree = targetThreeFlyway(); - targetThree.clean(); - targetThree.migrate(); - - try (Connection connection = POSTGRES.createConnection("")) { - duplicateExistingSlot(connection); - } - - Flyway targetFour = targetFourFlyway(); - Throwable migrationFailure = catchThrowable(targetFour::migrate); - - assertThat(migrationFailure) - .as("V4 должна остановить миграцию при точном legacy-дубле слота") - .isNotNull(); - assertThat(collectMessages(migrationFailure)) - .as("Ошибка preflight должна объяснять проблему уникальности на русском языке") - .contains("Невозможно применить инвариант уникальности слотов правил расписания") - .contains("групп точных дублей=1") - .contains("Исправьте данные tenant-БД и повторите миграцию"); - - assertThat(targetFour.info().current()) - .as("После отката V4 должна остаться текущая успешная версия") - .isNotNull(); - assertThat(targetFour.info().current().getVersion().getVersion()).isEqualTo("3"); - - try (Connection connection = POSTGRES.createConnection("")) { - assertThat(queryLong( - connection, - "SELECT count(*) FROM flyway_schema_history WHERE success AND version = '4'" - )).isZero(); - assertConstraintAbsent(connection, HOURS_CONSTRAINT); - assertConstraintAbsent(connection, EXACT_SLOT_CONSTRAINT); - } - } - - private Flyway targetFourFlyway() { + private Flyway baselineFlyway() { return Flyway.configure() .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) .locations("classpath:db/migration") - .target(MigrationVersion.fromVersion("4")) - .cleanDisabled(false) - .load(); - } - - private Flyway targetThreeFlyway() { - return Flyway.configure() - .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) - .locations("classpath:db/migration") - .target(MigrationVersion.fromVersion("3")) + .target(MigrationVersion.fromVersion("1")) .cleanDisabled(false) .load(); } @@ -291,20 +186,6 @@ class ScheduleRuleHoursMigrationIntegrationTest { } } - private void assertConstraintAbsent(Connection connection, String constraintName) throws SQLException { - assertThat(queryLong( - connection, - """ - SELECT count(*) - FROM pg_constraint - WHERE conrelid IN ('schedule_rules'::regclass, 'schedule_rule_slots'::regclass) - AND conname = ? - """, - constraintName - )).as("Ограничение %s не должно частично остаться после неуспешной V4", constraintName) - .isZero(); - } - private long queryLong(Connection connection, String sql, Object... parameters) throws SQLException { try (PreparedStatement statement = connection.prepareStatement(sql)) { for (int index = 0; index < parameters.length; index++) { @@ -319,19 +200,6 @@ class ScheduleRuleHoursMigrationIntegrationTest { } } - private String collectMessages(Throwable failure) { - StringBuilder messages = new StringBuilder(); - Set visited = Collections.newSetFromMap(new IdentityHashMap<>()); - Throwable current = failure; - while (current != null && visited.add(current)) { - if (current.getMessage() != null) { - messages.append(current.getMessage()).append('\n'); - } - current = current.getCause(); - } - return messages.toString(); - } - private record SeedIds(long subjectId, long semesterId) { } } diff --git a/backend/src/test/java/com/magistr/app/migration/SubjectOwnershipInvariantIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/SubjectOwnershipInvariantIntegrationTest.java new file mode 100644 index 0000000..71110f4 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/SubjectOwnershipInvariantIntegrationTest.java @@ -0,0 +1,146 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +@Testcontainers +@DisplayName("Уникальность владения дисциплинами базовой схемы") +class SubjectOwnershipInvariantIntegrationTest { + + private static final String UNIQUE_INDEX = "uq_subjects_name_ci"; + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @Test + @DisplayName("V1 запрещает совпадение названия дисциплины без учёта регистра") + void baselineEnforcesCaseInsensitiveGlobalSubjectName() throws SQLException { + migrateBaseline(); + + try (Connection connection = POSTGRES.createConnection("")) { + long anotherDepartmentId = queryLong(connection, "SELECT max(id) FROM departments"); + Throwable failure = catchThrowable(() -> insertSubject( + connection, + "информатика", + anotherDepartmentId + )); + + assertThat(failure).isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()).isEqualTo("23505"); + assertThat(sqlFailure.getMessage()).contains(UNIQUE_INDEX); + } + } + + @Test + @DisplayName("V1 конкурентно принимает только одну дисциплину с одинаковым названием") + void baselineProtectsConcurrentSubjectCreation() throws Exception { + migrateBaseline(); + long firstDepartmentId; + long secondDepartmentId; + try (Connection connection = POSTGRES.createConnection("")) { + firstDepartmentId = queryLong(connection, "SELECT min(id) FROM departments"); + secondDepartmentId = queryLong(connection, "SELECT max(id) FROM departments"); + } + + ExecutorService executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + try { + List> futures = List.of( + executor.submit(() -> concurrentInsert("Теория систем", firstDepartmentId, ready, start)), + executor.submit(() -> concurrentInsert("теория систем", secondDepartmentId, ready, start)) + ); + assertThat(ready.await(5, TimeUnit.SECONDS)).isTrue(); + start.countDown(); + + List outcomes = List.of( + futures.get(0).get(10, TimeUnit.SECONDS), + futures.get(1).get(10, TimeUnit.SECONDS) + ); + assertThat(outcomes).filteredOn(InsertOutcome::success).hasSize(1); + assertThat(outcomes).filteredOn(outcome -> !outcome.success()).singleElement() + .satisfies(outcome -> { + assertThat(outcome.sqlState()).isEqualTo("23505"); + assertThat(outcome.message()).contains(UNIQUE_INDEX); + }); + } finally { + start.countDown(); + executor.shutdownNow(); + } + } + + private void migrateBaseline() { + Flyway flyway = Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion("1")) + .cleanDisabled(false) + .load(); + flyway.clean(); + flyway.migrate(); + } + + private InsertOutcome concurrentInsert(String name, + long departmentId, + CountDownLatch ready, + CountDownLatch start) { + try (Connection connection = POSTGRES.createConnection("")) { + connection.setAutoCommit(false); + ready.countDown(); + if (!start.await(5, TimeUnit.SECONDS)) { + return new InsertOutcome(false, null, "Не получен общий сигнал запуска"); + } + try { + insertSubject(connection, name, departmentId); + connection.commit(); + return new InsertOutcome(true, null, null); + } catch (SQLException exception) { + connection.rollback(); + return new InsertOutcome(false, exception.getSQLState(), exception.getMessage()); + } + } catch (Exception exception) { + return new InsertOutcome(false, null, exception.getMessage()); + } + } + + private void insertSubject(Connection connection, String name, long departmentId) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO subjects (name, department_id) + VALUES (?, ?) + """)) { + statement.setString(1, name); + statement.setLong(2, departmentId); + statement.executeUpdate(); + } + } + + private long queryLong(Connection connection, String sql) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql); + var resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + + private record InsertOutcome(boolean success, String sqlState, String message) { + } +} diff --git a/backend/src/test/java/com/magistr/app/migration/TeacherDepartmentInvariantIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/TeacherDepartmentInvariantIntegrationTest.java new file mode 100644 index 0000000..f888261 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/TeacherDepartmentInvariantIntegrationTest.java @@ -0,0 +1,257 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +@Testcontainers +@DisplayName("Исторические назначения преподавателей базовой схемы") +class TeacherDepartmentInvariantIntegrationTest { + + private static final String OVERLAP_CONSTRAINT = "ex_teacher_primary_department_no_overlap"; + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @Test + @DisplayName("V1 разрешает соседний перевод и совместительство, но запрещает пересечение основных кафедр") + void baselineEnforcesTeacherDepartmentTimeline() throws SQLException { + Flyway flyway = baselineFlyway(); + flyway.clean(); + flyway.migrate(); + + try (Connection connection = POSTGRES.createConnection("")) { + long teacherId = seedTeacherId(connection); + long firstDepartmentId = queryLong(connection, "SELECT min(id) FROM departments"); + long secondDepartmentId = queryLong(connection, "SELECT max(id) FROM departments"); + updateOpenPrimaryEnd(connection, teacherId, LocalDate.of(2026, 7, 31)); + + insertAssignment( + connection, + teacherId, + secondDepartmentId, + LocalDate.of(2026, 8, 1), + null, + true + ); + insertAssignment( + connection, + teacherId, + firstDepartmentId, + LocalDate.of(2026, 8, 1), + null, + false + ); + + assertSqlState( + () -> insertAssignment( + connection, + teacherId, + firstDepartmentId, + LocalDate.of(2026, 8, 15), + LocalDate.of(2026, 9, 1), + true + ), + "23P01", + OVERLAP_CONSTRAINT + ); + assertThat(queryLong( + connection, + "SELECT count(*) FROM pg_constraint WHERE conname = ?", + OVERLAP_CONSTRAINT + )).isOne(); + } + } + + @Test + @DisplayName("V1 отклоняет одну из двух конкурентных пересекающихся основных кафедр") + void baselineProtectsConcurrentPrimaryAssignments() throws Exception { + Flyway flyway = baselineFlyway(); + flyway.clean(); + flyway.migrate(); + + long teacherId; + long firstDepartmentId; + long secondDepartmentId; + try (Connection connection = POSTGRES.createConnection("")) { + teacherId = seedTeacherId(connection); + firstDepartmentId = queryLong(connection, "SELECT min(id) FROM departments"); + secondDepartmentId = queryLong(connection, "SELECT max(id) FROM departments"); + updateOpenPrimaryEnd(connection, teacherId, LocalDate.of(2089, 12, 31)); + } + + ExecutorService executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + try { + List> futures = List.of( + executor.submit(() -> concurrentInsert( + teacherId, + firstDepartmentId, + LocalDate.of(2090, 1, 1), + LocalDate.of(2090, 12, 31), + ready, + start + )), + executor.submit(() -> concurrentInsert( + teacherId, + secondDepartmentId, + LocalDate.of(2090, 6, 1), + LocalDate.of(2091, 5, 31), + ready, + start + )) + ); + + assertThat(ready.await(5, TimeUnit.SECONDS)).isTrue(); + start.countDown(); + List outcomes = List.of( + futures.get(0).get(10, TimeUnit.SECONDS), + futures.get(1).get(10, TimeUnit.SECONDS) + ); + + assertThat(outcomes).filteredOn(InsertOutcome::success).hasSize(1); + assertThat(outcomes).filteredOn(outcome -> !outcome.success()).singleElement() + .satisfies(outcome -> { + assertThat(outcome.sqlState()).isIn("23P01", "40P01"); + if ("23P01".equals(outcome.sqlState())) { + assertThat(outcome.message()).contains(OVERLAP_CONSTRAINT); + } + }); + } finally { + start.countDown(); + executor.shutdownNow(); + } + } + + private InsertOutcome concurrentInsert(long teacherId, + long departmentId, + LocalDate validFrom, + LocalDate validTo, + CountDownLatch ready, + CountDownLatch start) { + try (Connection connection = POSTGRES.createConnection("")) { + connection.setAutoCommit(false); + ready.countDown(); + if (!start.await(5, TimeUnit.SECONDS)) { + return new InsertOutcome(false, null, "Не получен общий сигнал запуска"); + } + try { + insertAssignment(connection, teacherId, departmentId, validFrom, validTo, true); + connection.commit(); + return new InsertOutcome(true, null, null); + } catch (SQLException exception) { + connection.rollback(); + return new InsertOutcome(false, exception.getSQLState(), exception.getMessage()); + } + } catch (Exception exception) { + return new InsertOutcome(false, null, exception.getMessage()); + } + } + + private Flyway baselineFlyway() { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion("1")) + .cleanDisabled(false) + .load(); + } + + private long seedTeacherId(Connection connection) throws SQLException { + return queryLong( + connection, + "SELECT id FROM users WHERE role = 'TEACHER' ORDER BY id LIMIT 1" + ); + } + + private void updateOpenPrimaryEnd(Connection connection, + long teacherId, + LocalDate validTo) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + UPDATE teacher_department_assignments + SET valid_to = ? + WHERE teacher_id = ? + AND is_primary = TRUE + AND valid_to IS NULL + """)) { + statement.setDate(1, Date.valueOf(validTo)); + statement.setLong(2, teacherId); + assertThat(statement.executeUpdate()).isEqualTo(1); + } + } + + private void insertAssignment(Connection connection, + long teacherId, + long departmentId, + LocalDate validFrom, + LocalDate validTo, + boolean primary) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO teacher_department_assignments ( + teacher_id, + department_id, + valid_from, + valid_to, + is_primary + ) VALUES (?, ?, ?, ?, ?) + """)) { + statement.setLong(1, teacherId); + statement.setLong(2, departmentId); + statement.setDate(3, Date.valueOf(validFrom)); + statement.setObject(4, validTo == null ? null : Date.valueOf(validTo)); + statement.setBoolean(5, primary); + statement.executeUpdate(); + } + } + + private long queryLong(Connection connection, String sql, Object... parameters) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + for (int index = 0; index < parameters.length; index++) { + statement.setObject(index + 1, parameters[index]); + } + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + } + + private void assertSqlState(ThrowingSqlRunnable operation, + String expectedSqlState, + String expectedMessagePart) { + Throwable failure = catchThrowable(operation::run); + assertThat(failure).isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()).isEqualTo(expectedSqlState); + assertThat(sqlFailure.getMessage()).contains(expectedMessagePart); + } + + @FunctionalInterface + private interface ThrowingSqlRunnable { + void run() throws SQLException; + } + + private record InsertOutcome(boolean success, String sqlState, String message) { + } +} diff --git a/backend/src/test/java/com/magistr/app/migration/TimeSlotInvariantMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/TimeSlotInvariantMigrationIntegrationTest.java new file mode 100644 index 0000000..829313b --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/TimeSlotInvariantMigrationIntegrationTest.java @@ -0,0 +1,316 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +@Testcontainers +@DisplayName("Инварианты временных слотов базовой схемы") +class TimeSlotInvariantMigrationIntegrationTest { + + private static final String DURATION_CONSTRAINT = "chk_time_slots_duration_matches_range"; + private static final String OVERLAP_CONSTRAINT = "ex_time_slots_scope_no_overlap"; + + @Container + static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + + @Test + @DisplayName("V1 вычислительно связывает длительность, запрещает пересечения и защищает базовые слоты") + void migrationEnforcesAllTimeSlotInvariants() throws SQLException { + Flyway flyway = baselineFlyway(); + flyway.clean(); + flyway.migrate(); + + assertThat(flyway.info().current()).isNotNull(); + assertThat(flyway.info().current().getVersion().getVersion()).isEqualTo("1"); + + try (Connection connection = POSTGRES.createConnection("")) { + long manualScopeId = insertManualScope(connection, "migration_checks"); + long firstSlotId = insertTimeSlot(connection, manualScopeId, 101, "08:00", "09:30", 90); + insertTimeSlot(connection, manualScopeId, 102, "09:30", "11:00", 90); + + assertSqlState( + () -> insertTimeSlot(connection, manualScopeId, 103, "09:00", "10:00", 60), + "23P01", + OVERLAP_CONSTRAINT + ); + assertSqlState( + () -> insertTimeSlot(connection, manualScopeId, 104, "11:10", "12:10", 30), + "23514", + DURATION_CONSTRAINT + ); + + long usedBaseSlotId = queryLong( + connection, + "SELECT time_slot_id FROM schedule_rule_slots ORDER BY id LIMIT 1" + ); + assertSqlState( + () -> updateLong( + connection, + "UPDATE time_slots SET time_slot_scope_id = ? WHERE id = ?", + manualScopeId, + usedBaseSlotId + ), + "23514", + "нельзя переносить из базовой сетки" + ); + assertSqlState( + () -> copyRuleSlotWithTimeSlot(connection, firstSlotId), + "23514", + "только слоты базовой сетки" + ); + + long defaultScopeId = queryLong( + connection, + "SELECT id FROM time_slot_scopes WHERE apply_mode = 'DEFAULT'" + ); + assertSqlState( + () -> updateString( + connection, + "UPDATE time_slot_scopes SET apply_mode = ? WHERE id = ?", + "MANUAL", + defaultScopeId + ), + "23514", + "нельзя сделать небазовой" + ); + + assertThat(constraintCount(connection, DURATION_CONSTRAINT)).isOne(); + assertThat(constraintCount(connection, OVERLAP_CONSTRAINT)).isOne(); + } + } + + @Test + @DisplayName("V1 отклоняет одну из двух конкурентных вставок пересекающихся интервалов") + void migrationProtectsConcurrentWrites() throws Exception { + Flyway flyway = baselineFlyway(); + flyway.clean(); + flyway.migrate(); + + long manualScopeId; + try (Connection connection = POSTGRES.createConnection("")) { + manualScopeId = insertManualScope(connection, "concurrent_slots"); + } + + ExecutorService executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + try { + List> futures = List.of( + executor.submit(() -> concurrentInsert( + manualScopeId, 301, "12:00", "13:30", ready, start)), + executor.submit(() -> concurrentInsert( + manualScopeId, 302, "13:00", "14:30", ready, start)) + ); + + assertThat(ready.await(5, TimeUnit.SECONDS)) + .as("Обе конкурентные транзакции должны подготовиться") + .isTrue(); + start.countDown(); + + List outcomes = List.of( + futures.get(0).get(10, TimeUnit.SECONDS), + futures.get(1).get(10, TimeUnit.SECONDS) + ); + assertThat(outcomes).filteredOn(InsertOutcome::success).hasSize(1); + assertThat(outcomes).filteredOn(outcome -> !outcome.success()).singleElement() + .satisfies(outcome -> { + assertThat(outcome.sqlState()).isIn("23P01", "40P01"); + if ("23P01".equals(outcome.sqlState())) { + assertThat(outcome.message()).contains(OVERLAP_CONSTRAINT); + } + }); + } finally { + start.countDown(); + executor.shutdownNow(); + } + } + + private InsertOutcome concurrentInsert(long scopeId, + int orderNumber, + String startTime, + String endTime, + CountDownLatch ready, + CountDownLatch start) { + try (Connection connection = POSTGRES.createConnection("")) { + connection.setAutoCommit(false); + ready.countDown(); + if (!start.await(5, TimeUnit.SECONDS)) { + return new InsertOutcome(false, null, "Не получен общий сигнал запуска"); + } + try { + insertTimeSlot(connection, scopeId, orderNumber, startTime, endTime, 90); + connection.commit(); + return new InsertOutcome(true, null, null); + } catch (SQLException exception) { + connection.rollback(); + return new InsertOutcome(false, exception.getSQLState(), exception.getMessage()); + } + } catch (Exception exception) { + return new InsertOutcome(false, null, exception.getMessage()); + } + } + + private Flyway baselineFlyway() { + return flyway("1"); + } + + private Flyway flyway(String targetVersion) { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion(targetVersion)) + .cleanDisabled(false) + .load(); + } + + private long insertManualScope(Connection connection, String code) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO time_slot_scopes ( + code, + name, + apply_mode, + system_scope, + display_order + ) VALUES (?, ?, 'MANUAL', FALSE, 900) + RETURNING id + """)) { + statement.setString(1, code); + statement.setString(2, "Тестовая ручная сетка"); + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + } + + private long insertTimeSlot(Connection connection, + long scopeId, + int orderNumber, + String startTime, + String endTime, + int durationMinutes) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO time_slots ( + time_slot_scope_id, + order_number, + start_time, + end_time, + duration_minutes + ) VALUES (?, ?, ?::TIME, ?::TIME, ?) + RETURNING id + """)) { + statement.setLong(1, scopeId); + statement.setInt(2, orderNumber); + statement.setString(3, startTime); + statement.setString(4, endTime); + statement.setInt(5, durationMinutes); + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + } + + private void copyRuleSlotWithTimeSlot(Connection connection, long timeSlotId) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO schedule_rule_slots ( + schedule_rule_id, + day_of_week, + parity, + time_slot_id, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + ) + SELECT + schedule_rule_id, + day_of_week, + parity, + ?, + teacher_id, + classroom_id, + lesson_type_id, + lesson_format + FROM schedule_rule_slots + ORDER BY id + LIMIT 1 + """)) { + statement.setLong(1, timeSlotId); + statement.executeUpdate(); + } + } + + private void updateLong(Connection connection, String sql, long value, long id) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setLong(1, value); + statement.setLong(2, id); + statement.executeUpdate(); + } + } + + private void updateString(Connection connection, String sql, String value, long id) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setString(1, value); + statement.setLong(2, id); + statement.executeUpdate(); + } + } + + private long constraintCount(Connection connection, String constraintName) throws SQLException { + return queryLong( + connection, + "SELECT count(*) FROM pg_constraint WHERE conrelid = 'time_slots'::regclass AND conname = ?", + constraintName + ); + } + + private long queryLong(Connection connection, String sql, Object... parameters) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + for (int index = 0; index < parameters.length; index++) { + statement.setObject(index + 1, parameters[index]); + } + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).as("SQL-запрос должен вернуть строку: %s", sql).isTrue(); + return resultSet.getLong(1); + } + } + } + + private void assertSqlState(ThrowingSqlRunnable operation, + String expectedSqlState, + String expectedMessagePart) { + Throwable failure = catchThrowable(operation::run); + assertThat(failure).isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()).isEqualTo(expectedSqlState); + assertThat(sqlFailure.getMessage()).contains(expectedMessagePart); + } + + @FunctionalInterface + private interface ThrowingSqlRunnable { + void run() throws SQLException; + } + + private record InsertOutcome(boolean success, String sqlState, String message) { + } +} diff --git a/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java b/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java index c5e36c0..c208dce 100644 --- a/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java +++ b/backend/src/test/java/com/magistr/app/model/LifecycleEntityTest.java @@ -2,6 +2,7 @@ package com.magistr.app.model; import org.junit.jupiter.api.Test; +import java.time.Instant; import java.time.LocalDate; import static org.assertj.core.api.Assertions.assertThat; @@ -37,4 +38,17 @@ class LifecycleEntityTest { assertThat(subject.isActiveOn(LocalDate.of(2026, 1, 20))).isTrue(); assertThat(subject.isActiveOn(LocalDate.of(2026, 1, 21))).isFalse(); } + + @Test + void archiveUsesExplicitBusinessDateAndUtcMoment() { + Subject subject = new Subject(); + LocalDate businessDate = LocalDate.of(2026, 1, 2); + Instant archiveMoment = Instant.parse("2026-01-01T21:00:00Z"); + + subject.archive("Тестовая архивация", businessDate, archiveMoment); + + assertThat(subject.getActiveTo()).isEqualTo(businessDate); + assertThat(subject.getArchivedAt()).isEqualTo(archiveMoment); + assertThat(subject.getArchiveReason()).isEqualTo("Тестовая архивация"); + } } diff --git a/backend/src/test/java/com/magistr/app/service/AcademicPeriodServiceTest.java b/backend/src/test/java/com/magistr/app/service/AcademicPeriodServiceTest.java new file mode 100644 index 0000000..531d425 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/AcademicPeriodServiceTest.java @@ -0,0 +1,245 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.AcademicYearDto; +import com.magistr.app.dto.SemesterDto; +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.Semester; +import com.magistr.app.model.SemesterType; +import com.magistr.app.repository.AcademicYearRepository; +import com.magistr.app.repository.SemesterRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; +import org.springframework.dao.DataIntegrityViolationException; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class AcademicPeriodServiceTest { + + private static final long YEAR_ID = 10L; + private static final long SEMESTER_ID = 20L; + private static final LocalDate YEAR_START = LocalDate.of(2026, 9, 1); + private static final LocalDate YEAR_END = LocalDate.of(2027, 6, 30); + + @Mock + private AcademicYearRepository academicYearRepository; + @Mock + private SemesterRepository semesterRepository; + @Mock + private ScheduleGeneratorService scheduleGeneratorService; + + private AcademicPeriodService service; + private AcademicYear year; + + @BeforeEach + void setUp() { + service = new AcademicPeriodService( + academicYearRepository, + semesterRepository, + scheduleGeneratorService + ); + year = year(); + when(academicYearRepository.saveAndFlush(any(AcademicYear.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + when(semesterRepository.saveAndFlush(any(Semester.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + } + + @Test + void createsNonOverlappingYearWithTrimmedTitle() { + AcademicYear saved = service.createYear(yearRequest( + " 2026-2027 ", + YEAR_START, + YEAR_END + )); + + assertThat(saved.getTitle()).isEqualTo("2026-2027"); + assertThat(saved.getStartDate()).isEqualTo(YEAR_START); + verify(scheduleGeneratorService).clearCache(); + } + + @Test + void rejectsDuplicateTitleOrOverlappingYear() { + when(academicYearRepository.existsByTitle("2026-2027")).thenReturn(true); + + assertThatThrownBy(() -> service.createYear(yearRequest( + "2026-2027", + YEAR_START, + YEAR_END + ))) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Название или период учебного года конфликтует с существующим учебным годом"); + + verify(academicYearRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsYearUpdateThatWouldExcludeExistingSemester() { + Semester autumn = semester( + SEMESTER_ID, + SemesterType.autumn, + YEAR_START, + LocalDate.of(2027, 1, 31) + ); + when(academicYearRepository.findByIdForUpdate(YEAR_ID)).thenReturn(Optional.of(year)); + when(semesterRepository.findByAcademicYearIdOrderByStartDateAsc(YEAR_ID)) + .thenReturn(List.of(autumn)); + + assertThatThrownBy(() -> service.updateYear(YEAR_ID, yearRequest( + "2026-2027", + YEAR_START.plusDays(1), + YEAR_END + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Новые границы учебного года не включают все его семестры"); + + verify(academicYearRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsSemesterOutsideAcademicYear() { + when(academicYearRepository.findByIdForUpdate(YEAR_ID)).thenReturn(Optional.of(year)); + + assertThatThrownBy(() -> service.createSemester(YEAR_ID, semesterRequest( + SemesterType.autumn, + YEAR_START.minusDays(1), + LocalDate.of(2027, 1, 31) + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Семестр должен полностью находиться в границах учебного года"); + + verify(semesterRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsDuplicateTypeOrOverlappingSemester() { + when(academicYearRepository.findByIdForUpdate(YEAR_ID)).thenReturn(Optional.of(year)); + when(semesterRepository.existsOverlapping( + YEAR_ID, + YEAR_START, + LocalDate.of(2027, 2, 1) + )).thenReturn(true); + + assertThatThrownBy(() -> service.createSemester(YEAR_ID, semesterRequest( + SemesterType.autumn, + YEAR_START, + LocalDate.of(2027, 2, 1) + ))) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Тип или период семестра конфликтует с существующим семестром учебного года"); + + verify(semesterRepository, never()).saveAndFlush(any()); + } + + @Test + void acceptsAdjacentSemesters() { + when(academicYearRepository.findByIdForUpdate(YEAR_ID)).thenReturn(Optional.of(year)); + + Semester saved = service.createSemester(YEAR_ID, semesterRequest( + SemesterType.spring, + LocalDate.of(2027, 2, 1), + YEAR_END + )); + + assertThat(saved.getStartDate()).isEqualTo(LocalDate.of(2027, 2, 1)); + assertThat(saved.getAcademicYear()).isSameAs(year); + verify(scheduleGeneratorService).clearCache(); + } + + @Test + void validatesDuplicateSemesterTypeDuringUpdate() { + Semester existing = semester( + SEMESTER_ID, + SemesterType.spring, + LocalDate.of(2027, 2, 1), + YEAR_END + ); + when(semesterRepository.findById(SEMESTER_ID)).thenReturn(Optional.of(existing)); + when(academicYearRepository.findByIdForUpdate(YEAR_ID)).thenReturn(Optional.of(year)); + when(semesterRepository.findByIdForUpdate(SEMESTER_ID)).thenReturn(Optional.of(existing)); + when(semesterRepository.existsByAcademicYearIdAndSemesterTypeAndIdNot( + YEAR_ID, + SemesterType.autumn, + SEMESTER_ID + )).thenReturn(true); + + assertThatThrownBy(() -> service.updateSemester(SEMESTER_ID, semesterRequest( + SemesterType.autumn, + LocalDate.of(2027, 2, 1), + YEAR_END + ))) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Тип или период семестра конфликтует с существующим семестром учебного года"); + + verify(semesterRepository, never()).saveAndFlush(any()); + } + + @Test + void mapsDatabaseRaceToSafeConflict() { + when(academicYearRepository.saveAndFlush(any(AcademicYear.class))) + .thenThrow(new DataIntegrityViolationException("ex_academic_years_no_overlap")); + + assertThatThrownBy(() -> service.createYear(yearRequest( + "2026-2027", + YEAR_START, + YEAR_END + ))) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Название или период учебного года конфликтует с существующим учебным годом") + .hasNoCause(); + } + + private AcademicYearDto yearRequest(String title, LocalDate startDate, LocalDate endDate) { + return new AcademicYearDto(null, title, startDate, endDate, List.of()); + } + + private SemesterDto semesterRequest(SemesterType semesterType, + LocalDate startDate, + LocalDate endDate) { + return new SemesterDto( + null, + YEAR_ID, + "2026-2027", + semesterType, + startDate, + endDate + ); + } + + private AcademicYear year() { + AcademicYear academicYear = new AcademicYear(); + academicYear.setId(YEAR_ID); + academicYear.setTitle("2026-2027"); + academicYear.setStartDate(YEAR_START); + academicYear.setEndDate(YEAR_END); + return academicYear; + } + + private Semester semester(Long id, + SemesterType semesterType, + LocalDate startDate, + LocalDate endDate) { + Semester semester = new Semester(); + semester.setId(id); + semester.setAcademicYear(year); + semester.setSemesterType(semesterType); + semester.setStartDate(startDate); + semester.setEndDate(endDate); + return semester; + } +} diff --git a/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java b/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java new file mode 100644 index 0000000..cb5242e --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java @@ -0,0 +1,335 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.AcademicCalendarDto; +import com.magistr.app.dto.CreateGroupRequest; +import com.magistr.app.dto.GroupCalendarAssignmentDto; +import com.magistr.app.model.AcademicCalendar; +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.EducationForm; +import com.magistr.app.model.Speciality; +import com.magistr.app.model.SpecialtyProfile; +import com.magistr.app.model.StudentGroup; +import com.magistr.app.model.StudentGroupCalendarAssignment; +import com.magistr.app.repository.AcademicCalendarDayRepository; +import com.magistr.app.repository.AcademicCalendarRepository; +import com.magistr.app.repository.AcademicCalendarSubjectRepository; +import com.magistr.app.repository.AcademicYearRepository; +import com.magistr.app.repository.EducationFormRepository; +import com.magistr.app.repository.GroupRepository; +import com.magistr.app.repository.SpecialtiesRepository; +import com.magistr.app.repository.SpecialtyProfileRepository; +import com.magistr.app.repository.StudentGroupCalendarAssignmentRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class AcademicStructureServiceTest { + + private static final long YEAR_ID = 10L; + private static final long SPECIALITY_ID = 20L; + private static final long PROFILE_ID = 30L; + private static final long FORM_ID = 40L; + private static final long OTHER_FORM_ID = 41L; + private static final long CALENDAR_ID = 50L; + private static final long GROUP_ID = 60L; + + @Mock + private AcademicCalendarRepository calendarRepository; + @Mock + private AcademicCalendarDayRepository calendarDayRepository; + @Mock + private AcademicCalendarSubjectRepository calendarSubjectRepository; + @Mock + private AcademicYearRepository academicYearRepository; + @Mock + private SpecialtiesRepository specialtiesRepository; + @Mock + private SpecialtyProfileRepository profileRepository; + @Mock + private EducationFormRepository educationFormRepository; + @Mock + private GroupRepository groupRepository; + @Mock + private StudentGroupCalendarAssignmentRepository assignmentRepository; + @Mock + private ScheduleGeneratorService scheduleGeneratorService; + + private AcademicStructureService service; + private AcademicYear academicYear; + private Speciality speciality; + private SpecialtyProfile profile; + private EducationForm studyForm; + private EducationForm otherStudyForm; + private AcademicCalendar calendar; + private StudentGroup group; + + @BeforeEach + void setUp() { + service = new AcademicStructureService( + calendarRepository, + calendarDayRepository, + calendarSubjectRepository, + academicYearRepository, + specialtiesRepository, + profileRepository, + educationFormRepository, + groupRepository, + assignmentRepository, + scheduleGeneratorService + ); + academicYear = academicYear(); + speciality = speciality(); + profile = profile(speciality); + studyForm = studyForm(FORM_ID, "Бакалавриат"); + otherStudyForm = studyForm(OTHER_FORM_ID, "Магистратура"); + calendar = calendar(); + group = group(2025); + + when(calendarRepository.findByIdWithDetailsForUpdate(CALENDAR_ID)) + .thenReturn(Optional.of(calendar)); + when(academicYearRepository.findById(YEAR_ID)).thenReturn(Optional.of(academicYear)); + when(academicYearRepository.findByIdForUpdate(YEAR_ID)).thenReturn(Optional.of(academicYear)); + when(specialtiesRepository.findById(SPECIALITY_ID)).thenReturn(Optional.of(speciality)); + when(profileRepository.findById(PROFILE_ID)).thenReturn(Optional.of(profile)); + when(educationFormRepository.findById(FORM_ID)).thenReturn(Optional.of(studyForm)); + when(educationFormRepository.findById(OTHER_FORM_ID)).thenReturn(Optional.of(otherStudyForm)); + when(groupRepository.findByIdForUpdate(GROUP_ID)).thenReturn(Optional.of(group)); + when(calendarRepository.saveAndFlush(any(AcademicCalendar.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + when(groupRepository.saveAndFlush(any(StudentGroup.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + when(assignmentRepository.saveAndFlush(any(StudentGroupCalendarAssignment.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + } + + @Test + void rejectsCalendarDimensionChangeAndKeepsEntityUnchanged() { + when(assignmentRepository.findByCalendarIdWithDetails(CALENDAR_ID)) + .thenReturn(List.of(assignment(group, calendar))); + + assertThatThrownBy(() -> service.updateCalendar( + CALENDAR_ID, + calendarRequest(4, OTHER_FORM_ID) + )) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Нельзя изменить график: сохранённые назначения групп станут несовместимыми"); + + assertThat(calendar.getStudyForm()).isSameAs(studyForm); + verify(calendarRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsCourseCountBelowExistingGrid() { + when(calendarDayRepository.existsByAcademicCalendarIdAndCourseNumberGreaterThan( + CALENDAR_ID, 3)).thenReturn(true); + + assertThatThrownBy(() -> service.updateCalendar( + CALENDAR_ID, + calendarRequest(3, FORM_ID) + )) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Нельзя уменьшить количество курсов: в сетке есть данные старших курсов"); + + assertThat(calendar.getCourseCount()).isEqualTo(4); + } + + @Test + void rejectsCourseCountBelowExistingSubjects() { + when(calendarSubjectRepository.existsByAcademicCalendarIdAndSemesterNumberGreaterThan( + CALENDAR_ID, 6)).thenReturn(true); + + assertThatThrownBy(() -> service.updateCalendar( + CALENDAR_ID, + calendarRequest(3, FORM_ID) + )) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Нельзя уменьшить количество курсов: есть дисциплины старших семестров"); + } + + @Test + void rejectsGroupDimensionChangeAndKeepsAssignment() { + when(assignmentRepository.findByGroupIdWithDetails(GROUP_ID)) + .thenReturn(List.of(assignment(group, calendar))); + + assertThatThrownBy(() -> service.updateGroup( + GROUP_ID, + groupRequest(2025, OTHER_FORM_ID) + )) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Нельзя изменить группу: сохранённые назначения календарных графиков станут несовместимыми"); + + assertThat(group.getEducationForm()).isSameAs(studyForm); + verify(groupRepository, never()).saveAndFlush(any()); + verify(assignmentRepository, never()).delete(any()); + } + + @Test + void acceptsCompatibleGroupUpdateAndClearsCache() { + when(assignmentRepository.findByGroupIdWithDetails(GROUP_ID)) + .thenReturn(List.of(assignment(group, calendar))); + + StudentGroup saved = service.updateGroup(GROUP_ID, groupRequest(2025, FORM_ID)); + + assertThat(saved.getName()).isEqualTo("ИВТ-26"); + assertThat(saved.getEducationForm()).isSameAs(studyForm); + verify(scheduleGeneratorService).clearCache(); + } + + @Test + void rejectsAssignmentWhenGroupCourseIsOutsideCalendar() { + group.setYearStartStudy(2020); + + assertThatThrownBy(() -> service.saveAssignment( + GROUP_ID, + assignmentRequest() + )) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Календарный график не соответствует учебному году, параметрам или курсу группы"); + + verify(assignmentRepository, never()).saveAndFlush(any()); + } + + @Test + void savesCompatibleAssignmentWithoutDeletingExistingData() { + when(assignmentRepository.findByGroupIdAndAcademicYearIdForUpdate(GROUP_ID, YEAR_ID)) + .thenReturn(Optional.empty()); + + StudentGroupCalendarAssignment saved = service.saveAssignment( + GROUP_ID, + assignmentRequest() + ); + + assertThat(saved.getStudentGroup()).isSameAs(group); + assertThat(saved.getAcademicCalendar()).isSameAs(calendar); + verify(assignmentRepository, never()).delete(any()); + verify(scheduleGeneratorService).clearCache(); + } + + private AcademicCalendarDto calendarRequest(int courseCount, long studyFormId) { + return new AcademicCalendarDto( + CALENDAR_ID, + "График 2026", + YEAR_ID, + null, + null, + null, + SPECIALITY_ID, + null, + null, + PROFILE_ID, + null, + studyFormId, + null, + courseCount + ); + } + + private CreateGroupRequest groupRequest(int yearStartStudy, long studyFormId) { + CreateGroupRequest request = new CreateGroupRequest(); + request.setName("ИВТ-26"); + request.setGroupSize(25L); + request.setEducationFormId(studyFormId); + request.setDepartmentId(1L); + request.setYearStartStudy(yearStartStudy); + request.setSpecialtyId(SPECIALITY_ID); + request.setSpecialtyProfileId(PROFILE_ID); + return request; + } + + private GroupCalendarAssignmentDto assignmentRequest() { + return new GroupCalendarAssignmentDto( + null, + GROUP_ID, + null, + YEAR_ID, + null, + CALENDAR_ID, + null, + List.of() + ); + } + + private AcademicYear academicYear() { + AcademicYear year = new AcademicYear(); + year.setId(YEAR_ID); + year.setTitle("2025-2026"); + year.setStartDate(LocalDate.of(2025, 9, 1)); + year.setEndDate(LocalDate.of(2026, 6, 30)); + return year; + } + + private Speciality speciality() { + Speciality value = new Speciality(); + value.setId(SPECIALITY_ID); + value.setSpecialityCode("09.03.01"); + value.setSpecialityName("Информатика"); + return value; + } + + private SpecialtyProfile profile(Speciality owner) { + SpecialtyProfile value = new SpecialtyProfile(); + value.setId(PROFILE_ID); + value.setName("Без профиля"); + value.setSpeciality(owner); + return value; + } + + private EducationForm studyForm(long id, String name) { + EducationForm value = new EducationForm(); + value.setId(id); + value.setName(name); + return value; + } + + private AcademicCalendar calendar() { + AcademicCalendar value = new AcademicCalendar(); + value.setId(CALENDAR_ID); + value.setTitle("Исходный график"); + value.setAcademicYear(academicYear); + value.setSpeciality(speciality); + value.setSpecialtyProfile(profile); + value.setStudyForm(studyForm); + value.setCourseCount(4); + return value; + } + + private StudentGroup group(int yearStartStudy) { + StudentGroup value = new StudentGroup(); + value.setId(GROUP_ID); + value.setName("ИВТ-25"); + value.setGroupSize(25L); + value.setEducationForm(studyForm); + value.setDepartmentId(1L); + value.setYearStartStudy(yearStartStudy); + value.setSpeciality(speciality); + value.setSpecialtyProfile(profile); + return value; + } + + private StudentGroupCalendarAssignment assignment(StudentGroup assignedGroup, + AcademicCalendar assignedCalendar) { + StudentGroupCalendarAssignment value = new StudentGroupCalendarAssignment(); + value.setId(70L); + value.setStudentGroup(assignedGroup); + value.setAcademicYear(academicYear); + value.setAcademicCalendar(assignedCalendar); + return value; + } +} diff --git a/backend/src/test/java/com/magistr/app/service/BusinessTimeServiceTest.java b/backend/src/test/java/com/magistr/app/service/BusinessTimeServiceTest.java new file mode 100644 index 0000000..5c34a51 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/BusinessTimeServiceTest.java @@ -0,0 +1,36 @@ +package com.magistr.app.service; + +import org.junit.jupiter.api.Test; + +import java.time.Clock; +import java.time.Instant; +import java.time.LocalDate; +import java.time.ZoneId; + +import static org.assertj.core.api.Assertions.assertThat; + +class BusinessTimeServiceTest { + + private static final ZoneId MOSCOW = ZoneId.of("Europe/Moscow"); + + @Test + void keepsBusinessDateBeforeMoscowMidnight() { + BusinessTimeService service = new BusinessTimeService( + Clock.fixed(Instant.parse("2026-01-01T20:59:59Z"), ZoneId.of("UTC")), + MOSCOW + ); + + assertThat(service.today()).isEqualTo(LocalDate.of(2026, 1, 1)); + assertThat(service.now()).isEqualTo(Instant.parse("2026-01-01T20:59:59Z")); + } + + @Test + void changesBusinessDateExactlyAtMoscowMidnight() { + BusinessTimeService service = new BusinessTimeService( + Clock.fixed(Instant.parse("2026-01-01T21:00:00Z"), ZoneId.of("UTC")), + MOSCOW + ); + + assertThat(service.today()).isEqualTo(LocalDate.of(2026, 1, 2)); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleGenerationQueryCountTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleGenerationQueryCountTest.java new file mode 100644 index 0000000..9bb02cb --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/ScheduleGenerationQueryCountTest.java @@ -0,0 +1,265 @@ +package com.magistr.app.service; + +import com.magistr.app.model.*; +import com.magistr.app.repository.*; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.HashSet; +import java.util.List; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyCollection; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +@DisplayName("Число запросов генератора расписания") +class ScheduleGenerationQueryCountTest { + + private static final LocalDate START_DATE = LocalDate.of(2026, 9, 1); + private static final LocalDate END_DATE = LocalDate.of(2026, 12, 29); + private static final int GROUP_COUNT = 30; + private static final int RULE_COUNT = 20; + + @Test + @DisplayName("120 дат, десятки групп и правил обрабатываются семью batch-запросами") + void queryCountDoesNotGrowAsDatesTimesGroupsTimesRules() { + SemesterRepository semesterRepository = mock(SemesterRepository.class); + StudentGroupCalendarAssignmentRepository assignmentRepository = + mock(StudentGroupCalendarAssignmentRepository.class); + AcademicCalendarDayRepository calendarDayRepository = mock(AcademicCalendarDayRepository.class); + ScheduleRuleRepository ruleRepository = mock(ScheduleRuleRepository.class); + TimeSlotDateAssignmentRepository dateAssignmentRepository = mock(TimeSlotDateAssignmentRepository.class); + TimeSlotScopeRepository scopeRepository = mock(TimeSlotScopeRepository.class); + TimeSlotRepository timeSlotRepository = mock(TimeSlotRepository.class); + GroupRepository groupRepository = mock(GroupRepository.class); + UserRepository userRepository = mock(UserRepository.class); + + AcademicYear academicYear = academicYear(); + Semester semester = semester(academicYear); + AcademicCalendar calendar = calendar(academicYear); + List groups = groups(); + List assignments = groups.stream() + .map(group -> assignment(group, academicYear, calendar)) + .toList(); + List calendarDays = START_DATE.datesUntil(END_DATE.plusDays(1)) + .map(date -> calendarDay(calendar, date)) + .toList(); + List rules = IntStream.rangeClosed(1, RULE_COUNT) + .mapToObj(index -> rule(index, semester, groups)) + .toList(); + TimeSlotScope defaultScope = timeSlotScope(40L, "DEFAULT", null); + TimeSlotScope weekdayScope = timeSlotScope(41L, "WEEKDAY", 2); + TimeSlot baseSlot = timeSlot(50L, defaultScope, LocalTime.of(8, 0), LocalTime.of(9, 30)); + TimeSlot effectiveSlot = timeSlot(51L, weekdayScope, LocalTime.of(8, 15), LocalTime.of(9, 45)); + addRenderedLecture(rules.get(0), baseSlot); + + when(semesterRepository.findOverlappingForSchedule(START_DATE, END_DATE)) + .thenReturn(List.of(semester)); + when(assignmentRepository.findForScheduleBatch(anyCollection(), anyCollection())) + .thenReturn(assignments); + when(calendarDayRepository.findForScheduleBatch(anyCollection(), eq(START_DATE), eq(END_DATE))) + .thenReturn(calendarDays); + when(ruleRepository.findByGroupIdsAndSemesterIds(anyCollection(), anyCollection())) + .thenReturn(rules); + when(dateAssignmentRepository.findForScheduleRange(START_DATE, END_DATE)).thenReturn(List.of()); + when(scopeRepository.findByApplyModeOrderByDisplayOrderAsc("WEEKDAY")) + .thenReturn(List.of(weekdayScope)); + when(timeSlotRepository.findAllForSchedule()).thenReturn(List.of(baseSlot, effectiveSlot)); + + AcademicDateService academicDateService = new AcademicDateService( + semesterRepository, + calendarDayRepository, + assignmentRepository, + false + ); + ScheduleGeneratorService generator = new ScheduleGeneratorService( + ruleRepository, + groupRepository, + userRepository, + academicDateService, + timeSlotRepository, + scopeRepository, + dateAssignmentRepository + ); + + var result = generator.buildScheduleForGroups(groups, START_DATE, END_DATE); + + assertThat(START_DATE.datesUntil(END_DATE.plusDays(1)).count()).isEqualTo(120); + assertThat(groups).hasSize(GROUP_COUNT); + assertThat(rules).hasSize(RULE_COUNT); + assertThat(result).hasSize(GROUP_COUNT).allSatisfy(lesson -> { + assertThat(lesson.date()).isEqualTo(START_DATE); + assertThat(lesson.timeSlotId()).isEqualTo(effectiveSlot.getId()); + assertThat(lesson.startTime()).isEqualTo(effectiveSlot.getStartTime()); + assertThat(lesson.remainingLessonTypeAcademicHoursAfterLesson()).isZero(); + assertThat(lesson.groupIds()).hasSize(1); + }); + + verify(semesterRepository).findOverlappingForSchedule(START_DATE, END_DATE); + verify(assignmentRepository).findForScheduleBatch(anyCollection(), anyCollection()); + verify(calendarDayRepository).findForScheduleBatch(anyCollection(), eq(START_DATE), eq(END_DATE)); + verify(ruleRepository).findByGroupIdsAndSemesterIds(anyCollection(), anyCollection()); + verify(dateAssignmentRepository).findForScheduleRange(START_DATE, END_DATE); + verify(scopeRepository).findByApplyModeOrderByDisplayOrderAsc("WEEKDAY"); + verify(timeSlotRepository).findAllForSchedule(); + + verify(semesterRepository, never()) + .findFirstByStartDateLessThanEqualAndEndDateGreaterThanEqual(any(), any()); + verify(assignmentRepository, never()).findForSchedule(any(), any()); + verify(calendarDayRepository, never()) + .findByCalendarIdAndCourseNumberAndDate(any(), any(), any()); + verify(ruleRepository, never()).findByGroupIdAndSemesterId(any(), any()); + verify(dateAssignmentRepository, never()).findByDate(any()); + verify(scopeRepository, never()).findByApplyModeAndDayOfWeek(any(), any()); + verify(timeSlotRepository, never()).findByTimeSlotScopeIdAndOrderNumber(any(), any()); + + int repositoryCalls = Stream.of( + semesterRepository, + assignmentRepository, + calendarDayRepository, + ruleRepository, + dateAssignmentRepository, + scopeRepository, + timeSlotRepository, + groupRepository, + userRepository + ) + .mapToInt(repository -> mockingDetails(repository).getInvocations().size()) + .sum(); + assertThat(repositoryCalls).isEqualTo(7); + } + + private AcademicYear academicYear() { + AcademicYear academicYear = new AcademicYear(); + academicYear.setId(1L); + academicYear.setTitle("2026/2027"); + academicYear.setStartDate(START_DATE); + academicYear.setEndDate(LocalDate.of(2027, 8, 31)); + return academicYear; + } + + private Semester semester(AcademicYear academicYear) { + Semester semester = new Semester(); + semester.setId(10L); + semester.setAcademicYear(academicYear); + semester.setSemesterType(SemesterType.autumn); + semester.setStartDate(START_DATE); + semester.setEndDate(END_DATE); + return semester; + } + + private AcademicCalendar calendar(AcademicYear academicYear) { + AcademicCalendar calendar = new AcademicCalendar(); + calendar.setId(20L); + calendar.setTitle("Основной учебный график"); + calendar.setAcademicYear(academicYear); + calendar.setCourseCount(4); + return calendar; + } + + private List groups() { + return IntStream.rangeClosed(1, GROUP_COUNT) + .mapToObj(index -> { + StudentGroup group = new StudentGroup(); + group.setId((long) index); + group.setName("Группа " + index); + group.setYearStartStudy(2026); + return group; + }) + .toList(); + } + + private StudentGroupCalendarAssignment assignment(StudentGroup group, + AcademicYear academicYear, + AcademicCalendar calendar) { + StudentGroupCalendarAssignment assignment = new StudentGroupCalendarAssignment(); + assignment.setId(100L + group.getId()); + assignment.setStudentGroup(group); + assignment.setAcademicYear(academicYear); + assignment.setAcademicCalendar(calendar); + return assignment; + } + + private AcademicCalendarDay calendarDay(AcademicCalendar calendar, LocalDate date) { + AcademicCalendarActivityType theory = new AcademicCalendarActivityType(); + theory.setId(30L); + theory.setCode("Т"); + theory.setName("Теоретическое обучение"); + theory.setAllowSchedule(true); + + AcademicCalendarDay day = new AcademicCalendarDay(); + day.setAcademicCalendar(calendar); + day.setCourseNumber(1); + day.setDate(date); + day.setActivityType(theory); + return day; + } + + private ScheduleRule rule(int index, Semester semester, List groups) { + Subject subject = new Subject((long) index, "Дисциплина " + index, "D" + index, 1L); + ScheduleRule rule = new ScheduleRule(); + rule.setId((long) index); + rule.setSubject(subject); + rule.setSemester(semester); + rule.setGroups(new HashSet<>(groups)); + return rule; + } + + private TimeSlotScope timeSlotScope(Long id, String applyMode, Integer dayOfWeek) { + TimeSlotScope scope = new TimeSlotScope(); + scope.setId(id); + scope.setCode(applyMode + "-" + id); + scope.setName("Сетка " + id); + scope.setApplyMode(applyMode); + scope.setDayOfWeek(dayOfWeek); + scope.setDisplayOrder(id.intValue()); + return scope; + } + + private TimeSlot timeSlot(Long id, TimeSlotScope scope, LocalTime startTime, LocalTime endTime) { + TimeSlot slot = new TimeSlot(); + slot.setId(id); + slot.setOrderNumber(1); + slot.setTimeSlotScope(scope); + slot.setStartTime(startTime); + slot.setEndTime(endTime); + slot.setDurationMinutes(90); + return slot; + } + + private void addRenderedLecture(ScheduleRule rule, TimeSlot timeSlot) { + User teacher = new User(); + teacher.setId(60L); + teacher.setUsername("teacher"); + teacher.setFullName("Тестовый преподаватель"); + teacher.setRole(Role.TEACHER); + + Classroom classroom = new Classroom(); + classroom.setId(70L); + classroom.setName("А-101"); + classroom.setIsAvailable(true); + + LessonType lessonType = new LessonType(); + lessonType.setId(80L); + lessonType.setLessonType("Лекция"); + + ScheduleRuleSlot slot = new ScheduleRuleSlot(); + slot.setId(90L); + slot.setScheduleRule(rule); + slot.setDayOfWeek(2); + slot.setParity(ScheduleParity.BOTH); + slot.setTimeSlot(timeSlot); + slot.setTeacher(teacher); + slot.setClassroom(classroom); + slot.setLessonType(lessonType); + slot.setLessonFormat("Очно"); + + rule.setLectureAcademicHours(2); + rule.setSlots(new HashSet<>(List.of(slot))); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java index b564073..6eff294 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java @@ -20,6 +20,8 @@ import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -67,7 +69,7 @@ class ScheduleQueryServiceTeacherOverrideTest { assertThat(sourceSchedule).isEmpty(); verify(overrideRepository, times(2)).findByLessonDateBetweenWithDetails(DATE, DATE); verify(groupRepository).findAll(); - verify(generatorService).buildScheduleForGroup(GROUP_ID, DATE, DATE); + verifyBaseDayBatch(); } @Test @@ -85,7 +87,7 @@ class ScheduleQueryServiceTeacherOverrideTest { assertThat(result).isEmpty(); verify(overrideRepository).findByLessonDateBetweenWithDetails(DATE, DATE); verify(groupRepository).findAll(); - verify(generatorService).buildScheduleForGroup(GROUP_ID, DATE, DATE); + verifyBaseDayBatch(); } @Test @@ -109,7 +111,7 @@ class ScheduleQueryServiceTeacherOverrideTest { .containsExactly(101L, 102L); verify(overrideRepository).findByLessonDateBetweenWithDetails(DATE, DATE); verify(groupRepository).findAll(); - verify(generatorService).buildScheduleForGroup(GROUP_ID, DATE, DATE); + verifyBaseDayBatch(); } @Test @@ -128,7 +130,7 @@ class ScheduleQueryServiceTeacherOverrideTest { assertThat(lesson.scheduleRuleSlotId()).isEqualTo(101L)); verify(overrideRepository).findByLessonDateBetweenWithDetails(DATE, DATE); verify(groupRepository).findAll(); - verify(generatorService).buildScheduleForGroup(GROUP_ID, DATE, DATE); + verifyBaseDayBatch(); } @Test @@ -146,7 +148,7 @@ class ScheduleQueryServiceTeacherOverrideTest { move.setNewTimeSlot(newTimeSlot); when(groupRepository.findById(GROUP_ID)).thenReturn(Optional.of(group())); when(groupLifecycleService.mayHaveScheduleInRange(any(), any(), any())).thenReturn(true); - when(generatorService.buildScheduleForGroup(GROUP_ID, DATE, DATE)) + when(generatorService.buildScheduleForGroups(any(), eq(DATE), eq(DATE))) .thenReturn(List.of(cancelledLesson, movedLesson)); when(overrideRepository.findByLessonDateBetweenWithDetails(DATE, DATE)) .thenReturn(List.of(cancellation, move)); @@ -173,7 +175,15 @@ class ScheduleQueryServiceTeacherOverrideTest { private void stubBaseDay(List lessons) { when(groupRepository.findAll()).thenReturn(List.of(group())); when(groupLifecycleService.mayHaveScheduleInRange(any(), any(), any())).thenReturn(true); - when(generatorService.buildScheduleForGroup(GROUP_ID, DATE, DATE)).thenReturn(lessons); + when(generatorService.buildScheduleForGroups(any(), eq(DATE), eq(DATE))).thenReturn(lessons); + } + + private void verifyBaseDayBatch() { + verify(generatorService).buildScheduleForGroups( + argThat(groups -> groups.size() == 1 && groups.iterator().next().getId().equals(GROUP_ID)), + eq(DATE), + eq(DATE) + ); } private StudentGroup group() { diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java index 7fe126a..9873600 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java @@ -4,13 +4,18 @@ import com.magistr.app.model.StudentGroup; import com.magistr.app.repository.GroupRepository; import com.magistr.app.repository.ScheduleOverrideRepository; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import java.time.LocalDate; import java.util.List; import java.util.stream.IntStream; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @@ -68,6 +73,40 @@ class ScheduleQueryServiceTest { verify(groupRepository, never()).findAll(); } + @ParameterizedTest + @ValueSource(ints = {51, 100}) + void aggregationSearchProcessesAllActiveGroupsWithoutInteractiveLimit(int groupCount) { + ScheduleGeneratorService generatorService = mock(ScheduleGeneratorService.class); + GroupRepository groupRepository = mock(GroupRepository.class); + ScheduleOverrideRepository overrideRepository = mock(ScheduleOverrideRepository.class); + StudentGroupLifecycleService groupLifecycleService = mock(StudentGroupLifecycleService.class); + LocalDate startDate = LocalDate.of(2026, 5, 1); + LocalDate endDate = LocalDate.of(2026, 5, 7); + when(groupRepository.findAll()) + .thenReturn(IntStream.rangeClosed(1, groupCount) + .mapToObj(this::group) + .toList()); + when(groupLifecycleService.mayHaveScheduleInRange(any(), any(), any())).thenReturn(true); + when(generatorService.buildScheduleForGroups(any(), any(), any())).thenReturn(List.of()); + when(overrideRepository.findByLessonDateBetweenWithDetails(startDate, endDate)).thenReturn(List.of()); + ScheduleQueryService service = new ScheduleQueryService( + generatorService, + groupRepository, + overrideRepository, + groupLifecycleService + ); + + var result = service.searchForAggregation(null, null, startDate, endDate); + + assertThat(result).isEmpty(); + verify(generatorService).buildScheduleForGroups( + argThat(groups -> groups.size() == groupCount), + eq(startDate), + eq(endDate) + ); + verify(overrideRepository).findByLessonDateBetweenWithDetails(startDate, endDate); + } + private StudentGroup group(int id) { StudentGroup group = new StudentGroup(); group.setId((long) id); diff --git a/backend/src/test/java/com/magistr/app/service/SubjectImportServiceTest.java b/backend/src/test/java/com/magistr/app/service/SubjectImportServiceTest.java new file mode 100644 index 0000000..4c90856 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/SubjectImportServiceTest.java @@ -0,0 +1,110 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.CreateSubjectRequest; +import com.magistr.app.model.Subject; +import com.magistr.app.repository.SubjectRepository; +import org.junit.jupiter.api.Test; +import org.springframework.dao.DataIntegrityViolationException; + +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.Mockito.*; + +class SubjectImportServiceTest { + + @Test + void rejectsSubjectOwnedByAnotherDepartmentWithoutMutation() { + SubjectRepository repository = mock(SubjectRepository.class); + Subject foreign = subject(10L, "Информатика", "INF", 2L); + when(repository.findByNameIgnoreCase("информатика")).thenReturn(Optional.of(foreign)); + SubjectImportService service = new SubjectImportService(repository); + + assertThatThrownBy(() -> service.importSubjects( + List.of(request("информатика", "NEW", 1L)), + 1L + )) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Дисциплина «информатика» уже принадлежит другой кафедре"); + + assertThat(foreign.getDepartmentId()).isEqualTo(2L); + assertThat(foreign.getCode()).isEqualTo("INF"); + verify(repository, never()).saveAllAndFlush(anyList()); + } + + @Test + void repeatedOwnImportUpdatesSameSubjectAndRestoresIt() { + SubjectRepository repository = mock(SubjectRepository.class); + Subject own = subject(10L, "Информатика", "OLD", 1L); + own.archive("Архив"); + when(repository.findByNameIgnoreCase("информатика")).thenReturn(Optional.of(own)); + when(repository.saveAllAndFlush(anyList())).thenAnswer(invocation -> invocation.getArgument(0)); + SubjectImportService service = new SubjectImportService(repository); + + List firstResult = service.importSubjects( + List.of(request("информатика", " INF-2 ", 1L)), + 1L + ); + List repeatedResult = service.importSubjects( + List.of(request("информатика", "INF-2", 1L)), + 1L + ); + + assertThat(firstResult).containsExactly(own); + assertThat(repeatedResult).containsExactly(own); + assertThat(own.getId()).isEqualTo(10L); + assertThat(own.getDepartmentId()).isEqualTo(1L); + assertThat(own.getCode()).isEqualTo("INF-2"); + assertThat(own.isArchivedRecord()).isFalse(); + verify(repository, times(2)).saveAllAndFlush(List.of(own)); + } + + @Test + void duplicateNamesInsidePayloadAreImportedOnceCaseInsensitively() { + SubjectRepository repository = mock(SubjectRepository.class); + when(repository.findByNameIgnoreCase(anyString())).thenReturn(Optional.empty()); + when(repository.saveAllAndFlush(anyList())).thenAnswer(invocation -> invocation.getArgument(0)); + SubjectImportService service = new SubjectImportService(repository); + + List result = service.importSubjects( + List.of( + request("Информатика", "OLD", 1L), + request(" информатика ", "NEW", 1L) + ), + 1L + ); + + assertThat(result).singleElement().satisfies(subject -> { + assertThat(subject.getName()).isEqualTo("информатика"); + assertThat(subject.getCode()).isEqualTo("NEW"); + assertThat(subject.getDepartmentId()).isEqualTo(1L); + }); + } + + @Test + void mapsConcurrentUniqueViolationToConflict() { + SubjectRepository repository = mock(SubjectRepository.class); + when(repository.findByNameIgnoreCase("Физика")).thenReturn(Optional.empty()); + when(repository.saveAllAndFlush(anyList())) + .thenThrow(new DataIntegrityViolationException("uq_subjects_name_ci")); + SubjectImportService service = new SubjectImportService(repository); + + assertThatThrownBy(() -> service.importSubjects( + List.of(request("Физика", "PHY", 1L)), + 1L + )) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Дисциплина с таким названием уже существует"); + } + + private CreateSubjectRequest request(String name, String code, Long departmentId) { + return new CreateSubjectRequest(null, name, code, departmentId); + } + + private Subject subject(Long id, String name, String code, Long departmentId) { + return new Subject(id, name, code, departmentId); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/TeacherDepartmentServiceTest.java b/backend/src/test/java/com/magistr/app/service/TeacherDepartmentServiceTest.java new file mode 100644 index 0000000..69d529e --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/TeacherDepartmentServiceTest.java @@ -0,0 +1,209 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.DepartmentTransferRequest; +import com.magistr.app.model.Department; +import com.magistr.app.model.LifecycleEntity; +import com.magistr.app.model.Role; +import com.magistr.app.model.TeacherDepartmentAssignment; +import com.magistr.app.model.User; +import com.magistr.app.repository.DepartmentRepository; +import com.magistr.app.repository.TeacherDepartmentAssignmentRepository; +import com.magistr.app.repository.UserRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class TeacherDepartmentServiceTest { + + private static final LocalDate TODAY = LocalDate.of(2026, 7, 18); + + @Mock + private TeacherDepartmentAssignmentRepository assignmentRepository; + @Mock + private UserRepository userRepository; + @Mock + private DepartmentRepository departmentRepository; + + private TeacherDepartmentService service; + private Department oldDepartment; + private Department newDepartment; + private User teacher; + + @BeforeEach + void setUp() { + service = new TeacherDepartmentService( + assignmentRepository, + userRepository, + departmentRepository + ); + oldDepartment = new Department(1L, "Кафедра ИБ", 1L); + newDepartment = new Department(2L, "Кафедра ВТ", 2L); + teacher = teacher(); + } + + @Test + void futureTransferKeepsCurrentLegacyDepartmentUntilEffectiveDate() { + LocalDate validFrom = TODAY.plusMonths(1); + TeacherDepartmentAssignment current = assignment( + oldDepartment, + LocalDate.of(2025, 9, 1), + null, + true + ); + prepareTransfer(current); + + TeacherDepartmentAssignment saved = service.transferTeacher( + teacher.getId(), + new DepartmentTransferRequest(newDepartment.getId(), validFrom, "Будущий перевод"), + TODAY, + 99L + ); + + assertThat(current.getValidTo()).isEqualTo(validFrom.minusDays(1)); + assertThat(saved.getDepartment()).isEqualTo(newDepartment); + assertThat(saved.getValidFrom()).isEqualTo(validFrom); + assertThat(saved.getValidTo()).isNull(); + assertThat(teacher.getDepartmentId()).isEqualTo(oldDepartment.getId()); + verify(userRepository, never()).save(any()); + } + + @Test + void effectiveTransferSynchronizesLegacyDepartment() { + TeacherDepartmentAssignment current = assignment( + oldDepartment, + LocalDate.of(2025, 9, 1), + null, + true + ); + prepareTransfer(current); + + service.transferTeacher( + teacher.getId(), + new DepartmentTransferRequest(newDepartment.getId(), TODAY, null), + TODAY, + 99L + ); + + assertThat(current.getValidTo()).isEqualTo(TODAY.minusDays(1)); + assertThat(teacher.getDepartmentId()).isEqualTo(newDepartment.getId()); + verify(userRepository).save(teacher); + } + + @Test + void historicalDepartmentIncludesTeacherArchivedAfterTargetDate() { + teacher.setStatus(LifecycleEntity.STATUS_ARCHIVED); + teacher.setActiveTo(LocalDate.of(2026, 1, 31)); + TeacherDepartmentAssignment assignment = assignment( + oldDepartment, + LocalDate.of(2025, 9, 1), + null, + true + ); + when(assignmentRepository.findDepartmentTeachersAtDate( + oldDepartment.getId(), + LocalDate.of(2025, 12, 1) + )).thenReturn(List.of(assignment)); + when(assignmentRepository.findDepartmentTeachersAtDate( + oldDepartment.getId(), + LocalDate.of(2026, 2, 1) + )).thenReturn(List.of(assignment)); + + assertThat(service.findTeachersForDepartmentAtDate( + oldDepartment.getId(), + LocalDate.of(2025, 12, 1) + )).containsExactly(teacher); + assertThat(service.findTeachersForDepartmentAtDate( + oldDepartment.getId(), + LocalDate.of(2026, 2, 1) + )).isEmpty(); + } + + @Test + void primaryAssignmentWinsOverAdditionalAssignment() { + TeacherDepartmentAssignment additional = assignment( + newDepartment, + LocalDate.of(2025, 9, 1), + null, + false + ); + TeacherDepartmentAssignment primary = assignment( + oldDepartment, + LocalDate.of(2025, 9, 1), + null, + true + ); + + assertThat(service.resolveDepartmentIdAtDate( + List.of(additional, primary), + TODAY + )).contains(oldDepartment.getId()); + } + + @Test + void additionalAssignmentIsUsedWhenPrimaryIsOutsideTargetDate() { + TeacherDepartmentAssignment oldPrimary = assignment( + oldDepartment, + LocalDate.of(2025, 9, 1), + TODAY.minusDays(1), + true + ); + TeacherDepartmentAssignment additional = assignment( + newDepartment, + LocalDate.of(2025, 9, 1), + null, + false + ); + + assertThat(service.resolveDepartmentIdAtDate( + List.of(oldPrimary, additional), + TODAY + )).contains(newDepartment.getId()); + } + + private void prepareTransfer(TeacherDepartmentAssignment current) { + when(assignmentRepository.saveAndFlush(any(TeacherDepartmentAssignment.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + when(userRepository.findByIdForUpdate(teacher.getId())).thenReturn(Optional.of(teacher)); + when(departmentRepository.findById(newDepartment.getId())) + .thenReturn(Optional.of(newDepartment)); + when(assignmentRepository.findPrimaryHistoryForUpdate(teacher.getId())) + .thenReturn(List.of(current)); + } + + private TeacherDepartmentAssignment assignment(Department department, + LocalDate validFrom, + LocalDate validTo, + boolean primary) { + TeacherDepartmentAssignment assignment = new TeacherDepartmentAssignment(); + assignment.setTeacher(teacher); + assignment.setDepartment(department); + assignment.setValidFrom(validFrom); + assignment.setValidTo(validTo); + assignment.setPrimaryAssignment(primary); + return assignment; + } + + private User teacher() { + User value = new User(); + value.setId(10L); + value.setUsername("teacher"); + value.setRole(Role.TEACHER); + value.setFullName("Петров Пётр Петрович"); + value.setJobTitle("Доцент"); + value.setDepartmentId(oldDepartment.getId()); + return value; + } +} diff --git a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java index 5885699..3c7a4f0 100644 --- a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java @@ -287,7 +287,7 @@ class TenantLifecyclePostgreSqlIntegrationTest { int changed = statement.executeUpdate(""" UPDATE flyway_schema_history SET checksum = checksum + 1 - WHERE version = '4' + WHERE version = '1' """); assertThat(changed).isEqualTo(1); } diff --git a/backend/src/test/java/com/magistr/app/service/TimeSlotServiceTest.java b/backend/src/test/java/com/magistr/app/service/TimeSlotServiceTest.java new file mode 100644 index 0000000..859ce1c --- /dev/null +++ b/backend/src/test/java/com/magistr/app/service/TimeSlotServiceTest.java @@ -0,0 +1,226 @@ +package com.magistr.app.service; + +import com.magistr.app.dto.TimeSlotDto; +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.TimeSlotScope; +import com.magistr.app.repository.ScheduleRuleSlotRepository; +import com.magistr.app.repository.TimeSlotRepository; +import com.magistr.app.repository.TimeSlotScopeRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; + +import java.time.LocalTime; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class TimeSlotServiceTest { + + private static final long DEFAULT_SCOPE_ID = 10L; + private static final long MANUAL_SCOPE_ID = 20L; + private static final long SLOT_ID = 30L; + + @Mock + private TimeSlotRepository timeSlotRepository; + @Mock + private TimeSlotScopeRepository timeSlotScopeRepository; + @Mock + private ScheduleRuleSlotRepository scheduleRuleSlotRepository; + + private TimeSlotService service; + private TimeSlotScope defaultScope; + private TimeSlotScope manualScope; + + @BeforeEach + void setUp() { + service = new TimeSlotService( + timeSlotRepository, + timeSlotScopeRepository, + scheduleRuleSlotRepository + ); + defaultScope = scope(DEFAULT_SCOPE_ID, "DEFAULT"); + manualScope = scope(MANUAL_SCOPE_ID, "MANUAL"); + when(timeSlotRepository.saveAndFlush(any(TimeSlot.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + } + + @Test + void calculatesDurationOnBackendAndIgnoresRequestValue() { + when(timeSlotScopeRepository.findByIdForUpdate(DEFAULT_SCOPE_ID)) + .thenReturn(Optional.of(defaultScope)); + + TimeSlot saved = service.create(request( + DEFAULT_SCOPE_ID, + 1, + LocalTime.of(8, 0), + LocalTime.of(9, 30), + 999 + )); + + assertThat(saved.getDurationMinutes()).isEqualTo(90); + ArgumentCaptor captor = ArgumentCaptor.forClass(TimeSlot.class); + verify(timeSlotRepository).saveAndFlush(captor.capture()); + assertThat(captor.getValue().getDurationMinutes()).isEqualTo(90); + } + + @Test + void rejectsOverlapWithinScope() { + when(timeSlotScopeRepository.findByIdForUpdate(DEFAULT_SCOPE_ID)) + .thenReturn(Optional.of(defaultScope)); + when(timeSlotRepository.existsOverlapping( + DEFAULT_SCOPE_ID, + LocalTime.of(9, 0), + LocalTime.of(10, 0) + )).thenReturn(true); + + assertThatThrownBy(() -> service.create(request( + DEFAULT_SCOPE_ID, + 2, + LocalTime.of(9, 0), + LocalTime.of(10, 0), + null + ))) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Номер пары или интервал времени уже занят в выбранной сетке"); + + verify(timeSlotRepository, never()).saveAndFlush(any()); + } + + @Test + void allowsAdjacentIntervals() { + when(timeSlotScopeRepository.findByIdForUpdate(DEFAULT_SCOPE_ID)) + .thenReturn(Optional.of(defaultScope)); + when(timeSlotRepository.existsOverlapping( + DEFAULT_SCOPE_ID, + LocalTime.of(9, 30), + LocalTime.of(11, 0) + )).thenReturn(false); + + TimeSlot saved = service.create(request( + DEFAULT_SCOPE_ID, + 2, + LocalTime.of(9, 30), + LocalTime.of(11, 0), + null + )); + + assertThat(saved.getStartTime()).isEqualTo(LocalTime.of(9, 30)); + assertThat(saved.getDurationMinutes()).isEqualTo(90); + } + + @Test + void rejectsMovingUsedBaseSlotToManualScope() { + TimeSlot existing = slot(SLOT_ID, defaultScope); + when(timeSlotRepository.findByIdForUpdate(SLOT_ID)).thenReturn(Optional.of(existing)); + when(timeSlotScopeRepository.findByIdForUpdate(DEFAULT_SCOPE_ID)) + .thenReturn(Optional.of(defaultScope)); + when(timeSlotScopeRepository.findByIdForUpdate(MANUAL_SCOPE_ID)) + .thenReturn(Optional.of(manualScope)); + when(scheduleRuleSlotRepository.existsByTimeSlotId(SLOT_ID)).thenReturn(true); + + assertThatThrownBy(() -> service.update(SLOT_ID, request( + MANUAL_SCOPE_ID, + 1, + LocalTime.of(8, 0), + LocalTime.of(9, 30), + null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Слот базовой сетки, используемый в правилах расписания, нельзя перенести в другую сетку"); + + verify(timeSlotRepository, never()).saveAndFlush(any()); + } + + @Test + void calculatesDurationAgainOnUpdate() { + TimeSlot existing = slot(SLOT_ID, defaultScope); + when(timeSlotRepository.findByIdForUpdate(SLOT_ID)).thenReturn(Optional.of(existing)); + when(timeSlotScopeRepository.findByIdForUpdate(DEFAULT_SCOPE_ID)) + .thenReturn(Optional.of(defaultScope)); + + TimeSlot saved = service.update(SLOT_ID, request( + DEFAULT_SCOPE_ID, + 1, + LocalTime.of(8, 15), + LocalTime.of(9, 45), + 5 + )); + + assertThat(saved.getDurationMinutes()).isEqualTo(90); + assertThat(saved.getStartTime()).isEqualTo(LocalTime.of(8, 15)); + } + + @Test + void rejectsInvalidOrSubMinuteRangeBeforeLocking() { + assertThatThrownBy(() -> service.create(request( + DEFAULT_SCOPE_ID, + 1, + LocalTime.of(10, 0), + LocalTime.of(10, 0), + null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Время начала должно быть раньше времени окончания"); + + assertThatThrownBy(() -> service.create(request( + DEFAULT_SCOPE_ID, + 1, + LocalTime.of(10, 0, 0), + LocalTime.of(10, 0, 30), + null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Длительность временного слота должна быть не меньше одной минуты"); + + verify(timeSlotScopeRepository, never()).findByIdForUpdate(any()); + } + + private TimeSlotDto request(Long scopeId, + Integer orderNumber, + LocalTime startTime, + LocalTime endTime, + Integer durationMinutes) { + return new TimeSlotDto( + null, + orderNumber, + scopeId, + null, + null, + null, + startTime, + endTime, + durationMinutes + ); + } + + private TimeSlotScope scope(Long id, String applyMode) { + TimeSlotScope scope = new TimeSlotScope(); + scope.setId(id); + scope.setApplyMode(applyMode); + return scope; + } + + private TimeSlot slot(Long id, TimeSlotScope scope) { + TimeSlot slot = new TimeSlot(); + slot.setId(id); + slot.setTimeSlotScope(scope); + slot.setOrderNumber(1); + slot.setStartTime(LocalTime.of(8, 0)); + slot.setEndTime(LocalTime.of(9, 30)); + slot.setDurationMinutes(90); + return slot; + } +} diff --git a/compose.yaml b/compose.yaml index 05cf62d..8f263ce 100755 --- a/compose.yaml +++ b/compose.yaml @@ -1,36 +1,67 @@ services: backend: - container_name: backend - restart: always + restart: unless-stopped build: context: ./backend dockerfile: Dockerfile environment: - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${POSTGRES_DB:-app_db} + POSTGRES_USER: ${POSTGRES_USER:-myuser} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD должен быть задан в .env} + JWT_SECRET: ${JWT_SECRET:?JWT_SECRET должен быть задан в .env} + JWT_ACCESS_TOKEN_TTL: ${JWT_ACCESS_TOKEN_TTL:-15m} + JWT_REFRESH_TOKEN_TTL: ${JWT_REFRESH_TOKEN_TTL:-7d} + JWT_REFRESH_COOKIE_NAME: ${JWT_REFRESH_COOKIE_NAME:-magistr_refresh} + JWT_REFRESH_COOKIE_SECURE: ${JWT_REFRESH_COOKIE_SECURE:-false} + JWT_REFRESH_CLEANUP_ENABLED: ${JWT_REFRESH_CLEANUP_ENABLED:-true} + JWT_REFRESH_CLEANUP_RETENTION: ${JWT_REFRESH_CLEANUP_RETENTION:-30d} + JWT_REFRESH_CLEANUP_BATCH_SIZE: ${JWT_REFRESH_CLEANUP_BATCH_SIZE:-500} + JWT_REFRESH_CLEANUP_MAX_BATCHES: ${JWT_REFRESH_CLEANUP_MAX_BATCHES:-20} + JWT_REFRESH_CLEANUP_INTERVAL_MS: ${JWT_REFRESH_CLEANUP_INTERVAL_MS:-3600000} + JWT_REFRESH_CLEANUP_INITIAL_DELAY_MS: ${JWT_REFRESH_CLEANUP_INITIAL_DELAY_MS:-60000} + LOGIN_RATE_MAX_FAILURES: ${LOGIN_RATE_MAX_FAILURES:-5} + LOGIN_RATE_ATTEMPT_WINDOW: ${LOGIN_RATE_ATTEMPT_WINDOW:-15m} + LOGIN_RATE_BASE_BLOCK_DURATION: ${LOGIN_RATE_BASE_BLOCK_DURATION:-1m} + LOGIN_RATE_MAX_BLOCK_DURATION: ${LOGIN_RATE_MAX_BLOCK_DURATION:-15m} + LOGIN_AUDIT_CLEANUP_ENABLED: ${LOGIN_AUDIT_CLEANUP_ENABLED:-true} + LOGIN_AUDIT_RETENTION: ${LOGIN_AUDIT_RETENTION:-90d} + LOGIN_AUDIT_CLEANUP_BATCH_SIZE: ${LOGIN_AUDIT_CLEANUP_BATCH_SIZE:-500} + LOGIN_AUDIT_CLEANUP_MAX_BATCHES: ${LOGIN_AUDIT_CLEANUP_MAX_BATCHES:-20} + LOGIN_AUDIT_CLEANUP_INTERVAL_MS: ${LOGIN_AUDIT_CLEANUP_INTERVAL_MS:-86400000} + LOGIN_AUDIT_CLEANUP_INITIAL_DELAY_MS: ${LOGIN_AUDIT_CLEANUP_INITIAL_DELAY_MS:-120000} + TRUSTED_PROXY_CIDRS: ${TRUSTED_PROXY_CIDRS:-172.16.0.0/12} + BUSINESS_TIME_ZONE: ${BUSINESS_TIME_ZONE:-Europe/Moscow} + TZ: ${TZ:-Europe/Moscow} + JAVA_TOOL_OPTIONS: -Duser.timezone=${TZ:-Europe/Moscow} + OTEL_SDK_DISABLED: ${OTEL_SDK_DISABLED:-true} depends_on: db: condition: service_healthy + healthcheck: + test: [ "CMD-SHELL", "wget --quiet --spider http://127.0.0.1:8080/actuator/health/liveness" ] + interval: 5s + timeout: 3s + retries: 12 + start_period: 20s networks: - - proxy + - magistr frontend: - container_name: frontend - restart: always + restart: unless-stopped build: context: ./frontend dockerfile: Dockerfile + ports: + - "${HTTP_PORT:-80}:80" networks: - - proxy + - magistr depends_on: - - backend + backend: + condition: service_healthy db: - image: postgres:alpine3.23 - container_name: db - restart: always - ports: - - "5432:5432" + image: postgres:16.3-alpine3.20 + restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-myuser} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD должен быть задан в .env} @@ -41,8 +72,13 @@ services: timeout: 5s retries: 5 networks: - - proxy + - magistr + volumes: + - postgres_data:/var/lib/postgresql/data networks: - proxy: - external: true + magistr: + driver: bridge + +volumes: + postgres_data: diff --git a/docs/API.md b/docs/API.md index a9d5b2a..d19efdd 100644 --- a/docs/API.md +++ b/docs/API.md @@ -3,7 +3,8 @@ Все прикладные эндпоинты имеют префикс `/api/`. Служебные проверки Kubernetes доступны под `/actuator/health/`. Ответы возвращаются в формате JSON. -Необработанные ошибки проходят через единый `GlobalExceptionHandler`. Для `400`, `404` и `500` используется общий JSON-формат: +Необработанные ошибки проходят через единый `GlobalExceptionHandler`. Для `400`, `404`, +`409` и `500` используется общий JSON-формат: ```json { @@ -17,6 +18,11 @@ Контроллеры, у которых исторически есть собственная обработка ошибок, могут возвращать более короткий объект с полем `message`. +Нарушения ограничений PostgreSQL также обрабатываются централизованно. Известные CHECK +возвращают `400`, а UNIQUE, FK и GiST exclusion conflicts — `409` с безопасным русским +сообщением. Тексты JDBC, SQL, имена ограничений и внутренние причины исключений в JSON не +передаются; неизвестное нарушение получает обобщённое сообщение. + --- ## Служебные проверки состояния @@ -108,7 +114,36 @@ } ``` +Для несуществующего пользователя, неверного пароля и архивной учётной записи возвращается +одинаковый ответ `401`, поэтому endpoint не раскрывает наличие или состояние пользователя. + +**Временная блокировка (429):** + +```http +HTTP/1.1 429 Too Many Requests +Retry-After: 60 +``` + +```json +{ + "success": false, + "message": "Слишком много попыток входа. Повторите позже", + "token": null, + "role": null, + "redirect": null, + "departmentId": null, + "userId": null +} +``` + +Backend ведёт общий для всех pod счётчик по tenant, нормализованному `username` и IP. +После пяти отказов по умолчанию комбинация блокируется на 60 секунд; следующие отказы +после окончания блокировки увеличивают задержку до максимума 15 минут. `Retry-After` +содержит оставшееся целое число секунд. Успешный вход сбрасывает счётчик. + > После получения access JWT клиент должен передавать его в заголовке: `Authorization: Bearer `. +> Штатный web-клиент хранит access JWT только в памяти страницы; после reload он получает +> новый access JWT через `HttpOnly` refresh-cookie и `POST /api/auth/refresh`. Поддерживаемые роли: `ADMIN`, `EDUCATION_OFFICE`, `DEPARTMENT`, `SCHEDULE_VIEWER`, `TEACHER`, `STUDENT`. @@ -198,7 +233,9 @@ Refresh-токен ротируется при каждом успешном о Список преподавателей привязанных к конкретной кафедре (роль `TEACHER`, код кафедры `departmentId`). Ответ использует ту же структуру `UserResponse`, что и `GET /api/users`. -Выборка учитывает активные записи `teacher_department_assignments` на текущую дату и legacy-привязку `users.department_id`. Роль `DEPARTMENT` может запрашивать только свою кафедру. +Выборка использует записи `teacher_department_assignments`, действующие на текущую дату. +Дополнительная связь (`is_primary=false`) также включает преподавателя в список кафедры. +Роль `DEPARTMENT` может запрашивать только свою кафедру. ### `POST /api/users` @@ -247,9 +284,16 @@ Refresh-токен ротируется при каждом успешном о } ``` +Если `validFrom` находится в будущем, текущая основная кафедра остаётся действующей до дня, +предшествующего переводу. Поле совместимости `users.department_id` переключается только +когда новая основная запись уже действует на текущую дату. Пересекающиеся периоды двух +основных кафедр одного преподавателя отклоняются с `409 Conflict`. + ### `GET /api/users/teachers/by-department/{departmentId}?date=2026-06-01` -Список преподавателей кафедры на конкретную дату по таблице истории и legacy-привязке `users.department_id`. Роль `DEPARTMENT` может запрашивать только свою кафедру. +Список преподавателей кафедры на конкретную дату по таблице истории назначений. Архивный +преподаватель входит в исторический ответ, если на указанную дату действовали и пользователь, +и его назначение. Роль `DEPARTMENT` может запрашивать только свою кафедру. --- @@ -294,7 +338,7 @@ Refresh-токен ротируется при каждом успешном о - `DEPARTMENT` не может создавать аудитории, кафедры, специальности, группы, пользователей или правила расписания через API; - `DEPARTMENT` создаёт и комментирует дисциплины через `/api/department/*`, где кафедра берётся из текущего пользователя; -- `/api/teacher-subjects` для `DEPARTMENT` разрешает связывать только преподавателей и дисциплины своей кафедры; +- `/api/teacher-subjects` для `DEPARTMENT` разрешает связывать только дисциплины своей кафедры и преподавателей с основной или дополнительной связью с ней на текущую дату; - `SCHEDULE_VIEWER` имеет read-only доступ к просмотру расписаний, справочникам-фильтрам и загруженности. --- @@ -386,11 +430,18 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 "orderNumber": 1, "scopeId": 1, "startTime": "08:00:00", - "endTime": "09:30:00", - "durationMinutes": 90 + "endTime": "09:30:00" } ``` +`durationMinutes` в запросе не требуется и не считается доверенным значением: backend +всегда вычисляет длительность как разницу `endTime - startTime` и возвращает результат в +ответе. Начало должно быть раньше окончания, а длительность — не меньше одной минуты. +Внутри одной сетки запрещены одинаковые номера пар и пересекающиеся полуоткрытые интервалы; +соседние слоты, у которых окончание первого совпадает с началом второго, разрешены. +Конфликт номера или интервала возвращает `409 Conflict`. Слот, на который уже ссылается +правило расписания, нельзя перенести из базовой сетки `DEFAULT`. + **Создание ручной сетки:** ```json { @@ -424,6 +475,31 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 | `PUT` | `/api/admin/calendar/activity-types/{id}` | Обновить код активности | | `DELETE` | `/api/admin/calendar/activity-types/{id}` | Удалить код активности | +**Тело учебного года:** +```json +{ + "title": "2026-2027", + "startDate": "2026-09-01", + "endDate": "2027-06-30" +} +``` + +**Тело семестра:** +```json +{ + "semesterType": "autumn", + "startDate": "2026-09-01", + "endDate": "2027-01-31" +} +``` + +Границы учебных периодов включительны. Учебные годы не могут пересекаться, семестры одного +года также не могут пересекаться и должны полностью находиться внутри его границ. Следующий +период разрешено начать на следующий календарный день после окончания предыдущего. +Повторное название года, повторный тип семестра или пересечение возвращаются как +`409 Conflict`; неверный порядок дат и выход семестра за границы года — как `400 Bad Request`. +При сужении учебного года все существующие семестры должны оставаться внутри новых границ. + **Тело создания/обновления кода активности:** ```json { @@ -465,6 +541,13 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 `studyFormId` берётся из общего справочника форм обучения `GET /api/education-forms`; отдельного справочника форм для календарных графиков нет. `courseCount` должен быть в диапазоне `1..8`. +При `PUT /api/admin/academic-calendars/{id}` backend блокирует график и повторно проверяет +все сохранённые назначения, дневную сетку и дисциплины. Изменение года, специальности, +профиля, формы или количества курсов, которое сделает данные несовместимыми, возвращает +`409 Conflict` с русским сообщением и не изменяет график. В частности, нельзя уменьшить +`courseCount`, пока существуют строки старших курсов или дисциплины семестров выше +`courseCount * 2`. + **Ячейка сетки графика:** ```json { @@ -632,6 +715,10 @@ CRUD доступен по: разрешён только до 50 активных групп; при большем количестве групп API вернёт `400` с просьбой уточнить группу или кафедру. +Ограничение относится только к интерактивному `/api/schedule/search`. Endpoints +`/api/workload/*` используют отдельный агрегирующий путь и обрабатывают все активные группы +разрешённого кафедрального scope, в том числе при количестве больше 50. + Пример: ```http @@ -691,6 +778,21 @@ GET /api/schedule/search?classroomId=1&startDate=2026-05-20&endDate=2026-05-27 Общие параметры для отчётов: `startDate`, `endDate`, опционально `departmentId`. +Роли `ADMIN`, `EDUCATION_OFFICE` и `SCHEDULE_VIEWER` могут не передавать `departmentId` +для глобального отчёта или выбрать конкретную кафедру. Для роли `DEPARTMENT` backend всегда +использует кафедру из access JWT: отсутствие параметра означает свою кафедру, а попытка +передать чужой `departmentId` возвращает `403 Forbidden`. То же ограничение применяется к +`GET /api/workload/free-classrooms`, хотя этот endpoint не принимает `departmentId`. + +Кафедра каждой записи определяется по `teacher_department_assignments` на дату занятия: +сначала используется основное, затем дополнительное назначение. Поэтому период, включающий +дату перевода, разделяет нагрузку одного преподавателя между прежней и новой кафедрами, +а историческая нагрузка не зависит от текущего значения `users.department_id`. + +Workload и поиск свободных аудиторий строятся через специализированный агрегирующий метод +`ScheduleQueryService`: он сохраняет проверку диапазона, применение overrides, фильтр пары и +дедупликацию, но не наследует UI-лимит 50 групп из `/api/schedule/search`. + Пример: ```http @@ -727,7 +829,15 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 | `POST` | `/api/department/teacher-requests` | Создать заявку на нового преподавателя | | `GET` | `/api/department/schedule` | Расписание кафедры | -`GET /api/department/teachers` возвращает актуальных преподавателей кафедры по `teacher_department_assignments` и дополнительно учитывает старую привязку `users.department_id`, чтобы не терять преподавателей без записи в истории назначений. +`POST /api/department/subjects/import` нормализует пробелы по краям и сравнивает названия +без учёта регистра. Повторный импорт дисциплины своей кафедры обновляет код и восстанавливает +архивную запись, не создавая новый ID. Если такое название уже принадлежит другой кафедре, +API возвращает `409 Conflict`; владелец записи не изменяется. Повторы одного названия внутри +payload обрабатываются один раз, используется последнее значение. + +`GET /api/department/teachers` возвращает актуальных преподавателей кафедры только по +`teacher_department_assignments`. Основные и дополнительные назначения учитываются на +текущую дату; архивные и ещё не начавшиеся назначения исключаются. `POST /api/department/teachers/{teacherId}/assignments` создаёт дополнительную открытую связь преподавателя с кафедрой (`is_primary=false`). Для роли `DEPARTMENT` кафедра берётся из текущего пользователя, администратор может передать `departmentId`. @@ -793,6 +903,11 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 При создании специальности автоматически создаётся профиль `Без профиля`. +`EDUCATION_OFFICE` имеет read-only доступ к `GET /api/specialties`, +`GET /api/specialties/profiles` и `GET /api/specialties/{id}/profiles`, необходимый для +инициализации календарных учебных графиков. Создание, изменение, архивирование специальностей +и CRUD профилей остаются доступны только `ADMIN`. + **Тело создания/обновления профиля:** ```json { @@ -880,6 +995,11 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 } ``` +Если у группы уже есть календарные назначения, изменение года начала обучения, +специальности, профиля или формы обучения повторно проверяется для каждого учебного года. +Несовместимое изменение возвращает `409 Conflict`; группа и её назначения остаются без +изменений. + ### `DELETE /api/groups/{id}` Архивирование группы. Запись остаётся в истории, поэтому расписание за прошлые даты не теряет связь с группой. @@ -963,7 +1083,10 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 } ``` -Назначаемый график должен относиться к тому же учебному году, специальности, профилю и форме обучения, что и группа. +Назначаемый график должен относиться к тому же учебному году, специальности, профилю и +форме обучения, что и группа. Вычисленный курс группы должен находиться в диапазоне +`1..courseCount`. Сохранение выполняется транзакционно с блокировкой группы, графика, +учебного года и существующего назначения; конкурентный конфликт возвращает `409 Conflict`. --- @@ -1074,6 +1197,11 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 ## Формы обучения +`GET /api/education-forms` доступен `ADMIN`, `EDUCATION_OFFICE`, `DEPARTMENT` и +`SCHEDULE_VIEWER`. Создание `POST /api/education-forms` и удаление +`DELETE /api/education-forms/{id}` разрешены `ADMIN` и `EDUCATION_OFFICE`; удаление по-прежнему +отклоняется, если форма используется группой или календарным графиком. + ### `GET /api/education-forms` Список форм обучения. @@ -1125,6 +1253,10 @@ GET /api/workload/teachers?departmentId=1&startDate=2026-05-20&endDate=2026-06-0 } ``` +Для роли `DEPARTMENT` дисциплина должна принадлежать кафедре текущего пользователя, а у +преподавателя на текущую дату должна действовать основная или дополнительная связь с этой +кафедрой. + ### `DELETE /api/teacher-subjects` ```json diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 400e350..8443647 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -5,7 +5,7 @@ ```mermaid graph TD Client["🌐 Браузер"] -->|HTTPS| Caddy["Caddy Proxy"] - Caddy -->|:80| Frontend["Frontend
(Apache httpd:alpine)"] + Caddy -->|:80| Frontend["Frontend
(Apache httpd + строгий CSP)"] Caddy -->|/api/*| Backend["Backend
(Spring Boot 3.2.5)"] Backend --> TenantRouter{"TenantRoutingDataSource"} @@ -19,12 +19,13 @@ graph TD ## Компоненты -### Frontend (Apache httpd:alpine) +### Frontend (Apache httpd) - **Тип:** Статические файлы (HTML/CSS/JS) -- **Контейнер:** `httpd:alpine` — лёгкий Apache HTTP Server +- **Контейнер:** multi-stage Node/esbuild → Apache HTTP Server на Alpine - **Порт:** 80 - **Содержание:** Три изолированных интерфейса — `admin/`, `teacher/`, `student/` - **JS-модули:** Vanilla JavaScript с ES6 Modules (`import`/`export`) +- **Browser security:** same-origin runtime-ресурсы и CSP без `unsafe-inline`/`unsafe-eval` ### Backend (Spring Boot 3.2.5) - **Тип:** REST API сервер @@ -164,6 +165,11 @@ sequenceDiagram из маршрутизации и передаёт pool на drain. Для отказа локального удаления действуют те же ограничения компенсации по `resourceVersion`. +Пользовательские ошибки tenant-контура и production-сообщения журнала формулируются на +русском языке. JDBC/Flyway-текст не возвращается в DOM или HTTP-ответ; на уровнях +`WARN`/`ERROR` фиксируется безопасный тип исключения, а стек доступен только в русскоязычной +записи уровня `DEBUG`. + Сериализация lifecycle и атомарный снимок защищают запросы внутри одного backend-процесса. Между pod потерянное обновление предотвращает optimistic locking Kubernetes: каждый конфликт заставляет заново прочитать Secret и повторно применить только свою доменную мутацию. Локальный @@ -241,11 +247,62 @@ Tenant interceptor исключает `/actuator/**`, а authorization intercept ## Транзакционные изменения расписания +`GlobalExceptionHandler` является последней границей между ошибками persistence-слоя и +HTTP-клиентом. `DataIntegrityViolationException` сопоставляется с известными ограничениями +V1 и безопасными статусами `400`/`409`; неизвестные SQLState и constraints получают +обобщённый `409`. Constraint и SQLState доступны только в структурированном журнале, а +JDBC/SQL-текст и stack trace не включаются в пользовательский ответ. Контроллеры не должны +формировать HTTP-body из `Exception.getMessage()`. + `ScheduleRuleAdminController` является тонким HTTP-адаптером. Чтение, создание, изменение и архивация правил выполняются через `ScheduleRuleService`; публичные write-методы сервиса образуют транзакционные границы, поэтому ошибки валидации и конфликты выходят за Spring proxy и приводят к rollback. +`AcademicCalendarAdminController` делегирует CRUD учебных годов и семестров +`AcademicPeriodService`. Сервис нормализует названия, проверяет включительные диапазоны, +дубли и пересечения до мутации. Semester create/update блокируют родительский учебный год, +update семестра затем перечитывает собственную строку с `PESSIMISTIC_WRITE`. Кэш расписания +очищается только после commit. Межподовые гонки годов и семестров окончательно закрывают +GiST exclusion constraints и триггеры PostgreSQL, связывающие границы семестра с годом. + +`AcademicCalendarController` и `GroupController` делегируют изменение ключевых измерений и +сохранение назначений `AcademicStructureService`. Сервис блокирует изменяемую группу или +график, повторно проверяет назначения, курсы, сетку и дисциплины до мутации, а кэш очищает +только после commit. Триггеры V1 дублируют совместимость на уровне PostgreSQL и блокируют +ссылочные строки, поэтому гонка прямых записей или нескольких backend-pod не создаёт +устаревшее назначение. + +`TeacherDepartmentService` является единым источником датированных решений о кафедре +преподавателя. Списки пользователей, кабинет кафедры, права на привязку дисциплин и отчёты +нагрузки читают `teacher_department_assignments` на целевую дату, не используют +`users.department_id` как fallback и учитывают дополнительные назначения. При построении +нагрузки назначения загружаются одним batch-запросом на весь диапазон, а кафедра разрешается +для даты каждого занятия, поэтому перевод внутри периода корректно разделяет агрегаты. + +Перевод блокирует пользователя и историю его основных назначений. Будущий перевод закрывает +текущий период днём перед датой вступления в силу, но не меняет legacy-зеркало текущей +кафедры заранее. GiST exclusion constraint в V1 окончательно запрещает пересекающиеся +основные периоды при гонке нескольких backend-pod. + +`WorkloadController` до обращения к `ScheduleQueryService` вычисляет разрешённый scope из +`AuthContext`. Для `DEPARTMENT` обязательна кафедра из подписанного JWT; отсутствие +параметра не расширяет выборку, а несовпадающий `departmentId` отклоняется с `403`. Это же +правило применяется к свободным аудиториям. Глобальный или явно выбранный scope остаётся у +`ADMIN`, `EDUCATION_OFFICE` и `SCHEDULE_VIEWER`. + +После проверки scope контроллер вызывает специализированный +`ScheduleQueryService.searchForAggregation()`. Этот путь загружает все активные группы +scope, генерирует их расписание и применяет единый снимок overrides без интерактивного +лимита 50 групп. Публичный `search()` по-прежнему применяет лимит к широкому UI-запросу; +общие range validation, фильтрация и дедупликация находятся в одном внутреннем алгоритме. + +Импорт дисциплин из `DepartmentWorkspaceController` делегирован транзакционному +`SubjectImportService`. Сервис сначала нормализует и дедуплицирует весь payload, затем до +мутации проверяет глобального владельца названия. Собственная запись обновляется на месте и +при необходимости восстанавливается; чужая приводит к `409`. Case-insensitive уникальный +индекс V1 окончательно закрывает конкурентное создание одинакового названия. + Создание правила до остальных запросов к БД захватывает `PESSIMISTIC_WRITE` на строке целевого семестра. Update сначала блокирует строку правила, затем старый и новый семестры в порядке ID; архивация блокирует правило и его семестр. После блокировок сервис заново @@ -271,6 +328,14 @@ rollback. Инвалидация кэша зарегистрирована че строка перечитывается с `PESSIMISTIC_WRITE`, поэтому параллельное изменение не приводит к lost update или проверке устаревшего снимка. +Генерация диапазона использует request-scoped снимки вместо запросов из вложенных циклов. +`ScheduleQueryService` передаёт набор групп одним вызовом `buildScheduleForGroups()`. +`AcademicDateService` одним запросом загружает пересекающиеся семестры, затем batch-набор +назначений календарей и дневную сетку от начала затронутого семестра до конца диапазона. +`ScheduleGeneratorService` отдельно batch-загружает правила и сетки звонков и строит lookup +по датам, группам, учебным годам, календарям и номерам пар. Снимки живут только во время +одного построения: изменения следующего запроса видны сразу, а singleton-кэш отсутствует. + Teacher-only чтение строит базовое расписание напрямую через `ScheduleGeneratorService.buildScheduleForTeacher()`. `ScheduleQueryService` дополнительно находит overrides с `newTeacher`, группирует их по дате, один раз строит базовый день каждой @@ -287,17 +352,51 @@ Teacher-only чтение строит базовое расписание на 1. Клиент отправляет `POST /api/auth/login` с `username` и `password`. 2. Backend проверяет пароль через `BCryptPasswordEncoder`. 3. При успехе возвращается access JWT для заголовка `Authorization: Bearer ` и устанавливается `HttpOnly` refresh-cookie. -4. Access JWT хранится в `localStorage`; refresh-токен хранится только в cookie, а в БД сохраняется SHA-256 хэш. +4. Access JWT и профиль клиента хранятся только в памяти страницы; refresh-токен хранится + только в cookie, а в БД сохраняется SHA-256 хэш. 5. При истечении access JWT клиент вызывает `POST /api/auth/refresh`; refresh-токен ротируется, старый хэш отзывается. 6. `POST /api/auth/logout` отзывает текущий refresh-токен и очищает cookie. +`LoginRateLimitService` выполняет проверку пароля и изменение счётчика в одной транзакции. +Строка `auth_login_rate_limits` с ключом tenant + нормализованный username + IP блокируется +через `PESSIMISTIC_WRITE`, поэтому параллельные попытки на разных backend-pod сериализуются +общей tenant-БД. После порога применяется прогрессивная временная блокировка, API отвечает +`429` и передаёт `Retry-After`. Неизвестная, архивная и ошибочная учётная запись проходят +одинаковый bcrypt-путь и получают одинаковый `401`, что не позволяет определить наличие +пользователя по ответу. Отказы сохраняются в `auth_login_attempt_audit` и пишутся в журнал +только с коротким fingerprint имени; пароль не сохраняется и не логируется. + +`ClientIpResolver` принимает `X-Forwarded-For` только если непосредственный источник входит +в `TRUSTED_PROXY_CIDRS`. Цепочка разбирается справа налево до первого недоверенного адреса; +заголовок от прямого клиента или некорректная цепочка игнорируются. Для Compose доверена +только внутренняя Docker-сеть, а production ConfigMap задаёт pod-сеть Traefik. При изменении +Docker/K3s CIDR это значение необходимо синхронно заменить фактической сетью proxy. + +`LoginAttemptAuditCleanupJob` раз в сутки удаляет старше 90 дней audit-записи и неактивные +счётчики ограниченными пачками отдельно в каждой tenant-БД. `FOR UPDATE SKIP LOCKED` +позволяет нескольким pod безопасно выполнять очистку одновременно; активная блокировка +никогда не удаляется. + Ротация refresh-токена имеет single-use семантику. `RefreshTokenService.rotate()` выполняется в транзакции, а `AuthRefreshTokenRepository` захватывает исходную строку через `PESSIMISTIC_WRITE`. Поэтому два одновременных запроса с одним cookie сериализуются: только первый создаёт следующий refresh-токен, второй видит уже отозванную строку и завершается без выпуска новой сессии. -Access JWT содержит claim'ы `tenant`, `userId`, `username`, `role`, `departmentId`, `iat`, `exp`, `jti`. `AuthorizationInterceptor` проверяет подпись, срок действия и совпадение `tenant` с `TenantContext`, затем применяет `@RequireRoles`. Это означает, что UI-роль в `localStorage` остаётся только удобством: backend возвращает `401`, если токен отсутствует/некорректен, и `403`, если роли недостаточно. +`RefreshTokenCleanupJob` раз в час берёт атомарный снимок активных тенантов из +`TenantRoutingDataSource`, устанавливает `TenantContext` до открытия транзакции и очищает +каждую tenant-БД ограниченными пачками. По умолчанию истёкшие и отозванные строки хранятся +30 дней для аудита; активные и более свежие строки не удаляются. PostgreSQL +`FOR UPDATE SKIP LOCKED` позволяет нескольким backend-pod разбирать непересекающиеся пачки, +а повторный проход идемпотентен. Внутри одного pod наложение запусков запрещено локальным +guard, а число пачек одного прохода ограничено. + +Access JWT содержит claim'ы `tenant`, `userId`, `username`, `role`, `departmentId`, `iat`, +`exp`, `jti`. `AuthorizationInterceptor` проверяет подпись, срок действия и совпадение +`tenant` с `TenantContext`, затем применяет `@RequireRoles`. После перехода или reload +frontend восстанавливает access JWT и профиль в памяти через refresh-cookie; Web Storage +для данных авторизации не используется. Backend возвращает `401`, если токен отсутствует +или некорректен, и `403`, если роли недостаточно. `AuthContext` существует только в границах одного servlet-запроса. Интерцептор очищает `ThreadLocal` до любых ранних выходов, устанавливает пользователя только после успешной @@ -305,6 +404,12 @@ Access JWT содержит claim'ы `tenant`, `userId`, `username`, `role`, `de или публичный endpoint не может получить пользователя от предыдущего запроса того же потока контейнера. +Frontend-матрица вкладок централизована в `admin/js/role-capabilities.js` и используется +основным admin SPA и settings SPA. Для `EDUCATION_OFFICE` backend разрешает read-only GET +специальностей/профилей и GET/POST/DELETE форм обучения; write-операции специальностей +наследуют class-level `ADMIN`. MockMvc role-тест проходит через реальный +`AuthorizationInterceptor`, поэтому видимые штатные экраны не зависят только от скрытия UI. + `TenantInterceptor` по-прежнему отвечает за выбор БД тенанта по домену. Проверка авторизации выполняется отдельным интерцептором после tenant-resolution, поэтому токен, выданный на одном домене, не принимается на другом tenant-домене. JWT-секрет не имеет встроенного значения и обязателен во всех окружениях. При профиле diff --git a/docs/BUSINESS_LOGIC.md b/docs/BUSINESS_LOGIC.md index 9130f65..2dbe1ca 100644 --- a/docs/BUSINESS_LOGIC.md +++ b/docs/BUSINESS_LOGIC.md @@ -7,7 +7,7 @@ | Роль | Enum | Возможности | |------|------|------------| | **Администратор** | `ADMIN` | Полный доступ: пользователи, справочники, тенанты, роли, архивирование и восстановление. | -| **Учебный отдел** | `EDUCATION_OFFICE` | Редактирование расписания, точечные переносы/замены/отмены, временные слоты, аудитории, загруженность. | +| **Учебный отдел** | `EDUCATION_OFFICE` | Редактирование расписания, точечные переносы/замены/отмены, учебные периоды и календарные графики, временные слоты, формы обучения, аудитории и загруженность; read-only справочники специальностей и профилей. | | **Кафедра** | `DEPARTMENT` | Дисциплины своей кафедры, загрузка дисциплин, привязки преподавателей, заявки на создание преподавателей, комментарии, расписание и нагрузка кафедры. | | **Просмотр расписаний** | `SCHEDULE_VIEWER` | Read-only просмотр расписаний по группам, преподавателям, аудиториям и кафедрам в режиме одной активной совмещённой таблицы чётной/нечётной недели. | | **Преподаватель** | `TEACHER` | Просмотр своего расписания. В перспективе — подача заявок на перенос. | @@ -27,9 +27,17 @@ Bearer-токен проверяется на backend. Frontend-скрытие - загрузка и комментарии дисциплин идут через `/api/department/*`; - общий `/api/subjects` доступен кафедре только на чтение; -- привязки `/api/teacher-subjects` разрешены только если преподаватель и дисциплина относятся к кафедре текущего пользователя; +- привязки `/api/teacher-subjects` разрешены только если дисциплина принадлежит кафедре текущего пользователя, а у преподавателя на текущую дату действует основная или дополнительная связь с ней; - добавление существующего преподавателя через `/api/department/teachers/{teacherId}/assignments` создаёт связь только со своей кафедрой; - заявки `/api/department/teacher-requests` создаются и просматриваются кафедрой только в рамках своей кафедры, а создание пользователя выполняет администратор после проверки. +- все `/api/workload/*`, включая свободные аудитории, принудительно используют кафедру из `AuthContext`; запрос с чужим `departmentId` отклоняется с `403`. + +Глобальный workload и произвольный фильтр кафедры разрешены ролям `ADMIN`, +`EDUCATION_OFFICE` и `SCHEDULE_VIEWER`. + +Ролевая матрица учебного отдела согласована с видимыми экранами: календарный график может +читать специальности и профили, а раздел настроек форм обучения выполняет GET/POST/DELETE. +Изменение самих специальностей и профилей остаётся административной операцией. --- @@ -64,6 +72,8 @@ Bearer-токен проверяется на backend. Frontend-скрытие - **Календарь:** на каждый учебный год группе назначается конкретный календарный учебный график - **Дисциплины графика:** при назначении графика группе отображаются дисциплины, вручную привязанные к номерам семестров этого графика - **Завершение обучения:** если текущий курс больше `course_count` назначенного календарного графика, группа считается завершившей обучение и не попадает в обычные списки выбора. Историческое расписание по датам периода обучения остаётся доступным. +- **Целостность назначения:** год, специальность, профиль и форма графика должны совпадать с группой, а вычисленный курс должен входить в `1..course_count`. После назначения несовместимое изменение группы или графика отклоняется целиком с `409 Conflict`; назначение не удаляется и не становится устаревшим. +- **Размерность графика:** уменьшение `course_count` запрещено, пока существуют строки сетки старших курсов или дисциплины семестров выше `course_count * 2`. Даты сетки всегда находятся внутри учебного года графика. ### Аудитории (Classrooms) @@ -81,9 +91,11 @@ Bearer-токен проверяется на backend. Frontend-скрытие ### Дисциплины (Subjects) -- **Поля:** Название (уникальное), код, кафедра, описание +- **Поля:** Название (глобально уникальное без учёта регистра), код, кафедра, описание - Привязка преподавателей через `teacher_subjects` (Many-to-Many) - Кафедра может добавлять комментарии к дисциплине и загружать список дисциплин через кабинет кафедры +- Повторный импорт собственной дисциплины обновляет ту же запись и восстанавливает её из архива +- Совпадение названия с дисциплиной другой кафедры даёт `409 Conflict` и никогда не меняет владельца ### Жизненный цикл справочников @@ -98,18 +110,24 @@ Bearer-токен проверяется на backend. Frontend-скрытие ### Кафедральные связи преподавателей -Основная кафедра преподавателя хранится в `users.department_id` для совместимости, а актуальные и исторические связи фиксируются в `teacher_department_assignments`. Преподаватель может быть связан с несколькими кафедрами: одна связь остаётся основной, дополнительные связи создаются как неосновные. +Актуальные и исторические связи преподавателя с кафедрами определяются только по +`teacher_department_assignments`. Поле `users.department_id` сохраняется как legacy-зеркало +основной кафедры на текущую дату и не используется для бизнес-решений или исторических +отчётов. Преподаватель может быть связан с несколькими кафедрами: одна связь остаётся +основной, дополнительные связи создаются как неосновные. Правила: -- у преподавателя должна быть одна открытая основная кафедра; +- периоды двух основных кафедр одного преподавателя не могут пересекаться; - преподаватель может иметь несколько открытых неосновных кафедр; - одна открытая пара `teacher_id` + `department_id` запрещает дубли одной и той же связи; -- при переводе старая запись закрывается датой `valid_to`, новая открывается с `valid_from`; +- при переводе старая запись закрывается днём перед `valid_from`, новая начинается с `valid_from`; +- будущий перевод не меняет текущую принадлежность и legacy-зеркало до даты вступления в силу; - кафедра может добавить существующего активного преподавателя только на свою кафедру, без смены его основной кафедры; - кафедра может отправить заявку на создание нового преподавателя, но заявка не хранит пароль; - администратор при одобрении заявки может скорректировать кафедру, логин, ФИО и должность, задаёт пароль и создаёт пользователя с ролью `TEACHER`; -- расписание и отчёты за прошлые периоды не теряют связь с прежней кафедрой. +- исторические списки включают архивного преподавателя, если он и назначение действовали на целевую дату; +- нагрузка определяется для каждой даты занятия отдельно и разделяется между кафедрами при переводе внутри отчётного периода. --- @@ -135,6 +153,14 @@ Bearer-токен проверяется на backend. Frontend-скрытие | `schedule_rule_slot_subgroups` | Подгруппы лабораторного слота | | `schedule_overrides` | Точечные переносы, отмены и замены конкретных сгенерированных пар | +Учебные годы и семестры изменяются через транзакционный `AcademicPeriodService`. Границы +считаются включительными: разные учебные годы не могут иметь общую дату, а семестры не +могут пересекаться внутри одного года. Семестр целиком лежит в границах своего учебного +года; сужение года, исключающее существующий семестр, отклоняется. Создание и изменение +семестра блокируют строку родительского года, а PostgreSQL exclusion constraints разрешают +глобальные конкурентные гонки между разными backend-pod. Благодаря отсутствию пересечений +поиск семестра для даты возвращает не более одного результата и не зависит от порядка строк. + Полная замена `academic_calendar_days` выполняется через транзакционный `AcademicCalendarGridService`. Сервис сначала проверяет и строит весь новый набор, включая уникальность `(course, date)`, соответствие даты учебному году, номеру недели и ISO-дню, @@ -155,6 +181,14 @@ Bearer-токен проверяется на backend. Frontend-скрытие 10. Останавливает вывод слотов конкретного типа, когда достигнут его лимит часов. 11. Применяет точечные изменения из `schedule_overrides` в расширенном поиске и отчётах. +Перед обходом дат генератор создаёт снимок на один запрос. Семестры диапазона, назначения +календарей всех выбранных групп, дневная сетка календарей, правила и эффективные сетки +звонков загружаются batch-запросами и индексируются по дате и идентификаторам. Поиск +семестра, проверка разрешённого дня и подстановка времени внутри циклов выполняются только +по lookup-картам. `ScheduleQueryService` передаёт все группы в один +`buildScheduleForGroups()`, поэтому число запросов не растёт как +`дни × группы × правила`; singleton-кэш и общее между запросами состояние не используются. + Расход часов считается в пределах одного построения расписания: при первом использовании семестра генератор одним последовательным проходом прогревает проведённые часы от начала семестра до начала запрошенного диапазона, затем ведёт локальный прогресс по правилу, типу занятия, группе и подгруппе. Обратного пересчёта прошлых дат для каждого слота нет. Singleton-кэш в сервисе не используется, поэтому данные расписания не накапливаются в heap между запросами и не устаревают после изменений правил, календаря или подгрупп. В генерацию попадают только активные на дату правила, дисциплины, группы, преподаватели и аудитории. Для будущих дат аудитория с `is_available=false` не выводится в расписании, но прошлые занятия остаются доступными для просмотра. @@ -167,6 +201,12 @@ Bearer-токен проверяется на backend. Frontend-скрытие единый снимок изменений и затем фильтрует итогового преподавателя. При отсутствии таких замен полный список групп не загружается. +Отчёты workload и свободные аудитории не являются интерактивным поиском и используют +отдельный `searchForAggregation`. Он обходит все активные группы разрешённого scope без +лимита 50, но переиспользует общую проверку диапазона, снимок точечных изменений, фильтрацию +и дедупликацию. Поэтому tenant с 51 или 100 группами получает полный агрегат, а защита +широкого `/api/schedule/search` остаётся прежней. + Лабораторные работы могут делиться на подгруппы через `schedule_rule_slot_subgroups`. Если подгруппы выбраны, занятие выводится только для родительских групп этих подгрупп, а лимит лабораторных часов списывается отдельно по каждой подгруппе. Если лабораторная проводится у нескольких групп одновременно, один слот может содержать разные подгруппы разных групп. Лекции и практики не делятся на подгруппы. Обычные пары генерируются только на коде `Т` (`allow_schedule = true`). Экзамены, каникулы, практики, нерабочие дни, праздники `*` и дни вне учебного года `=` считаются пропуском: занятие не переносится и не списывает академические часы. Если у группы нет назначения графика на учебный год, `GET /api/schedule` возвращает пустой список для этой группы без ошибки. @@ -175,8 +215,19 @@ Bearer-токен проверяется на backend. Frontend-скрытие Сетки времени хранятся в `time_slot_scopes`, сами пары — в `time_slots`. Базовая сетка (`DEFAULT`) применяется по умолчанию, субботняя (`WEEKDAY`, `day_of_week = 6`) применяется автоматически по субботам, а пользовательские сетки (`MANUAL`) применяются только через `time_slot_date_assignments` на конкретные даты. Ручное назначение выполняется из ячейки редактора календарного графика, потому что оно относится к конкретной учебной дате. +Создание и изменение слота выполняет транзакционный `TimeSlotService`. Время начала должно +быть раньше окончания, продолжительность вычисляется только backend, а внутри одной сетки +запрещены одинаковые номера пар и пересекающиеся полуоткрытые интервалы. Поэтому соседние +интервалы, например `08:00–09:30` и `09:30–11:00`, допустимы. Операции блокируют строки +затронутых сеток в стабильном порядке; exclusion constraint PostgreSQL дополнительно +защищает инвариант между экземплярами backend и при прямых конкурентных записях. + Правило расписания выбирает базовую пару по номеру. При генерации `ScheduleGeneratorService` сначала проверяет ручное назначение даты, затем автоматическую субботнюю сетку, затем базовую сетку. Если в выбранной сетке нет пары с нужным номером, используется базовый слот. Ручная сетка меняет только время занятий и не включает пары в дни, где календарный учебный график запрещает обычное расписание. +Правила расписания могут ссылаться только на слоты сетки `DEFAULT`. Используемый базовый +слот нельзя перенести в `WEEKDAY` или `MANUAL`, а сетку с используемыми слотами нельзя +сделать небазовой. Эти условия проверяются сервисом и транзакционными триггерами БД. + При миграции одинаковые стартовые слоты создаются для базовой и субботней сетки: | № | Время | diff --git a/docs/DATABASE.md b/docs/DATABASE.md index 56421de..c841e6a 100644 --- a/docs/DATABASE.md +++ b/docs/DATABASE.md @@ -2,10 +2,10 @@ ## Общая информация -- **СУБД:** PostgreSQL (локально `postgres:alpine3.23`, продакшн — managed PostgreSQL) +- **СУБД:** PostgreSQL (локально `postgres:16.3-alpine3.20`, продакшн — managed PostgreSQL) - **Управление схемой:** Flyway (программный запуск) - **Hibernate DDL:** Отключён (`ddl-auto=none`) -- **Расширения:** `pgcrypto` (bcrypt-хеширование паролей) +- **Расширения:** `pgcrypto` (bcrypt-хеширование паролей), `btree_gist` (exclusion constraint временных слотов) - **Мультитенантность:** Каждый тенант = отдельная БД --- @@ -59,6 +59,28 @@ erDiagram TIMESTAMP revoked_at VARCHAR rotated_to_token_hash } + + auth_login_rate_limits { + BIGSERIAL id PK + VARCHAR tenant UK + VARCHAR username_normalized UK + VARCHAR client_ip UK + INTEGER failure_count + TIMESTAMP window_started_at + TIMESTAMP last_failure_at + TIMESTAMP blocked_until + TIMESTAMP updated_at + } + + auth_login_attempt_audit { + BIGSERIAL id PK + VARCHAR tenant + VARCHAR username_normalized + VARCHAR client_ip + VARCHAR outcome + TIMESTAMP occurred_at + INTEGER retry_after_seconds + } education_forms { BIGSERIAL id PK @@ -432,7 +454,47 @@ erDiagram | `user_agent` | VARCHAR(512) | User-Agent клиента | | `ip_address` | VARCHAR(64) | IP-адрес клиента | -Сырой refresh-токен никогда не хранится в БД. При каждом `POST /api/auth/refresh` старый refresh-токен отзывается, а клиент получает новый refresh-cookie. +Сырой refresh-токен никогда не хранится в БД. При каждом `POST /api/auth/refresh` старый +refresh-токен отзывается, а клиент получает новый refresh-cookie. Фоновая tenant-aware +очистка удаляет только строки, чьи `expires_at` или `revoked_at` старше настраиваемого срока +audit retention (по умолчанию 30 дней). Индексы `idx_auth_refresh_tokens_cleanup_expires` и +`idx_auth_refresh_tokens_cleanup_revoked` обслуживают ограниченные batch-delete из V1. + +#### `auth_login_rate_limits` — Общие счётчики попыток входа + +| Колонка | Тип | Описание | +|---------|-----|----------| +| `id` | BIGSERIAL PK | ID состояния rate limit | +| `tenant` | VARCHAR(100) | Тенант запроса | +| `username_normalized` | VARCHAR(100) | NFKC-нормализованное имя в нижнем регистре | +| `client_ip` | VARCHAR(64) | Проверенный IP клиента | +| `failure_count` | INTEGER | Число отказов в текущем окне, не меньше нуля | +| `window_started_at` | TIMESTAMP | Начало окна учёта попыток | +| `last_failure_at` | TIMESTAMP | Время последнего отказа | +| `blocked_until` | TIMESTAMP | Окончание временной блокировки либо `NULL` | +| `created_at` | TIMESTAMP | Время создания состояния | +| `updated_at` | TIMESTAMP | Последнее изменение состояния | + +Комбинация `(tenant, username_normalized, client_ip)` уникальна. Перед проверкой пароля +backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHING`, затем захватывает её +`FOR UPDATE`; одна tenant-БД поэтому является общим атомарным хранилищем для всех pod. +Индексы по `blocked_until` и `updated_at` обслуживают проверку и очистку. + +#### `auth_login_attempt_audit` — Аудит неудачных входов + +| Колонка | Тип | Описание | +|---------|-----|----------| +| `id` | BIGSERIAL PK | ID события | +| `tenant` | VARCHAR(100) | Тенант запроса | +| `username_normalized` | VARCHAR(100) | Нормализованное имя из запроса | +| `client_ip` | VARCHAR(64) | Проверенный IP клиента | +| `outcome` | VARCHAR(20) | `FAILURE` или `BLOCKED` | +| `occurred_at` | TIMESTAMP | Время события | +| `retry_after_seconds` | INTEGER | Срок `Retry-After` для блокировки либо `NULL` | + +Таблица принципиально не содержит пароль, его хэш из запроса или признак существования +пользователя. Записи старше настраиваемого срока (по умолчанию 90 дней), а также неактивные +счётчики удаляются tenant-aware задачей ограниченными `SKIP LOCKED` пачками. ### Учебный процесс @@ -476,11 +538,15 @@ erDiagram | Колонка | Тип | Описание | |---------|-----|----------| | `id` | BIGSERIAL PK | ID | -| `name` | VARCHAR(200) UNIQUE | Название | +| `name` | VARCHAR(200) NOT NULL | Название | | `code` | VARCHAR(20) | Код предмета | | `department_id` | BIGINT FK → departments | Кафедра | | `description` | TEXT | Описание | +Уникальный функциональный индекс `uq_subjects_name_ci` на `lower(name)` гарантирует +глобальную уникальность названия без учёта регистра и защищает владение дисциплиной при +конкурентном импорте разных кафедр. Индекс входит в единую baseline-миграцию V1. + ### Аудиторный фонд #### `classrooms` — Аудитории @@ -555,7 +621,13 @@ erDiagram | `created_at` | TIMESTAMP | Дата создания записи | | `created_by` | BIGINT FK → users | Кто оформил перевод | -Индекс `uq_teacher_department_open_primary` гарантирует не больше одной открытой основной кафедры у преподавателя. Индекс `uq_teacher_department_open_pair` запрещает две открытые связи одного преподавателя с одной кафедрой, но позволяет преподавателю иметь несколько открытых неосновных кафедр. +Индекс `uq_teacher_department_open_primary` гарантирует не больше одной открытой основной +кафедры у преподавателя. Ограничение +`ex_teacher_primary_department_no_overlap` запрещает пересечение любых закрытых или открытых +периодов основной кафедры одного преподавателя. Индекс +`uq_teacher_department_open_pair` запрещает две открытые связи одного преподавателя с одной +кафедрой, но позволяет иметь несколько открытых неосновных кафедр. Все эти объекты входят в +единую baseline-миграцию `V1__init.sql`. #### `teacher_creation_requests` — Заявки кафедр на создание преподавателей | Колонка | Тип | Описание | @@ -609,7 +681,17 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `end_time` | TIME | Время окончания | | `duration_minutes` | INT | Длительность в минутах | -Уникальность задаётся индексом `(time_slot_scope_id, order_number)`: в одной сетке может быть только один слот с номером пары. +Уникальность задаётся индексом `(time_slot_scope_id, order_number)`: в одной сетке может +быть только один слот с номером пары. Базовая схема V1 дополнительно требует точного равенства +`duration_minutes` разнице `end_time - start_time` в полных минутах и запрещает +пересекающиеся интервалы одной сетки через GiST exclusion constraint +`ex_time_slots_scope_no_overlap`. Интервалы трактуются как полуоткрытые `[start, end)`, +поэтому соседние пары разрешены. + +Триггеры V1 сохраняют связь правил с базовой сеткой: `schedule_rule_slots` принимает только +слот области `DEFAULT`, используемый слот нельзя перенести в небазовую область, а область с +используемыми слотами нельзя сделать небазовой. Блокировки строк слота и области закрывают +гонку между созданием правила и изменением сетки. #### `time_slot_date_assignments` — Ручные назначения сеток времени | Колонка | Тип | Описание | @@ -626,6 +708,10 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `start_date` | DATE | Дата начала | | `end_date` | DATE | Дата окончания | +V1 создаёт GiST exclusion constraint `ex_academic_years_no_overlap` для включительных +диапазонов дат. Поэтому два учебных года не могут содержать одну и ту же календарную дату; +следующий год может начаться на следующий день после окончания предыдущего. + #### `semesters` — Семестры | Колонка | Тип | Описание | |---------|-----|----------| @@ -635,6 +721,12 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `start_date` | DATE | Дата начала, от неё считается неделя 1 | | `end_date` | DATE | Дата окончания | +Пара `(academic_year_id, semester_type)` уникальна. V1 дополнительно запрещает пересечение +включительных диапазонов семестров одного года через `ex_semesters_year_no_overlap`. +Триггеры требуют полного вхождения семестра в границы родительского года и запрещают +сужать учебный год так, чтобы существующий семестр оказался снаружи. Блокировка строки года +в триггере сериализует эти взаимные проверки с конкурентными insert/update. + #### `academic_calendar_activity_types` — Коды активностей графика | Колонка | Тип | Описание | |---------|-----|----------| @@ -659,6 +751,11 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `created_at` | TIMESTAMP | Дата создания | | `updated_at` | TIMESTAMP | Дата обновления | +Триггер `trg_academic_calendars_protect_dependencies` не позволяет изменить учебный год, +специальность, профиль, форму обучения или количество курсов так, чтобы уже назначенная +группа стала несовместимой. Уменьшение `course_count` также запрещается, если в сетке +остаются строки старших курсов или дисциплины старших семестров. + #### `academic_calendar_days` — Дневная сетка календарного графика | Колонка | Тип | Описание | |---------|-----|----------| @@ -670,6 +767,9 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `day_of_week` | INT CHECK(1–7) | День недели ISO | | `activity_type_id` | BIGINT FK → academic_calendar_activity_types | Код активности | +Триггер `trg_calendar_days_dimensions` требует, чтобы `course_number` не превышал +`academic_calendars.course_count`, а дата находилась внутри учебного года графика. + #### `academic_calendar_subjects` — Дисциплины календарного графика | Колонка | Тип | Описание | |---------|-----|----------| @@ -679,7 +779,7 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `subject_id` | BIGINT FK → subjects | Дисциплина из справочника | | `created_at` | TIMESTAMP | Дата создания привязки | -Уникальность задаётся по `calendar_id + semester_number + subject_id`, поэтому одну дисциплину нельзя дважды добавить в один семестр одного графика. Верхняя граница номера семестра проверяется backend по `academic_calendars.course_count * 2`. +Уникальность задаётся по `calendar_id + semester_number + subject_id`, поэтому одну дисциплину нельзя дважды добавить в один семестр одного графика. Верхняя граница номера семестра проверяется backend и триггером `trg_calendar_subjects_dimensions` по `academic_calendars.course_count * 2`. #### `student_group_calendar_assignments` — Назначения графиков группам | Колонка | Тип | Описание | @@ -689,6 +789,12 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `academic_year_id` | BIGINT FK → academic_years (CASCADE) | Учебный год | | `calendar_id` | BIGINT FK → academic_calendars (CASCADE) | Назначенный график | +Назначение уникально для пары «группа + учебный год». Триггер +`trg_calendar_assignments_compatible` проверяет совпадение года, специальности, профиля и +формы обучения, а также попадание вычисленного курса группы в `1..course_count`. Обратные +триггеры защищают назначение при изменении группы, графика и границ учебного года; блокировки +ссылочных строк закрывают конкурентные записи между несколькими backend-pod. + #### `schedule_rules` — Правила расписания | Колонка | Тип | Описание | |---------|-----|----------| @@ -709,7 +815,7 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня `ScheduleRule` использует собственные поля жизненного цикла `status`, `valid_from` и `valid_to`: архивированное правило или правило вне периода действия не участвует в генерации расписания. В отличие от справочников на `LifecycleEntity`, таблица не содержит `active_from`/`active_to`, поэтому состояние правила проверяется по `valid_*`. -Миграция V4 требует, чтобы лимиты лекций, лабораторных и практик были кратны двум. +Базовая схема V1 требует, чтобы лимиты лекций, лабораторных и практик были кратны двум. Неотрицательность каждого лимита и положительная сумма уже закреплены ограничениями V1; нули допустимы только как лимиты неиспользуемых типов занятия. @@ -738,7 +844,7 @@ Seed создаёт `Базовая сетка` (`DEFAULT`) и `Субботня | `locked_at` | TIMESTAMP | Когда выполнено закрепление | | `lock_comment` | TEXT | Комментарий к закреплению | -V4 добавляет `uq_schedule_rule_slots_exact_payload`: в одном правиле нельзя повторить +V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном правиле нельзя повторить одинаковые день, чётность, базовый временной слот, преподавателя, аудиторию, тип и формат занятия. Более широкие ресурсные пересечения и семантика подгрупп проверяются сервисом, поскольку зависят от нескольких таблиц и фактических активных недель. @@ -767,7 +873,7 @@ V4 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр | `created_at` | TIMESTAMP | Дата создания | Ограничение `uq_schedule_overrides_slot_date` не позволяет создать две разные правки для -одной и той же пары. Миграция V3 добавляет структурные инварианты: +одной и той же пары. Базовая схема V1 добавляет структурные инварианты: - `CANCEL` не содержит новых ресурсов; - `MOVE` содержит новый временной слот или аудиторию; @@ -793,28 +899,14 @@ V4 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр | Файл | Описание | |------|----------| -| `V1__init.sql` | Инициализация: справочники, роли, refresh-сессии JWT, lifecycle-поля, история кафедр преподавателей, заявки кафедр на создание преподавателей, комментарии дисциплин, календарные учебные графики, привязки дисциплин к графикам по семестрам, динамическое расписание, версии/закрепления правил, точечные изменения расписания, тестовые правила, триггеры, комментарии | -| `V2__subgroups_active_unique_name.sql` | Уникальность имени среди активных подгрупп одной группы | -| `V3__schedule_override_invariants.sql` | Матрица payload и допустимый формат точечных изменений расписания | -| `V4__schedule_rule_even_hours.sql` | Чётность лимитов академических часов и уникальность точного payload слота правила | +| `V1__init.sql` | Полная baseline-схема: справочники, роли, refresh-сессии JWT, PostgreSQL rate limit и аудит входа, lifecycle-поля, история кафедр, календарные графики, динамическое расписание, точечные изменения, seed, CHECK/UNIQUE/GiST-ограничения, конкурентно безопасные триггеры и комментарии | -### Накатывание на существующих тенантов +### Этап разработки -V2–V4 накатываются на существующие tenant-БД без изменения контрольных сумм V1–V3. -Перед добавлением ограничений V3 считает нарушения `CANCEL`, `MOVE`, `REPLACE` и формата. -Если найдены legacy-строки, миграция полностью откатывается и сообщает только количества -нарушений. Оператор должен исправить бизнес-данные tenant-БД и повторить миграцию; -автоматическое удаление или переписывание overrides не выполняется. - -Перед ограничениями V4 отдельно считаются нечётные лимиты лекций, лабораторных и практик, -а также группы точных дублей слотов. Любое нарушение останавливает V4 с русским сообщением; -ограничения не остаются частично применёнными и legacy-данные автоматически не меняются. - -```bash -# После исправления legacy-данных перезапустите backend, -# чтобы TenantConfigWatcher повторил Flyway migrate для tenant-БД. -docker compose restart backend -``` +По прямому решению владельца проекта все миграции V2–V7 объединены в V1, поскольку +клиентских tenant-БД ещё нет. После изменения контрольной суммы V1 локальную базу нужно +пересоздать целиком; накатывание этой редакции поверх БД со старой записью V1 в +`flyway_schema_history` не поддерживается. ### Полный сброс БД (локально) diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 7477086..e615db1 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -73,14 +73,16 @@ private static final Logger logger = LoggerFactory.getLogger(MyController.class) // Информационные сообщения logger.info("Запрос на получение всех занятий"); -// Ошибки с полным стектрейсом -logger.error("Ошибка при сохранении: {}", e.getMessage(), e); +// Технические детали остаются только в журнале +logger.error("Ошибка при сохранении записи", e); ``` #### Валидация - Для сложных правил — отдельные сервисы или приватные методы в контроллере с понятным сообщением об ошибке - Для простых — inline-проверки в контроллере с `ResponseEntity.badRequest()` +- Не формируйте HTTP-ответ из `Exception.getMessage()`: JDBC/SQL-исключения передаются в + `GlobalExceptionHandler`, который возвращает безопасный русский `400`/`409`/`500` #### Импорты @@ -126,8 +128,8 @@ import com.magistr.app.repository.*; #### Лучшие практики ```javascript -// ✅ Предпочитайте const -const token = localStorage.getItem('token'); +// ✅ Авторизация только через общий модуль; access JWT не хранится в Web Storage +const session = getSession(); // ✅ Async/await вместо .then() async function loadData() { @@ -229,6 +231,10 @@ public class AbsenceController { Изменение `V1__init.sql` допустимо только как осознанное исключение на этапе разработки. Для уже применённой `V1` требуется полный сброс tenant-схем или удаление истории Flyway перед запуском backend, иначе будет checksum mismatch. +Текущее состояние проекта — единый baseline `V1__init.sql`: по прямому решению владельца +содержимое прежних V2–V7 объединено в V1, клиентских tenant-БД нет. До отдельного решения о +фиксации baseline новые DB-инварианты добавляются в V1 и проверяются на полностью чистой БД. + ### Применение ```bash diff --git a/docs/FRONTEND.md b/docs/FRONTEND.md index bc43226..6e4c5f2 100644 --- a/docs/FRONTEND.md +++ b/docs/FRONTEND.md @@ -7,8 +7,8 @@ | **Фреймворк** | Нет (Vanilla JavaScript) | | **Модульная система** | ES6 Modules (`import`/`export`) | | **Стили** | CSS (модульный подход) | -| **Шрифт** | Inter на странице входа, системный шрифт в кабинетах расписания | -| **Веб-сервер** | Apache httpd:alpine | +| **Шрифт** | Системный стек без внешних font-CDN | +| **Веб-сервер** | Apache httpd на Alpine со строгим CSP | --- @@ -16,14 +16,24 @@ ``` frontend/ -├── package.json # Dependency-free проверки frontend через node:test +├── package.json # Exact build-зависимости и команды проверки +├── package-lock.json # Зафиксированное npm-дерево +├── auth-session.js # Access JWT и профиль сессии только в памяти вкладки +├── telemetry.js # Same-origin загрузчик собранного OTel bundle +├── security.conf # CSP и защитные HTTP-заголовки Apache +├── telemetry/ +│ └── otel-entry.js # Исходная точка сборки OpenTelemetry +├── scripts/ +│ └── build-vendor.mjs # Сборка `/vendor/otel.js` через esbuild ├── tests/ -│ └── dashboard-conflicts.test.mjs # Регрессии дат и состояний проверки конфликтов +│ ├── auth-session.test.mjs # Login/refresh/reload/logout и single-flight refresh +│ ├── dashboard-conflicts.test.mjs # Регрессии дат и состояний проверки конфликтов +│ └── security-policy.test.mjs # Web Storage, XSS, пароли, язык, CSP и Dockerfile ├── index.html # 🔐 Страница авторизации (общая) ├── script.js # Логика авторизации ├── style.css # Стили страницы авторизации ├── theme-toggle.js # Переключение светлой/тёмной темы -├── Dockerfile # httpd:alpine +├── Dockerfile # Multi-stage: npm bundle → Apache httpd │ ├── admin/ # 👨‍💼 Интерфейс администратора │ ├── index.html # SPA-оболочка с sidebar @@ -36,10 +46,10 @@ frontend/ │ │ └── departments-data.css # Стили создания кафедры/специальности │ ├── js/ │ │ ├── main.js # Инициализация, маршрутизация, навигация +│ │ ├── role-capabilities.js # Единая матрица вкладок admin/settings по ролям │ │ ├── api.js # HTTP-обёртка (fetch + Authorization) │ │ ├── dashboard-conflicts.js # Чистые функции дат, загрузки и состояний Red Zone │ │ ├── utils.js # Утилиты -│ │ ├── otel.js # OpenTelemetry (клиентская телеметрия, только прод) │ │ └── views/ # Модули представлений │ │ ├── dashboard.js # Дашборд │ │ ├── users.js # Управление пользователями @@ -81,14 +91,18 @@ frontend/ │ └── time-slots.html # Базовая, субботняя и ручные сетки времени │ ├── teacher/ # 👩‍🏫 Интерфейс преподавателя -│ └── index.html # Недельный просмотр динамического расписания преподавателя +│ ├── index.html # CSP-совместимая HTML-оболочка +│ ├── app.js # Недельный просмотр и общий auth-session +│ └── style.css # Стили кабинета без inline-блока ├── department/ # 🏛 Кабинет кафедры │ └── index.html # Redirect в `/admin/#department-workspace` ├── edu-office/ # 🗓 Кабинет учебного отдела │ └── index.html # Redirect в `/admin/#schedule-view` │ └── student/ # 🎓 Интерфейс студента - └── index.html # Недельный просмотр динамического расписания группы + ├── index.html # CSP-совместимая HTML-оболочка + ├── app.js # Недельный просмотр и общий auth-session + └── style.css # Стили кабинета без inline-блока ``` --- @@ -112,12 +126,13 @@ frontend/ 3. Подключает соответствующий JS-модуль из `js/views/{tab}.js` 4. Обновляет заголовок страницы (`#page-title`) -`main.js` также фильтрует вкладки по роли: +`main.js` и отдельный settings SPA получают разрешённые вкладки из единого +`admin/js/role-capabilities.js`; локальные дубли `ROLE_NAVIGATION`/`ROLE_TABS` удалены. | Роль | Доступные вкладки | |------|-------------------| | `ADMIN` | Все вкладки | -| `EDUCATION_OFFICE` | Просмотр расписаний, конструктор расписания, календарный график, загруженность, аудитории, оборудование | +| `EDUCATION_OFFICE` | Просмотр расписаний, конструктор расписания, календарный график, загруженность и аудитории; в settings — временные слоты и формы обучения | | `DEPARTMENT` | Кабинет кафедры, просмотр расписаний | | `SCHEDULE_VIEWER` | Только просмотр расписаний | @@ -139,14 +154,14 @@ frontend/ | `department-workspace` | Кабинет кафедры: дисциплины, импорт, комментарии, преподаватели, привязка преподавателей, заявки на новых преподавателей и нагрузка | `/api/department/*`, `/api/department/teacher-requests`, `/api/workload/teachers` | | `schedule-view` | Read-only просмотр расписаний: по одной выбранной дате строится двухнедельный диапазон, найденные расписания выбираются в переключателе, а на экране отображается одна активная совмещённая таблица чётной/нечётной недели | `/api/schedule/search` | | `schedule` | Конструктор правил динамического расписания с выезжающей визуальной матрицей групп по дням и времени | `/api/admin/schedule-rules`, `/api/admin/time-slots`, `/api/admin/calendar/years`, `/api/lesson-types`, `/api/subgroups` | -| `academic-calendar` | Учебные годы, семестры, создание календарных графиков, Excel-подобный редактор дневной сетки и привязка дисциплин к семестрам графика | `/api/admin/calendar`, `/api/admin/academic-calendars`, `/api/admin/academic-calendars/{id}/subjects`, `/api/admin/calendar/activity-types`, `/api/education-forms`, `/api/subjects` | +| `academic-calendar` | Учебные годы, семестры, создание календарных графиков, Excel-подобный редактор дневной сетки и привязка дисциплин к семестрам графика | `/api/admin/calendar`, `/api/admin/academic-calendars`, `/api/admin/academic-calendars/{id}/subjects`, `/api/admin/calendar/activity-types`, `/api/specialties`, `/api/specialties/{id}/profiles`, `/api/education-forms`, `/api/subjects` | | `auditorium-workload` | Динамическая загруженность аудиторий, преподавателей и кафедр: сводная матрица по дате или совмещённая таблица выбранной сущности по чётной/нечётной неделе | `/api/classrooms`, `/api/users/teachers`, `/api/departments`, `/api/admin/time-slots`, `/api/equipments`, `/api/groups`, `/api/schedule`, `/api/admin/calendar/years` | ### Особенности админских вкладок - Вкладка `dashboard` формирует date-only значения из локальных компонентов даты, а текущую неделю — от отдельного объекта понедельника до `понедельник + 6 дней`. Расписания кафедр загружаются независимо через `Promise.allSettled`: `COMPLETE` означает ответы всех кафедр, `PARTIAL` — только части, `NOT_RUN` — отсутствие пригодных ответов или кафедр. Зелёная карточка «Конфликты расписания не обнаружены» разрешена только для `COMPLETE` без найденных конфликтов; частичный результат всегда остаётся предупреждением, а полный отказ показывается как «Проверка не выполнена». Технические причины отказов в DOM не выводятся. - Вкладка `groups` загружает кафедры, специальности, профили, учебные годы и календарные графики. Список групп открывается через `/api/groups?includeArchived=true`, поэтому в таблице видны активные, будущие, завершившие обучение и архивные группы со статусом. Группа создаётся через `/api/groups` с `specialtyId` и `specialtyProfileId`, а модалка редактирования использует широкую сетку полей без внутреннего пустого скролла. Блок подгрупп использует `/api/subgroups` и `/api/groups/{id}/subgroups`, а блок назначений использует `/api/groups/{id}/calendar-assignments`. После назначения графика в таблице назначений сразу выводятся дисциплины графика, сгруппированные по номерам семестров. В селекты подгрупп и назначений попадают только группы с `active=true`. -- Вкладка `teacher-requests` показывает pending-заявки кафедр на создание преподавателей. Администратор может скорректировать кафедру, логин, ФИО и должность, задать пароль минимум 8 символов, затем одобрить заявку через `/api/teacher-requests/{id}/approve` или отклонить её через `/api/teacher-requests/{id}/reject`. Для роли `ADMIN` счётчик pending-заявок выводится в пункте меню «Заявки» и рядом с заголовком страницы, чтобы очередь была видна без открытия вкладки. +- Вкладка `teacher-requests` показывает pending-заявки кафедр на создание преподавателей. Администратор может скорректировать кафедру, логин, ФИО и должность, задать пароль минимум 8 символов в скрытом поле с `autocomplete="new-password"`, затем одобрить заявку через `/api/teacher-requests/{id}/approve` или отклонить её через `/api/teacher-requests/{id}/reject`. Для роли `ADMIN` счётчик pending-заявок выводится в пункте меню «Заявки» и рядом с заголовком страницы, чтобы очередь была видна без открытия вкладки. - Вкладка `department-workspace` в блоке преподавателей объединяет данные `/api/department/teachers` и `/api/workload/teachers`: каждый преподаватель показывается одной карточкой с должностью и нагрузкой за выбранный период, преподаватели без занятий получают нулевую нагрузку, а преподаватели из расписания добавляются без дублей. Если дата начала периода выбрана позже даты окончания, поле окончания очищается, а расчёт нагрузки ждёт корректный период. - Вкладка `department-workspace` позволяет кафедре добавить существующего активного преподавателя на свою кафедру через `/api/department/teachers/{teacherId}/assignments`, отправить заявку на нового преподавателя через `/api/department/teacher-requests` и видеть статусы собственных заявок в таблице. - Компоновка `department-workspace` использует собственные CSS-сетки `department-workspace-filter-grid` и `department-workspace-actions-grid`: фильтры периода отделены от сеток расписания, загрузка дисциплин занимает широкую колонку, формы преподавателей выравниваются справа, а списки и таблицы идут полноширинными блоками ниже. @@ -168,47 +183,32 @@ frontend/ - Кнопка «Назад в панель» для возврата в `/admin/` - Текущие вкладки: - **Общие настройки** — заглушка (только `ADMIN`) - - **Временные слоты** — выбор сетки через выпадающий список, CRUD слотов выбранной сетки, добавление ручных сеток через модальное окно и удаление выбранной ручной сетки. Базовая сетка применяется по умолчанию, субботняя — автоматически по субботам; ручное применение выполняется в сетке календарного графика. + - **Временные слоты** — выбор сетки через выпадающий список, CRUD слотов выбранной сетки, добавление ручных сеток через модальное окно и удаление выбранной ручной сетки. Поле длительности доступно только для чтения и пересчитывается при изменении времени начала или окончания; в API отправляются только границы, а окончательное значение вычисляет backend. Базовая сетка применяется по умолчанию, субботняя — автоматически по субботам; ручное применение выполняется в сетке календарного графика. --- ## API-клиент (`api.js`) -Все HTTP-запросы проходят через обёртку `apiFetch()`. Access JWT читается из `localStorage` перед каждым запросом: +Все защищённые HTTP-запросы проходят через `fetchWithAuth()` из `auth-session.js`. +Access JWT и `role`/`departmentId`/`userId` существуют только в памяти JavaScript-модуля: ```javascript -export async function apiFetch(endpoint, method = 'GET', body = null, retryOnUnauthorized = true) { - const response = await fetch(endpoint, { - method, - headers: getHeaders(body ? 'application/json' : null), - credentials: 'same-origin', - body: body ? JSON.stringify(body) : undefined - }); - - if (response.status === 401 && retryOnUnauthorized) { - const refreshed = await refreshAccessToken(); - if (refreshed) return apiFetch(endpoint, method, body, false); - clearAuthState(); - window.location.href = '/'; +export async function fetchWithAuth(endpoint, options = {}, retry = true) { + const headers = new Headers(options.headers || {}); + if (accessToken) headers.set('Authorization', `Bearer ${accessToken}`); + const response = await fetch(endpoint, { ...options, headers, credentials: 'same-origin' }); + if (response.status === 401 && retry && await refreshAccessToken()) { + return fetchWithAuth(endpoint, options, false); } - - if (!response.ok) { - throw new Error(data?.message || `Ошибка HTTP: ${response.status}`); - } - - return await response.json(); + return response; } - -// Shortcut-методы -export const api = { - get: (url) => apiFetch(url, 'GET'), - post: (url, body) => apiFetch(url, 'POST', body), - put: (url, body) => apiFetch(url, 'PUT', body), - delete: (url, body) => apiFetch(url, 'DELETE', body) -}; ``` -При `401` клиент один раз вызывает `POST /api/auth/refresh`, обновляет `localStorage.token` и повторяет исходный запрос. Если refresh неуспешен, auth state очищается и пользователь возвращается на страницу входа. +При загрузке защищённой страницы память восстанавливается через `POST /api/auth/refresh` и +`HttpOnly` cookie. При `401` клиент выполняет не более одной общей refresh-ротации для всех +параллельных запросов и один раз повторяет исходный запрос. Неуспешный refresh очищает память +и возвращает пользователя на страницу входа. Legacy auth-ключи только удаляются из +`localStorage`/`sessionStorage`; новые данные авторизации туда не записываются. После мутаций `api.js` инвалидирует кэш не только по точному URL, но и по связанным префиксам. Для заявок и кафедральных привязок очищаются `/api/users`, `/api/users/teachers`, `/api/teacher-requests`, `/api/department/teacher-requests` и `/api/department/teachers`, чтобы таблицы заявок и списки преподавателей обновлялись без ручного сброса страницы. @@ -216,13 +216,21 @@ export const api = { ## Frontend-тесты -Регрессионные проверки frontend используют встроенный `node:test` без сторонних npm-зависимостей (Node.js 18+). Тесты `dashboard-conflicts.test.mjs` покрывают локальные даты `Europe/Moscow` в интервале 00:00–03:00, первые дни месяца, переход года, полную/частичную/не выполненную загрузку и запрет ложного зелёного статуса. +Регрессионные проверки используют встроенный `node:test` (Node.js 18+). Помимо тестов +дашборда, `auth-session.test.mjs` покрывает login-state, reload через refresh-cookie, +single-flight ротацию, повтор после `401` и logout. `security-policy.test.mjs` запрещает +auth-данные в Web Storage, удалённые/inline-скрипты, динамические inline-стили и рассинхрон +SHA-256 style-хэшей с CSP. Там же закреплены безопасный DOM-рендеринг ошибок без +интерполяции `exception.message` в `innerHTML`, скрытые парольные поля с корректным +`autocomplete`, русские метки tenant-контура и отсутствие англоязычных/raw exception +сообщений в собственных frontend-логах. Команды выполняются из каталога `frontend/`: ```bash -npm test # unit-тесты дат, загрузки кафедр и UI-состояний -npm run check # синтаксис модулей дашборда + unit-тесты +npm run build # собрать локальный dist/vendor/otel.js +npm test # frontend unit/static tests +npm run check # синтаксис auth/UI-модулей + все frontend-тесты ``` --- @@ -233,13 +241,10 @@ npm run check # синтаксис модулей дашборда + unit-те 1. Пользователь вводит логин/пароль 2. `script.js` отправляет `POST /api/auth/login` -3. При успехе сохраняет в `localStorage`: - - `token` — access JWT - - `role` — роль пользователя - - `departmentId` — кафедра пользователя - - `userId` — ID пользователя для личного расписания преподавателя -4. Refresh-токен сохраняется браузером как `HttpOnly` cookie и недоступен JavaScript -5. Перенаправляет на соответствующий интерфейс: +3. При успехе кладёт access JWT и профиль пользователя только в память текущей страницы. +4. Refresh-токен сохраняется браузером как `HttpOnly` cookie и недоступен JavaScript. +5. После перехода новый документ восстанавливает память через `POST /api/auth/refresh`. +6. Пользователь перенаправляется на соответствующий интерфейс: - `ADMIN` → `/admin/` - `EDUCATION_OFFICE` → `/admin/#schedule-view` - `DEPARTMENT` → `/admin/#department-workspace` @@ -249,18 +254,19 @@ npm run check # синтаксис модулей дашборда + unit-те ### Проверка авторизации -На каждой странице проверяется наличие токена и роли: +Каждая защищённая страница сначала восстанавливает сессию и проверяет роль из памяти: ```javascript -export function isAuthenticatedAsAdmin() { - const role = localStorage.getItem('role'); - return getToken() && role === 'ADMIN'; +const session = await restoreSession(); +if (!session || !AUTHORIZED_ROLES.includes(session.role)) { + window.location.replace('/'); } ``` ### Выход -Кнопка «Выйти» вызывает `POST /api/auth/logout`, затем очищает `localStorage` и перенаправляет на `/`. +Кнопка «Выйти» вызывает `POST /api/auth/logout`, очищает access JWT и профиль из памяти и +перенаправляет на `/`. Refresh-cookie очищает backend. --- @@ -292,7 +298,8 @@ export function isAuthenticatedAsAdmin() { ### Преподаватель (`/teacher/`) -Страница показывает недельную сетку занятий преподавателя. ID преподавателя берётся из `localStorage.userId`, который сохраняется после `POST /api/auth/login`. +Страница показывает недельную сетку занятий преподавателя. ID преподавателя берётся из +восстановленного в памяти профиля сессии. Основные элементы: - навигация по неделям: предыдущая, текущая, следующая; @@ -300,7 +307,7 @@ export function isAuthenticatedAsAdmin() { - запрос `GET /api/schedule?teacherId={userId}&startDate={YYYY-MM-DD}&endDate={YYYY-MM-DD}`; - отображение дисциплины, времени, типа занятия, лабораторных подгрупп, аудитории и всех групп правила. -Если пользователь вошёл до появления поля `userId`, страница попросит выполнить вход заново. +Если refresh-cookie недействительна или роль не `TEACHER`, страница возвращает пользователя на вход. ### Студент (`/student/`) @@ -368,17 +375,18 @@ CSS-переменные позволяют поддерживать светл --- -## OpenTelemetry (`otel.js`) +## OpenTelemetry (локальный bundle) -Клиентская телеметрия (document-load, fetch, XHR) отправляется через `BatchSpanProcessor` на `/otel/v1/traces`. +Клиентская телеметрия (document-load, fetch, XHR) отправляется через `BatchSpanProcessor` на +same-origin путь `/otel/v1/traces`. -- **На production** — загружается автоматически через динамический `import()` -- **На localhost** — пропускается, чтобы избежать таймаутов CDN `esm.sh` +- npm-зависимости зафиксированы exact-версиями в `package-lock.json`; +- `scripts/build-vendor.mjs` собирает их через esbuild в `/vendor/otel.js`; +- браузер импортирует только same-origin bundle, CDN-код в runtime отсутствует; +- на `localhost` телеметрия не включается. ```javascript -if (!['localhost', '127.0.0.1'].includes(window.location.hostname)) { - import('./otel.js').catch(e => console.warn('OTel init skipped:', e.message)); -} +telemetryPromise = import('/vendor/otel.js'); ``` --- diff --git a/docs/INFRASTRUCTURE.md b/docs/INFRASTRUCTURE.md index 73e7948..ad87888 100644 --- a/docs/INFRASTRUCTURE.md +++ b/docs/INFRASTRUCTURE.md @@ -6,18 +6,20 @@ ```yaml services: - backend: # Spring Boot (Java 17), порт 8080 - frontend: # Apache httpd:alpine, порт 80 - db: # PostgreSQL alpine3.23, порт 5432 + backend: # Spring Boot (Java 17), внутренний порт 8080 + frontend: # Apache httpd, публикует HTTP_PORT (по умолчанию 80) + db: # PostgreSQL 16.3, внутренний порт 5432 ``` ### Сеть -Все сервисы работают в Docker-сети `proxy` (external). Перед первым запуском: +Compose сам создаёт изолированную bridge-сеть `magistr`. Внешняя сеть или отдельно +установленный reverse proxy для локального запуска не нужны. Apache раздаёт frontend и +проксирует same-origin пути `/api` и `/actuator/health` в backend; backend и PostgreSQL не +публикуют порты на хосте. -```bash -docker network create proxy -``` +Данные PostgreSQL сохраняются в именованном томе `postgres_data`. Обычный +`docker compose down` не удаляет их; явный `docker compose down -v` выполняет полный сброс. ### Переменные окружения @@ -30,9 +32,29 @@ POSTGRES_DB=app_db JWT_SECRET=replace-with-random-jwt-secret-minimum-32-bytes JWT_ACCESS_TOKEN_TTL=15m JWT_REFRESH_TOKEN_TTL=7d +JWT_REFRESH_CLEANUP_RETENTION=30d +LOGIN_RATE_MAX_FAILURES=5 +LOGIN_RATE_ATTEMPT_WINDOW=15m +LOGIN_RATE_BASE_BLOCK_DURATION=1m +LOGIN_RATE_MAX_BLOCK_DURATION=15m +LOGIN_AUDIT_RETENTION=90d +TRUSTED_PROXY_CIDRS=172.16.0.0/12 +OTEL_SDK_DISABLED=true +HTTP_PORT=80 ``` -`POSTGRES_PASSWORD` обязателен для `docker compose up`: пароль не хранится в `compose.yaml`. `JWT_SECRET` должен быть случайным секретом длиной минимум 32 байта. В продакшене секреты задаются через Kubernetes Secret, а не через коммитимые файлы. +Начальный шаблон находится в `.env.example`: скопируйте его в игнорируемый Git файл `.env` +и заполните пустые секреты. `POSTGRES_PASSWORD` и `JWT_SECRET` обязательны для +`docker compose up` и не хранятся в `compose.yaml`; JWT должен быть случайным секретом длиной +минимум 32 байта (`openssl rand -base64 48`). `POSTGRES_DB` одновременно задаёт создаваемую +БД и входит в `SPRING_DATASOURCE_URL`, поэтому произвольное локальное имя остаётся +согласованным. Все JWT TTL/cleanup-переменные и параметры защиты входа передаются +backend-контейнеру явно. `TRUSTED_PROXY_CIDRS` должен содержать только сеть фактического +reverse proxy: заголовок `X-Forwarded-For` от остальных источников backend игнорирует. +Поскольку локальный Compose не запускает OpenTelemetry Collector, SDK по умолчанию отключён; +при подключённом Collector задайте `OTEL_SDK_DISABLED=false` и его OTLP endpoint. + +В продакшене секреты задаются через Kubernetes Secret, а не через коммитимые файлы. Встроенного JWT fallback в приложении нет. Отсутствующее, короткое или шаблонное значение останавливает запуск; профиль `production` также требует Secure refresh-cookie. @@ -43,25 +65,41 @@ JWT_REFRESH_TOKEN_TTL=7d Backend собирается через multi-stage сборку Maven: 1. Этап сборки: `maven:3.9-eclipse-temurin-17` → `mvn package` -2. Этап запуска: `eclipse-temurin:17-jre-alpine` → `java -jar app.jar` +2. OpenTelemetry Java Agent `2.28.1` загружается как фиксированный Maven-артефакт и + проверяется по закреплённому SHA-256 +3. Этап запуска: `eclipse-temurin:17-jre-alpine` → `java -jar app.jar` ### Dockerfile (Frontend) ```dockerfile -FROM httpd:alpine -COPY . /usr/local/apache2/htdocs/ -RUN chown -R www-data:www-data /usr/local/apache2/htdocs/ +FROM node:22-alpine3.23@sha256:8516dce... AS frontend-assets +RUN npm ci +RUN npm run build:vendor + +FROM httpd:alpine3.23@sha256:4a15e9c... +COPY --from=frontend-assets /build/dist/vendor/ /usr/local/apache2/htdocs/vendor/ +COPY security.conf /usr/local/apache2/conf/extra/magistr-security.conf +COPY proxy.conf /usr/local/apache2/conf/extra/magistr-proxy.conf ``` +Оба базовых образа зафиксированы tag и manifest digest. Первый этап собирает зафиксированный +OpenTelemetry bundle; второй раздаёт только runtime- +файлы, без `node_modules`, тестов и build-исходников. Apache подключает `mod_headers`, +`mod_proxy` и `mod_proxy_http`; proxy сохраняет исходный `Host`, чтобы `localhost` корректно +маршрутизировался в tenant `default`. Сервер +возвращает CSP с `script-src 'self'`, `script-src-attr 'none'`, `style-src 'self'` и точными +SHA-256 для оставшихся статических style-атрибутов. `unsafe-inline` и `unsafe-eval` не +используются. Дополнительно выставляются `nosniff`, `DENY`, строгий referrer policy и +ограниченная Permissions Policy. + --- ## Kubernetes (продакшн) ### Расположение конфигурации -Ожидаемое расположение production-манифестов: `../k8s/`. В текущей рабочей копии этот -внешний каталог недоступен, поэтому приведённые ниже изменения являются обязательным -runbook для оператора, а не утверждением о применённом или проверенном состоянии кластера. +Production-манифесты находятся в `../k8s/`. Каталог расположен вне Git-корня `magistr`, +поэтому его изменения проверяются и перечисляются отдельно от `git diff` репозитория. ### Ключевые ресурсы @@ -78,6 +116,37 @@ runbook для оператора, а не утверждением о прим - `JWT_ACCESS_TOKEN_TTL=15m` - `JWT_REFRESH_TOKEN_TTL=7d` - `JWT_REFRESH_COOKIE_SECURE=true` +- `JWT_REFRESH_CLEANUP_ENABLED=true` +- `JWT_REFRESH_CLEANUP_RETENTION=30d` +- `JWT_REFRESH_CLEANUP_BATCH_SIZE=500` +- `JWT_REFRESH_CLEANUP_MAX_BATCHES=20` +- `JWT_REFRESH_CLEANUP_INTERVAL_MS=3600000` +- `JWT_REFRESH_CLEANUP_INITIAL_DELAY_MS=60000` + +Cleanup проходит отдельно по каждой активной tenant-БД. `RETENTION` задаёт срок хранения +свежих истёкших и отозванных audit-записей, `BATCH_SIZE` и `MAX_BATCHES` ограничивают объём +одного прохода, а interval/initial delay управляют безопасным расписанием. + +### Защита входа и доверенные proxy + +`app-config` задаёт общий PostgreSQL rate limit для всех backend-pod: + +- `LOGIN_RATE_MAX_FAILURES=5` +- `LOGIN_RATE_ATTEMPT_WINDOW=15m` +- `LOGIN_RATE_BASE_BLOCK_DURATION=1m` +- `LOGIN_RATE_MAX_BLOCK_DURATION=15m` +- `LOGIN_AUDIT_RETENTION=90d` +- `TRUSTED_PROXY_CIDRS=10.42.0.0/16` + +Последнее значение соответствует стандартной pod-сети K3s, из которой Traefik обращается +к backend. Если кластер запущен с другим `cluster-cidr`, перед rollout нужно указать +фактическую сеть ingress proxy. Не следует добавлять публичные сети клиентов: backend +доверяет `X-Forwarded-For` только от непосредственного источника из этого списка. + +Счётчики и audit-события находятся в каждой tenant-БД, поэтому два pod используют одно +атомарное состояние. Старая история очищается раз в сутки ограниченными `SKIP LOCKED` +пачками; параметры `LOGIN_AUDIT_CLEANUP_*` из `.env.example` позволяют изменить расписание +и максимальный объём одного прохода. `app-secret` задаёт `JWT_SECRET`. Этот Secret не создаётся файлами `../k8s/`: его заранее предоставляет внешний secret manager или оператор. Deployment явно включает профиль @@ -194,8 +263,7 @@ namespace `magistr`. Secret должен существовать заранее ### Liveness и readiness probes backend -TCP probe подтверждает только открытый порт и не отражает готовность обязательных tenant-БД. -В production Deployment необходимо использовать раздельные HTTP probes: +Production Deployment использует раздельные HTTP probes: ```yaml livenessProbe: @@ -214,29 +282,20 @@ Liveness зависит только от состояния процесса. R исключается из приёма трафика без перезапуска. Actuator не публикует components, домены, JDBC URL или credentials. -Параметры `initialDelaySeconds`, `periodSeconds`, `timeoutSeconds` и `failureThreshold` нужно -согласовать с текущим Deployment; замена механизма probe не подтверждает автоматически -корректность этих порогов. +`../k8s/backend.yaml` монтирует каталог `/config` без `subPath`, а `app-config` задаёт +`TENANTS_CONFIG_PATH=/config/tenants.json` и `TENANTS_CONFIG_REQUIRED=true`. Отсутствующий +или невалидный обязательный Secret поэтому снимает readiness, не включая H2 fallback. -### Внешние действия для production Kubernetes - -Каталог `../k8s/` не изменялся и не проверялся в рамках текущей рабочей копии. Оператору после -получения доступа к нему необходимо: - -1. обновить backend Deployment: directory mount без `subPath`, - `TENANTS_CONFIG_REQUIRED=true` и две HTTP probes; -2. добавить либо сузить Role до `get`/`update` одного `tenants-secret` и проверить RoleBinding - фактического ServiceAccount; -3. убедиться, что внешний `tenants-secret` существует, содержит непустой ключ `tenants.json` - и допускает обновление; -4. отрендерить манифесты и выполнить серверную проверку без применения: +Перед production rollout оператор должен убедиться, что внешний `tenants-secret` существует, +содержит непустой ключ `tenants.json`, допускает обновление, и выполнить проверки без +применения: ```bash kubectl kustomize ../k8s >/dev/null kubectl apply --dry-run=server -k ../k8s ``` -5. отдельно проверить полномочия фактического ServiceAccount: +Отдельно проверьте полномочия фактического ServiceAccount: ```bash BACKEND_SERVICE_ACCOUNT='укажите-фактический-service-account' @@ -246,15 +305,21 @@ kubectl auth can-i update secret/tenants-secret \ --as="system:serviceaccount:magistr:${BACKEND_SERVICE_ACCOUNT}" -n magistr ``` -Применение манифестов, rollout и проверка реальных pod являются отдельными внешними -операциями и без разрешения автоматически не выполняются. +Production rollout и проверка реальных pod являются внешними операциями и без отдельного +разрешения из этой рабочей копии не выполнялись. -### Обновление backend +### Ручное обновление backend и frontend ```bash -kubectl rollout restart deployment backend -n magistr +export BACKEND_IMAGE_REF='gitea.zuev.company/zuev/magistr-backend@sha256:<64 hex>' +export FRONTEND_IMAGE_REF='gitea.zuev.company/zuev/magistr-frontend@sha256:<64 hex>' +bash ../k8s/deploy.sh apply ``` +Манифесты содержат нулевой digest-sentinel. `deploy.sh` требует два реальных digest, +локально подставляет их до `kubectl apply` и строго ждёт оба rollout; прямое применение +Deployment-файлов запрещено. + --- ## Caddy (реверс-прокси) @@ -275,10 +340,16 @@ kubectl rollout restart deployment backend -n magistr Расположение: `.gitea/workflows/docker-build.yaml` Основные шаги: -1. Checkout кода -2. Login в Docker Registry -3. Build + Push образов (`backend`, `frontend`) -4. Генерация меток через `docker/metadata-action` +1. Backend unit/component tests, frontend static/unit tests, Compose validation и shell-тест + immutable rollout/rollback. +2. Только после успешных gates — login, параллельная сборка и push backend/frontend с + SHA-tag и release tag без `latest`. +3. Build jobs публикуют digest обоих образов; deploy job устанавливает фиксированный + `kubectl v1.33.12` после SHA-256 проверки. +4. `scripts/deploy-images.sh` принимает только `image@sha256:...`, сохраняет предыдущие + ссылки, применяет оба digest и ждёт rollout. При отказе автоматически возвращает оба + предыдущих образа и повторно проверяет их готовность. +5. Workflow-wide concurrency lock не допускает одновременные production deployment. --- @@ -289,7 +360,7 @@ kubectl rollout restart deployment backend -n magistr ```mermaid graph LR Backend["Spring Boot"] -->|OTLP gRPC| Collector["OTel Collector"] - Frontend["JS (otel.js)"] -->|OTLP HTTP| Collector + Frontend["JS (локальный OTel bundle)"] -->|OTLP HTTP| Collector Collector --> SigNoz["SigNoz"] Collector -->|"Метрики PostgreSQL"| PgExporter["pg_exporter"] @@ -308,10 +379,13 @@ Tenant ID добавляется в: ### Интеграция Frontend -Файл `admin/js/otel.js` — клиентская телеметрия: +Собранный `/vendor/otel.js` — клиентская телеметрия: - Метрики производительности страниц - Трейсы пользовательских действий +Исходные npm-пакеты имеют exact-версии и lockfile, собираются внутри frontend-образа и не +загружаются браузером со стороннего CDN. + PostgreSQL receivers collector получают endpoint и credentials только из `otel-postgres-secret`; ConfigMap collector содержит лишь `${env:...}` ссылки. diff --git a/docs/LOGGING.md b/docs/LOGGING.md index 757385a..12a67ba 100644 --- a/docs/LOGGING.md +++ b/docs/LOGGING.md @@ -106,12 +106,18 @@ public class MyClass { private static final Logger log = LoggerFactory.getLogger(MyClass.class); public void doSomething() { - log.info("Операция выполнена: param={}", value); - log.error("Ошибка: {}", e.getMessage(), e); // со стектрейсом + log.info("Операция выполнена: параметр={}", value); + log.error("Операция завершилась ошибкой: типОшибки={}", + e.getClass().getSimpleName()); + log.debug("Технические детали ошибки операции", e); } } ``` +Production-сообщения пишутся на русском языке и не включают `exception.getMessage()`, +JDBC URL, логины, пароли или содержимое Secret. Технический тип исключения допускается как +структурированное поле, а полный стек — в отдельной русскоязычной записи уровня `DEBUG`. + ### Рекомендации по уровням | Уровень | Когда использовать | diff --git a/docs/README.md b/docs/README.md index a2ee0d3..7fa4038 100644 --- a/docs/README.md +++ b/docs/README.md @@ -36,14 +36,18 @@ # 1. Клонировать репозиторий git clone magistr && cd magistr -# 2. Создать Docker-сеть (если ещё не создана) -docker network create proxy +# 2. Подготовить локальные переменные +cp .env.example .env +# Укажите в .env POSTGRES_PASSWORD и случайный JWT_SECRET. +# JWT_SECRET можно сгенерировать командой: openssl rand -base64 48 # 3. Запустить все сервисы docker compose up -d --build ``` -После запуска приложение доступно по адресу: **http://localhost:80** +Compose сам создаёт внутреннюю сеть и именованный том PostgreSQL. После запуска приложение +доступно по адресу **http://localhost:80**; если в `.env` задан другой `HTTP_PORT`, используйте +его. Backend и PostgreSQL наружу не публикуются: `/api` проксируется frontend-контейнером. **Учётные данные по умолчанию:** @@ -60,7 +64,7 @@ docker compose logs -f backend # Полный сброс базы данных (удаление данных + повтор миграций) docker compose down -v -docker compose up -d +docker compose up -d --build # Остановка всех сервисов docker compose down diff --git a/frontend/.dockerignore b/frontend/.dockerignore index 4a246ec..1df05e6 100755 --- a/frontend/.dockerignore +++ b/frontend/.dockerignore @@ -1,2 +1,4 @@ Dockerfile .dockerignore +node_modules +dist diff --git a/frontend/Dockerfile b/frontend/Dockerfile index c9203f0..52de24b 100755 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,5 +1,27 @@ -FROM httpd:alpine -COPY . /usr/local/apache2/htdocs/ +FROM node:22-alpine3.23@sha256:8516dce0483394d5708d4b2ee6cacb79fb1d617ea4e2787c2120bcca92ce372e AS frontend-assets -# Set appropriate permissions for the web server to serve static files -RUN chown -R www-data:www-data /usr/local/apache2/htdocs/ +WORKDIR /build +COPY package.json package-lock.json ./ +RUN npm ci +COPY telemetry/ ./telemetry/ +COPY scripts/build-vendor.mjs ./scripts/build-vendor.mjs +RUN npm run build:vendor + +FROM httpd:alpine3.23@sha256:4a15e9c73f25334bc03cfb3c692c9adfc103bb46ca89cee1f0b9a5fcbc7b21f6 + +COPY admin/ /usr/local/apache2/htdocs/admin/ +COPY department/ /usr/local/apache2/htdocs/department/ +COPY edu-office/ /usr/local/apache2/htdocs/edu-office/ +COPY student/ /usr/local/apache2/htdocs/student/ +COPY teacher/ /usr/local/apache2/htdocs/teacher/ +COPY index.html script.js style.css theme-toggle.js auth-session.js telemetry.js /usr/local/apache2/htdocs/ +COPY --from=frontend-assets /build/dist/vendor/ /usr/local/apache2/htdocs/vendor/ +COPY security.conf /usr/local/apache2/conf/extra/magistr-security.conf +COPY proxy.conf /usr/local/apache2/conf/extra/magistr-proxy.conf + +# Сервер раздаёт same-origin ресурсы и проксирует API во внутреннюю сеть Compose. +RUN sed -i 's/^#LoadModule headers_module/LoadModule headers_module/' /usr/local/apache2/conf/httpd.conf \ + && sed -i 's/^#LoadModule proxy_module/LoadModule proxy_module/' /usr/local/apache2/conf/httpd.conf \ + && sed -i 's/^#LoadModule proxy_http_module/LoadModule proxy_http_module/' /usr/local/apache2/conf/httpd.conf \ + && printf '\nInclude conf/extra/magistr-security.conf\nInclude conf/extra/magistr-proxy.conf\n' >> /usr/local/apache2/conf/httpd.conf \ + && chown -R www-data:www-data /usr/local/apache2/htdocs/ diff --git a/frontend/admin/css/components.css b/frontend/admin/css/components.css index b1e51ba..08662d7 100755 --- a/frontend/admin/css/components.css +++ b/frontend/admin/css/components.css @@ -317,6 +317,48 @@ line-height: 1.4; } +.dashboard-conflict-card { + display: flex; + align-items: flex-start; + gap: 0.75rem; + padding: 1rem; + border: 1px solid rgba(229, 231, 235, 0.1); + border-left: 4px solid var(--warning); + border-radius: var(--radius-sm); + background: rgba(245, 158, 11, 0.05); +} + +.dashboard-conflict-card--error { + border-left-color: var(--error); + background: rgba(239, 68, 68, 0.05); +} + +.dashboard-conflict-card__icon { + margin-top: 0.1rem; +} + +.dashboard-conflict-card__body { + flex: 1; +} + +.dashboard-conflict-card__body h4 { + margin: 0 0 0.25rem; + color: #d97706; + font-size: 0.95rem; + font-weight: 600; +} + +.dashboard-conflict-card--error h4 { + color: var(--error); +} + +.dashboard-conflict-card__body p { + margin: 0; + color: var(--text-main); + font-size: 0.85rem; + line-height: 1.4; +} + @media (max-width: 1200px) { .dashboard-metrics-grid { grid-template-columns: repeat(2, minmax(180px, 1fr)); @@ -927,6 +969,9 @@ border-radius: var(--radius-sm); background: rgba(10, 10, 15, 0.97); box-shadow: 0 14px 36px rgba(0, 0, 0, 0.35); + top: 50%; + left: 50%; + transform: translate(-50%, -50%); } .schedule-visual-context-menu[hidden] { @@ -2014,7 +2059,7 @@ } .calendar-week-col { - width: calc((100% - var(--calendar-day-head-width)) / var(--calendar-week-columns, 1)); + width: 22px; } .calendar-semester-table thead th { @@ -2122,6 +2167,8 @@ visibility: hidden; transform: translateY(4px) scale(0.98); transition: opacity 0.14s ease, transform 0.14s ease, visibility 0.14s ease; + right: 12px; + bottom: 12px; } .calendar-day-tooltip.visible { @@ -2219,6 +2266,7 @@ } .calendar-total-chip { + --chip-color: var(--accent); display: inline-flex; align-items: center; gap: 0.35rem; @@ -3626,6 +3674,15 @@ tbody tr:hover { transition: transform 0.4s ease; } +.theme-toggle-icon-enter { + animation: theme-toggle-icon-enter 0.4s ease; +} + +@keyframes theme-toggle-icon-enter { + from { opacity: 0; transform: rotate(-90deg) scale(0.5); } + to { opacity: 1; transform: rotate(0deg) scale(1); } +} + .theme-toggle:hover { background: var(--button-secondary-bg-hover); border-color: var(--button-secondary-border); diff --git a/frontend/admin/css/layout.css b/frontend/admin/css/layout.css index 207a7d1..8bf7322 100755 --- a/frontend/admin/css/layout.css +++ b/frontend/admin/css/layout.css @@ -482,3 +482,16 @@ pointer-events: auto; } } +.sidebar.collapsed .sidebar-section-title { + display: none !important; +} + +.sidebar-section-divider { + height: 1px; + background: rgba(229, 231, 235, 0.1); + margin: 0.5rem 1.5rem; +} + +.sidebar.collapsed .sidebar-section-divider { + margin: 0.5rem 0.5rem; +} diff --git a/frontend/admin/css/main.css b/frontend/admin/css/main.css index cbfb555..79b5c1c 100755 --- a/frontend/admin/css/main.css +++ b/frontend/admin/css/main.css @@ -107,4 +107,14 @@ body { animation: admin-ripple 0.6s linear; background-color: rgba(255, 255, 255, 0.3); pointer-events: none; + left: 50%; + top: 50%; + width: 24px; + height: 24px; + margin: -12px 0 0 -12px; +} + +.ripple-host { + position: relative; + overflow: hidden; } diff --git a/frontend/admin/index.html b/frontend/admin/index.html index 32d95df..000ab0b 100755 --- a/frontend/admin/index.html +++ b/frontend/admin/index.html @@ -5,10 +5,6 @@ Админ-панель - - - - @@ -16,19 +12,6 @@ - diff --git a/frontend/admin/js/api.js b/frontend/admin/js/api.js index ff34b4c..f936e44 100755 --- a/frontend/admin/js/api.js +++ b/frontend/admin/js/api.js @@ -1,23 +1,38 @@ -let refreshPromise = null; - -const AUTH_KEYS = ['token', 'role', 'departmentId', 'userId']; +import { + clearAuthState, + fetchWithAuth, + getAccessToken, + getAuthState, + logoutSession, + refreshAccessToken, + restoreSession, + storeAuthState +} from '../../auth-session.js'; export function getToken() { - return localStorage.getItem('token'); + return getAccessToken(); +} + +export function getSession() { + return getAuthState(); +} + +export async function initializeSession() { + return restoreSession(); } export function isAuthenticatedAsAdmin() { - const role = localStorage.getItem('role'); + const role = getAuthState()?.role; return getToken() && role === 'ADMIN'; } export function isAuthenticatedAsRole(expectedRole) { - const role = localStorage.getItem('role'); + const role = getAuthState()?.role; return getToken() && role === expectedRole; } export function isAuthenticatedAsAny(roles) { - const role = localStorage.getItem('role'); + const role = getAuthState()?.role; return getToken() && roles.includes(role); } @@ -44,7 +59,7 @@ export async function apiFetch(endpoint, method = 'GET', body = null, retryOnUna options.body = JSON.stringify(body); } - const response = await fetch(endpoint, options); + const response = await fetchWithAuth(endpoint, options); let data; try { @@ -54,12 +69,8 @@ export async function apiFetch(endpoint, method = 'GET', body = null, retryOnUna } if (response.status === 401 && retryOnUnauthorized) { - const refreshed = await refreshAccessToken(); - if (refreshed) { - return apiFetch(endpoint, method, body, false); - } clearAuthState(); - window.location.href = '/'; + window.location.replace('/'); } if (!response.ok) { @@ -72,28 +83,7 @@ export async function apiFetch(endpoint, method = 'GET', body = null, retryOnUna return data; } -export async function refreshAccessToken() { - if (refreshPromise) { - return refreshPromise; - } - - refreshPromise = (async () => { - const response = await fetch('/api/auth/refresh', { - method: 'POST', - credentials: 'same-origin' - }); - const data = await response.json().catch(() => null); - if (!response.ok || !data?.token) { - return false; - } - storeAuthState(data); - return true; - })().finally(() => { - refreshPromise = null; - }); - - return refreshPromise; -} +export { clearAuthState, refreshAccessToken, storeAuthState }; const cache = new Map(); @@ -139,32 +129,8 @@ export function clearCache() { } export async function logout() { - try { - await fetch('/api/auth/logout', { - method: 'POST', - credentials: 'same-origin' - }); - } catch (e) { - console.warn('Не удалось завершить серверную сессию:', e.message); - } finally { - clearAuthState(); - clearCache(); - } -} - -export function storeAuthState(data) { - if (data.token) localStorage.setItem('token', data.token); - if (data.role) localStorage.setItem('role', data.role); - if (data.departmentId !== undefined && data.departmentId !== null) { - localStorage.setItem('departmentId', data.departmentId); - } - if (data.userId !== undefined && data.userId !== null) { - localStorage.setItem('userId', data.userId); - } -} - -export function clearAuthState() { - AUTH_KEYS.forEach(key => localStorage.removeItem(key)); + await logoutSession(); + clearCache(); } export const api = { diff --git a/frontend/admin/js/dropdown.js b/frontend/admin/js/dropdown.js index 02f3f18..f3a290f 100644 --- a/frontend/admin/js/dropdown.js +++ b/frontend/admin/js/dropdown.js @@ -15,7 +15,7 @@ export class CustomSelect { this.layerParent = this.originalSelect.closest('.settings-card, .card'); // Hide original but keep it accessible for form submissions and JS - this.originalSelect.style.display = 'none'; + this.originalSelect.hidden = true; // Bind methods this.handleTriggerClick = this.handleTriggerClick.bind(this); @@ -114,11 +114,7 @@ export class CustomSelect { items.forEach(item => { if (item.classList.contains('placeholder-item')) return; const text = item.textContent.toLowerCase(); - if (text.includes(query)) { - item.style.display = ''; - } else { - item.style.display = 'none'; - } + item.hidden = !text.includes(query); }); }); searchLi.appendChild(searchInput); @@ -208,7 +204,7 @@ export class CustomSelect { const items = this.menu.querySelectorAll('.custom-select-item'); items.forEach(item => { if (!item.classList.contains('placeholder-item')) { - item.style.display = ''; + item.hidden = false; } }); setTimeout(() => { diff --git a/frontend/admin/js/main.js b/frontend/admin/js/main.js index bff3cf5..f554495 100755 --- a/frontend/admin/js/main.js +++ b/frontend/admin/js/main.js @@ -1,18 +1,17 @@ -// OTel: загружаем только на продакшене (не на localhost) -if (!['localhost', '127.0.0.1'].includes(window.location.hostname)) { - import('./otel.js').catch(e => console.warn('OTel init skipped:', e.message)); -} - -import { api, isAuthenticatedAsAny, logout } from './api.js'; -import { applyRippleEffect, closeAllDropdownsOnOutsideClick } from './utils.js'; +import { api, initializeSession, logout } from './api.js'; +import { applyRippleEffect, closeAllDropdownsOnOutsideClick, renderStatusMessage } from './utils.js'; import { startDropdownAutoObserver, initAllCustomDropdowns } from './dropdown.js'; +import { ADMIN_APP_ROLES, SETTINGS_ROLES, capabilitiesForRole } from './role-capabilities.js'; +import { initializeTelemetry } from '../../telemetry.js'; -const AUTHORIZED_ROLES = ['ADMIN', 'EDUCATION_OFFICE', 'DEPARTMENT', 'SCHEDULE_VIEWER']; -const currentRole = localStorage.getItem('role'); - -if (!isAuthenticatedAsAny(AUTHORIZED_ROLES)) { - window.location.href = '/'; +async function bootstrap() { +const session = await initializeSession(); +if (!session || !ADMIN_APP_ROLES.includes(session.role)) { + window.location.replace('/'); + return; } +const currentRole = session.role; +void initializeTelemetry(); // Global initialization for Custom Selects document.addEventListener('DOMContentLoaded', () => { @@ -120,25 +119,6 @@ const ROUTES = { }, }; -const ROLE_NAVIGATION = { - ADMIN: { - defaultTab: 'dashboard', - tabs: ['dashboard', 'teacher-requests', 'schedule', 'academic-calendar', 'auditorium-workload', 'schedule-view', 'classrooms', 'groups', 'university-structure', 'subjects', 'users'] - }, - EDUCATION_OFFICE: { - defaultTab: 'dashboard', - tabs: ['dashboard', 'schedule', 'academic-calendar', 'auditorium-workload', 'schedule-view', 'classrooms'] - }, - DEPARTMENT: { - defaultTab: 'department-workspace', - tabs: ['department-workspace', 'schedule-view'] - }, - SCHEDULE_VIEWER: { - defaultTab: 'schedule-view', - tabs: ['schedule-view'] - } -}; - let currentTab = null; // DOM Elements @@ -153,8 +133,8 @@ const btnLogout = document.getElementById('btn-logout'); const main = document.querySelector('.main'); const teacherRequestsNavBadge = document.getElementById('teacher-requests-nav-badge'); const teacherRequestsTitleBadge = document.getElementById('teacher-requests-title-badge'); -const roleNavigation = ROLE_NAVIGATION[currentRole] || ROLE_NAVIGATION.SCHEDULE_VIEWER; -const allowedTabs = new Set(roleNavigation.tabs); +const roleCapabilities = capabilitiesForRole(currentRole); +const allowedTabs = new Set(roleCapabilities.adminTabs); // Setup Global Effects applyRippleEffect(); @@ -258,8 +238,8 @@ async function switchTab(tab) { window.location.hash = tab; } } catch (e) { - appContent.innerHTML = `
Ошибка загрузки вкладки: ${e.message}
`; - console.error(e); + renderStatusMessage(appContent, 'Не удалось загрузить выбранную вкладку'); + console.error('Не удалось загрузить вкладку'); } // Close mobile menu if open @@ -274,7 +254,7 @@ function configureRoleInterface() { const settingsLink = document.querySelector('.settings-menu a[href="/admin/settings/"]'); if (settingsLink) { - settingsLink.hidden = !['ADMIN', 'EDUCATION_OFFICE'].includes(currentRole); + settingsLink.hidden = !SETTINGS_ROLES.includes(currentRole); } const firstAllowedTitle = { @@ -297,7 +277,7 @@ async function refreshTeacherRequestBadge(countOverride = null) { } catch (error) { if (teacherRequestsNavBadge) teacherRequestsNavBadge.hidden = true; if (teacherRequestsTitleBadge) teacherRequestsTitleBadge.hidden = true; - console.warn('Не удалось загрузить счётчик заявок:', error.message); + console.warn('Не удалось загрузить счётчик заявок'); } } @@ -323,7 +303,7 @@ document.addEventListener('teacherRequestsChanged', (event) => { }); const hashTab = window.location.hash.replace('#', ''); -switchTab(allowedTabs.has(hashTab) ? hashTab : roleNavigation.defaultTab); +switchTab(allowedTabs.has(hashTab) ? hashTab : roleCapabilities.defaultAdminTab); window.addEventListener('hashchange', () => { const hashTab = window.location.hash.replace('#', ''); @@ -331,3 +311,6 @@ window.addEventListener('hashchange', () => { switchTab(hashTab); } }); +} + +await bootstrap(); diff --git a/frontend/admin/js/otel.js b/frontend/admin/js/otel.js deleted file mode 100644 index 2de329d..0000000 --- a/frontend/admin/js/otel.js +++ /dev/null @@ -1,47 +0,0 @@ -import { WebTracerProvider } from 'https://esm.sh/@opentelemetry/sdk-trace-web@1.22.0'; -import { getWebAutoInstrumentations } from 'https://esm.sh/@opentelemetry/auto-instrumentations-web@0.37.0'; -import { OTLPTraceExporter } from 'https://esm.sh/@opentelemetry/exporter-trace-otlp-http@0.49.1'; -import { BatchSpanProcessor } from 'https://esm.sh/@opentelemetry/sdk-trace-base@1.22.0'; -import { registerInstrumentations } from 'https://esm.sh/@opentelemetry/instrumentation@0.49.1'; -import { ZoneContextManager } from 'https://esm.sh/@opentelemetry/context-zone@1.22.0'; -import { Resource } from 'https://esm.sh/@opentelemetry/resources@1.22.0'; -import { SemanticResourceAttributes } from 'https://esm.sh/@opentelemetry/semantic-conventions@1.22.0'; - -// Инициализация провайдера метрик и трейсов с именем сервиса -const provider = new WebTracerProvider({ - resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'magistr-frontend-admin', - }), -}); - -// Экспортер отправляет данные на относительный путь /otel/v1/traces. -// На проде Caddy перехватит этот запрос и проксирует в SigNoz OTLP Collector (порт 4318). -const traceExporter = new OTLPTraceExporter({ - url: window.location.origin + '/otel/v1/traces', -}); - -// Использование BatchSpanProcessor для буферизации трейсов перед отправкой -provider.addSpanProcessor(new BatchSpanProcessor(traceExporter)); - -// Использование ZoneContextManager для поддержки асинхронных операций (Promise, setTimeout, etc) -provider.register({ - contextManager: new ZoneContextManager(), -}); - -// Регистрация авто-инструментаций для бразуера (document-load, xml-http-request, fetch, history, etc) -registerInstrumentations({ - instrumentations: [ - getWebAutoInstrumentations({ - '@opentelemetry/instrumentation-fetch': { - propagateTraceHeaderCorsUrls: /.*/, - clearTimingResources: true, - }, - '@opentelemetry/instrumentation-xml-http-request': { - propagateTraceHeaderCorsUrls: /.*/, - clearTimingResources: true, - }, - }), - ], -}); - -console.log('OpenTelemetry Web SDK initialized successfully.'); diff --git a/frontend/admin/js/role-capabilities.js b/frontend/admin/js/role-capabilities.js new file mode 100644 index 0000000..bcc5630 --- /dev/null +++ b/frontend/admin/js/role-capabilities.js @@ -0,0 +1,46 @@ +const capabilities = { + ADMIN: { + defaultAdminTab: 'dashboard', + adminTabs: ['dashboard', 'teacher-requests', 'schedule', 'academic-calendar', 'auditorium-workload', 'schedule-view', 'classrooms', 'groups', 'university-structure', 'subjects', 'users'], + defaultSettingsTab: 'general', + settingsTabs: ['general', 'time-slots', 'database', 'edu-forms'] + }, + EDUCATION_OFFICE: { + defaultAdminTab: 'dashboard', + adminTabs: ['dashboard', 'schedule', 'academic-calendar', 'auditorium-workload', 'schedule-view', 'classrooms'], + defaultSettingsTab: 'time-slots', + settingsTabs: ['time-slots', 'edu-forms'] + }, + DEPARTMENT: { + defaultAdminTab: 'department-workspace', + adminTabs: ['department-workspace', 'schedule-view'], + defaultSettingsTab: null, + settingsTabs: [] + }, + SCHEDULE_VIEWER: { + defaultAdminTab: 'schedule-view', + adminTabs: ['schedule-view'], + defaultSettingsTab: null, + settingsTabs: [] + } +}; + +export const ROLE_CAPABILITIES = Object.freeze( + Object.fromEntries(Object.entries(capabilities).map(([role, value]) => [ + role, + Object.freeze({ + ...value, + adminTabs: Object.freeze([...value.adminTabs]), + settingsTabs: Object.freeze([...value.settingsTabs]) + }) + ])) +); + +export const ADMIN_APP_ROLES = Object.freeze(Object.keys(ROLE_CAPABILITIES)); +export const SETTINGS_ROLES = Object.freeze( + ADMIN_APP_ROLES.filter(role => ROLE_CAPABILITIES[role].settingsTabs.length > 0) +); + +export function capabilitiesForRole(role) { + return ROLE_CAPABILITIES[role] || null; +} diff --git a/frontend/admin/js/utils.js b/frontend/admin/js/utils.js index 4b4b6a7..bfe420f 100755 --- a/frontend/admin/js/utils.js +++ b/frontend/admin/js/utils.js @@ -25,24 +25,44 @@ export function hideAlert(elementId) { el.textContent = ''; } +/** Форматирует календарную дату по локальным компонентам без UTC-сдвига. */ +export function formatLocalDate(date) { + if (!(date instanceof Date) || Number.isNaN(date.getTime())) { + throw new TypeError('Ожидалась корректная дата'); + } + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; +} + +export function renderStatusMessage(container, message, className = 'form-alert error') { + if (!container) return; + const element = document.createElement('div'); + element.className = className; + element.textContent = message; + container.replaceChildren(element); +} + +export function renderTableMessage(tbody, columnCount, message) { + if (!tbody) return; + const row = document.createElement('tr'); + const cell = document.createElement('td'); + cell.colSpan = columnCount; + cell.className = 'loading-row'; + cell.textContent = message; + row.appendChild(cell); + tbody.replaceChildren(row); +} + export function applyRippleEffect() { document.addEventListener('click', function (e) { const btn = e.target.closest('.btn-primary, .btn-danger, .btn-danger-subtle, .btn-logout'); if (!btn) return; - const rect = btn.getBoundingClientRect(); - const x = e.clientX - rect.left; - const y = e.clientY - rect.top; - const ripple = document.createElement('span'); ripple.classList.add('ripple'); - ripple.style.left = `${x}px`; - ripple.style.top = `${y}px`; - - if (getComputedStyle(btn).position === 'static') { - btn.style.position = 'relative'; - } - btn.style.overflow = 'hidden'; + btn.classList.add('ripple-host'); btn.appendChild(ripple); diff --git a/frontend/admin/js/views/academic-calendar.js b/frontend/admin/js/views/academic-calendar.js index 2116d6c..6becd8a 100644 --- a/frontend/admin/js/views/academic-calendar.js +++ b/frontend/admin/js/views/academic-calendar.js @@ -801,7 +801,7 @@ export async function initAcademicCalendar() { const cellByWeekAndDay = new Map(rows.map(row => [`${row.weekNumber}:${row.dayOfWeek}`, row])); return `
- +
${weekSlots.map(() => '').join('')} @@ -842,7 +842,6 @@ export async function initAcademicCalendar() { const dayName = shortDayLabel(row.dayOfWeek); const activity = activityById(selected) || activityTypes[0] || {}; const code = activity.code || row.activityCode || 'Т'; - const color = activity.colorCode || '#64748b'; return ` `; + renderTableMessage(requestsTbody, 7, 'Не удалось загрузить заявки преподавателей'); updateCount(0); } } @@ -44,10 +44,10 @@ export async function initTeacherRequests() { `).join('')} - + - + `; + renderTableMessage(requestsTbody, 7, 'Не удалось загрузить заявки преподавателей'); } } diff --git a/frontend/admin/js/views/university-structure.js b/frontend/admin/js/views/university-structure.js index c2ae22d..605121c 100644 --- a/frontend/admin/js/views/university-structure.js +++ b/frontend/admin/js/views/university-structure.js @@ -335,7 +335,7 @@ export async function initUniversityStructure() { profileIdInput.value = ''; profileFormTitle.textContent = 'Создание профиля'; btnSaveProfile.textContent = 'Создать'; - btnCancelProfileEdit.style.display = 'none'; + btnCancelProfileEdit.hidden = true; hideAlert('manage-profile-alert'); } @@ -384,7 +384,7 @@ export async function initUniversityStructure() { profileDescInput.value = profile.description || ''; profileFormTitle.textContent = 'Редактирование профиля'; btnSaveProfile.textContent = 'Сохранить'; - btnCancelProfileEdit.style.display = 'inline-block'; + btnCancelProfileEdit.hidden = false; hideAlert('manage-profile-alert'); return; } @@ -451,7 +451,7 @@ export async function initUniversityStructure() { tabProfileSpecSelect.disabled = false; mainProfileFormTitle.textContent = 'Создание профиля'; btnTabSaveProfile.textContent = 'Создать'; - btnTabCancelProfileEdit.style.display = 'none'; + btnTabCancelProfileEdit.hidden = true; hideAlert('tab-profile-alert'); tabProfileSpecSelect.dispatchEvent(new Event('change')); } @@ -507,7 +507,7 @@ export async function initUniversityStructure() { mainProfileFormTitle.textContent = 'Редактирование профиля'; btnTabSaveProfile.textContent = 'Сохранить'; - btnTabCancelProfileEdit.style.display = 'inline-block'; + btnTabCancelProfileEdit.hidden = false; hideAlert('tab-profile-alert'); createProfileTabForm.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); diff --git a/frontend/admin/settings/index.html b/frontend/admin/settings/index.html index 7766864..e1aa02b 100644 --- a/frontend/admin/settings/index.html +++ b/frontend/admin/settings/index.html @@ -5,10 +5,6 @@ Настройки — Magistr - - - - diff --git a/frontend/admin/settings/js/main.js b/frontend/admin/settings/js/main.js index 9e5cf45..a3fe82a 100644 --- a/frontend/admin/settings/js/main.js +++ b/frontend/admin/settings/js/main.js @@ -1,13 +1,17 @@ // Основной модуль страницы настроек import { startDropdownAutoObserver, initAllCustomDropdowns } from '../../js/dropdown.js'; +import { renderStatusMessage } from '../../js/utils.js'; +import { SETTINGS_ROLES, capabilitiesForRole } from '../../js/role-capabilities.js'; -import { getToken } from '../../js/api.js'; +import { initializeSession } from '../../js/api.js'; -// Проверка авторизации -const role = localStorage.getItem('role'); -if (!getToken() || !['ADMIN', 'EDUCATION_OFFICE'].includes(role)) { - window.location.href = '/'; +async function bootstrap() { +const session = await initializeSession(); +if (!session || !SETTINGS_ROLES.includes(session.role)) { + window.location.replace('/'); + return; } +const role = session.role; // Глобальная инициализация кастомных списков document.addEventListener('DOMContentLoaded', () => { @@ -44,12 +48,9 @@ const ROUTES = { }, }; -const ROLE_TABS = { - ADMIN: ['general', 'time-slots', 'database', 'edu-forms'], - EDUCATION_OFFICE: ['time-slots', 'edu-forms'] -}; -const allowedTabs = new Set(ROLE_TABS[role] || []); -const defaultTab = role === 'EDUCATION_OFFICE' ? 'time-slots' : 'general'; +const roleCapabilities = capabilitiesForRole(role); +const allowedTabs = new Set(roleCapabilities.settingsTabs); +const defaultTab = roleCapabilities.defaultSettingsTab; let currentTab = null; @@ -129,8 +130,8 @@ async function switchTab(tab) { currentTab = tab; } catch (e) { - appContent.innerHTML = `
Ошибка загрузки: ${e.message}
`; - console.error(e); + renderStatusMessage(appContent, 'Не удалось загрузить раздел настроек'); + console.error('Не удалось загрузить раздел настроек'); } // Закрываем мобильное меню после перехода @@ -140,3 +141,6 @@ async function switchTab(tab) { // Вкладка по умолчанию switchTab(defaultTab); +} + +await bootstrap(); diff --git a/frontend/admin/settings/js/views/database.js b/frontend/admin/settings/js/views/database.js index cbf0dfc..7ad3544 100644 --- a/frontend/admin/settings/js/views/database.js +++ b/frontend/admin/settings/js/views/database.js @@ -1,5 +1,5 @@ import { api } from '../../../js/api.js'; -import { escapeHtml, showAlert, hideAlert } from '../../../js/utils.js'; +import { escapeHtml, showAlert, hideAlert, renderStatusMessage, renderTableMessage } from '../../../js/utils.js'; export async function initDatabase() { const tenantsTbody = document.getElementById('tenants-tbody'); @@ -12,8 +12,8 @@ export async function initDatabase() { try { const data = await api.get('/api/database/status'); const statusBadge = data.connected - ? 'Online' - : 'Offline'; + ? 'Доступно' + : 'Недоступно'; statusInfo.innerHTML = `
@@ -36,7 +36,7 @@ export async function initDatabase() {
`; } catch (e) { - statusInfo.innerHTML = `
Ошибка загрузки статуса: ${e.message}
`; + renderStatusMessage(statusInfo, 'Не удалось загрузить статус подключения'); } } @@ -46,7 +46,7 @@ export async function initDatabase() { const tenants = await api.get('/api/database/tenants'); renderTenantsTable(tenants); } catch (e) { - tenantsTbody.innerHTML = ``; + renderTableMessage(tenantsTbody, 6, 'Не удалось загрузить список тенантов'); } } @@ -58,8 +58,8 @@ export async function initDatabase() { tenantsTbody.innerHTML = tenants.map(t => { const statusBadge = t.connected - ? 'Online' - : 'Offline'; + ? 'Доступно' + : 'Недоступно'; return ` @@ -96,7 +96,7 @@ export async function initDatabase() { showAlert('add-tenant-alert', `✗ ${result.message}`, 'error'); } } catch (e) { - showAlert('add-tenant-alert', `Ошибка: ${e.message}`, 'error'); + showAlert('add-tenant-alert', 'Не удалось проверить подключение', 'error'); } finally { btnTest.textContent = 'Тест'; btnTest.disabled = false; @@ -122,7 +122,7 @@ export async function initDatabase() { try { const result = await api.post('/api/database/tenants', { name, domain, url, username, password }); if (result.success) { - showAlert('add-tenant-alert', `Тенант "${escapeHtml(domain)}" добавлен!`, 'success'); + showAlert('add-tenant-alert', `Тенант «${domain}» добавлен`, 'success'); addTenantForm.reset(); loadTenants(); loadStatus(); @@ -130,7 +130,7 @@ export async function initDatabase() { showAlert('add-tenant-alert', result.message, 'error'); } } catch (e) { - showAlert('add-tenant-alert', `Ошибка: ${e.message}`, 'error'); + showAlert('add-tenant-alert', 'Не удалось добавить тенант', 'error'); } }); @@ -147,7 +147,7 @@ export async function initDatabase() { loadTenants(); loadStatus(); } catch (e) { - alert(`Ошибка: ${e.message}`); + alert('Не удалось удалить тенант'); } }); diff --git a/frontend/admin/settings/js/views/edu-forms.js b/frontend/admin/settings/js/views/edu-forms.js index 752fe39..e2f4024 100644 --- a/frontend/admin/settings/js/views/edu-forms.js +++ b/frontend/admin/settings/js/views/edu-forms.js @@ -8,7 +8,7 @@ export async function fetchEducationForms() { allEducationForms = await api.get('/api/education-forms'); return allEducationForms; } catch (e) { - console.error("Failed to fetch education forms", e); + console.error('Не удалось загрузить формы обучения'); return []; } } diff --git a/frontend/admin/settings/js/views/time-slots.js b/frontend/admin/settings/js/views/time-slots.js index 3df9480..4bbe0e1 100644 --- a/frontend/admin/settings/js/views/time-slots.js +++ b/frontend/admin/settings/js/views/time-slots.js @@ -62,8 +62,8 @@ export async function initTimeSlotsSettings() { form?.addEventListener('submit', saveSlot); resetButton?.addEventListener('click', resetForm); refreshButton?.addEventListener('click', loadAll); - startInput?.addEventListener('change', fillDurationIfEmpty); - endInput?.addEventListener('change', fillDurationIfEmpty); + startInput?.addEventListener('change', calculateDuration); + endInput?.addEventListener('change', calculateDuration); tbody?.addEventListener('click', handleSlotTableClick); await loadAll(); @@ -206,8 +206,7 @@ export async function initTimeSlotsSettings() { orderNumber: Number(orderInput.value), scopeId: activeScopeId, startTime: startInput.value, - endTime: endInput.value, - durationMinutes: durationInput.value ? Number(durationInput.value) : null + endTime: endInput.value }; try { @@ -272,8 +271,9 @@ export async function initTimeSlotsSettings() { } } - function fillDurationIfEmpty() { - if (durationInput.value || !startInput.value || !endInput.value || startInput.value >= endInput.value) return; + function calculateDuration() { + durationInput.value = ''; + if (!startInput.value || !endInput.value || startInput.value >= endInput.value) return; const [startHour, startMinute] = startInput.value.split(':').map(Number); const [endHour, endMinute] = endInput.value.split(':').map(Number); durationInput.value = String((endHour * 60 + endMinute) - (startHour * 60 + startMinute)); diff --git a/frontend/admin/settings/views/database.html b/frontend/admin/settings/views/database.html index e7cca00..dab0aca 100644 --- a/frontend/admin/settings/views/database.html +++ b/frontend/admin/settings/views/database.html @@ -55,11 +55,11 @@
- +
- +
diff --git a/frontend/admin/views/users.html b/frontend/admin/views/users.html index a1f6fbc..9670504 100755 --- a/frontend/admin/views/users.html +++ b/frontend/admin/views/users.html @@ -5,11 +5,11 @@
- +
- +
diff --git a/frontend/auth-session.js b/frontend/auth-session.js new file mode 100644 index 0000000..1f33894 --- /dev/null +++ b/frontend/auth-session.js @@ -0,0 +1,119 @@ +const LEGACY_AUTH_KEYS = ['token', 'role', 'departmentId', 'userId']; + +let accessToken = null; +let authState = null; +let refreshPromise = null; + +purgeLegacyAuthStorage(); + +export function getAccessToken() { + return accessToken; +} + +export function getAuthState() { + return authState ? { ...authState } : null; +} + +export function storeAuthState(data) { + if (!data?.token || !data?.role) { + clearAuthState(); + return null; + } + + accessToken = data.token; + authState = { + role: data.role, + departmentId: normalizeOptionalId(data.departmentId), + userId: normalizeOptionalId(data.userId), + redirect: typeof data.redirect === 'string' ? data.redirect : '/' + }; + return getAuthState(); +} + +export function clearAuthState() { + accessToken = null; + authState = null; +} + +export async function restoreSession() { + if (accessToken && authState) { + return getAuthState(); + } + + const refreshed = await refreshAccessToken(); + return refreshed ? getAuthState() : null; +} + +export async function refreshAccessToken() { + if (refreshPromise) { + return refreshPromise; + } + + refreshPromise = (async () => { + let response; + try { + response = await fetch('/api/auth/refresh', { + method: 'POST', + credentials: 'same-origin' + }); + } catch (error) { + clearAuthState(); + return false; + } + + const data = await response.json().catch(() => null); + if (!response.ok || !storeAuthState(data)) { + clearAuthState(); + return false; + } + return true; + })().finally(() => { + refreshPromise = null; + }); + + return refreshPromise; +} + +export async function fetchWithAuth(endpoint, options = {}, retryOnUnauthorized = true) { + const headers = new Headers(options.headers || {}); + if (accessToken) { + headers.set('Authorization', `Bearer ${accessToken}`); + } + + const response = await fetch(endpoint, { + ...options, + headers, + credentials: 'same-origin' + }); + + if (response.status === 401 && retryOnUnauthorized && await refreshAccessToken()) { + return fetchWithAuth(endpoint, options, false); + } + return response; +} + +export async function logoutSession() { + try { + await fetch('/api/auth/logout', { + method: 'POST', + credentials: 'same-origin' + }); + } catch (error) { + console.warn('Не удалось завершить серверную сессию'); + } finally { + clearAuthState(); + } +} + +function purgeLegacyAuthStorage() { + try { + LEGACY_AUTH_KEYS.forEach(key => localStorage.removeItem(key)); + LEGACY_AUTH_KEYS.forEach(key => sessionStorage.removeItem(key)); + } catch (error) { + console.warn('Не удалось очистить устаревшие данные авторизации в браузере'); + } +} + +function normalizeOptionalId(value) { + return value === undefined || value === null || value === '' ? null : String(value); +} diff --git a/frontend/department/index.html b/frontend/department/index.html index 4c02630..06f6b50 100644 --- a/frontend/department/index.html +++ b/frontend/department/index.html @@ -7,8 +7,6 @@ - +

Перейти в кабинет кафедры

diff --git a/frontend/edu-office/index.html b/frontend/edu-office/index.html index 66e6d71..f09f648 100644 --- a/frontend/edu-office/index.html +++ b/frontend/edu-office/index.html @@ -7,8 +7,6 @@ - +

Перейти в кабинет учебного отдела

diff --git a/frontend/index.html b/frontend/index.html index 3799de7..3a9e3aa 100755 --- a/frontend/index.html +++ b/frontend/index.html @@ -5,9 +5,6 @@ Авторизация - - - @@ -82,6 +79,6 @@ - + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..3475db2 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,949 @@ +{ + "name": "magistr-frontend-checks", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "magistr-frontend-checks", + "devDependencies": { + "@opentelemetry/api": "1.9.0", + "@opentelemetry/auto-instrumentations-web": "0.65.0", + "@opentelemetry/context-zone": "2.9.0", + "@opentelemetry/exporter-trace-otlp-http": "0.220.0", + "@opentelemetry/instrumentation": "0.220.0", + "@opentelemetry/resources": "2.9.0", + "@opentelemetry/sdk-trace-base": "2.9.0", + "@opentelemetry/sdk-trace-web": "2.9.0", + "@opentelemetry/semantic-conventions": "1.43.0", + "esbuild": "0.25.12", + "zone.js": "0.16.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.220.0.tgz", + "integrity": "sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/auto-instrumentations-web": { + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/auto-instrumentations-web/-/auto-instrumentations-web-0.65.0.tgz", + "integrity": "sha512-POJmrp9P4xSw0w5HOZLxRQe/bS3TkuEUSJnPo/+S75FF9yrEoUhCkUahWYwqcjsMIZmer1tsbW1gjvkx2mZsgQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.220.0", + "@opentelemetry/instrumentation-document-load": "^0.65.0", + "@opentelemetry/instrumentation-fetch": "^0.220.0", + "@opentelemetry/instrumentation-user-interaction": "^0.64.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.220.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0" + } + }, + "node_modules/@opentelemetry/context-zone": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-2.9.0.tgz", + "integrity": "sha512-dUH2j6/jh5hgsAFvEqx+9MIjdi8OzBK1u8K6qsb2HE2R1AiR+u00GWCxbDts30JggTX4rwA8YNLO2xF5LC6EFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-zone-peer-dep": "2.9.0", + "zone.js": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + } + }, + "node_modules/@opentelemetry/context-zone-peer-dep": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-2.9.0.tgz", + "integrity": "sha512-xECINyl1UHLNbaF1my3K5AqJGyox1ysLidplInAb/XTfBxc2CLDRuS4rUxiJs8irW/PkEDujdc/IPUqkJFnrzg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0", + "zone.js": "^0.10.2 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.9.0.tgz", + "integrity": "sha512-m2nckMT80NnmjTYSPjJQObBJ+8dgkoajEOUbznL8AHZ3T3yHRk2P7gI1PhEBc1+lOnrYE9UWrWHqJDsmqjmNbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.220.0.tgz", + "integrity": "sha512-/+ExB3lRkf+erv4PnoywyL7RHKITidxtUpUTS55k7OQ0dB42S7gEF1gry7swb9MSm1hYLUhJg4QQh9W8SpwwqA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/otlp-exporter-base": "0.220.0", + "@opentelemetry/otlp-transformer": "0.220.0", + "@opentelemetry/resources": "2.9.0", + "@opentelemetry/sdk-trace": "2.9.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.220.0.tgz", + "integrity": "sha512-xQx3E2WxP1mDvKzxLxX+CTCtNLa560YJZ3087qYHerl2YmiKpv7AH+dAy7vmx+eVrZ5BwhfWUAVoKOoxCNHcpw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.220.0", + "import-in-the-middle": "^3.0.0", + "require-in-the-middle": "^8.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-document-load": { + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-document-load/-/instrumentation-document-load-0.65.0.tgz", + "integrity": "sha512-xAhNXUIywjqmaSkpimsuUpRr0QYebMyTn0IJS9wFWYVLyH+2Q5IYWYys4IrT60foeyf2gyFmRBQyHupblNdaMA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.220.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fetch": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.220.0.tgz", + "integrity": "sha512-9LW+zgvKK6kqojB0GVqbOCRGBUWiatHPmRTusjSVdwYCImIgJRrJTKu6WhjHdejJSjRS/mGsw/w4ETZBqav3kQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/instrumentation": "0.220.0", + "@opentelemetry/sdk-trace-web": "2.9.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-user-interaction": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-user-interaction/-/instrumentation-user-interaction-0.64.0.tgz", + "integrity": "sha512-y9P9CP8WzuJBZL/h4rSa0jhpDlHTFWiuGhe/xxfyvHyA1UuI4QW2ZcsdFdQDak29J20tGZzkAoi6EqZDRU7xVg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.220.0", + "@opentelemetry/sdk-trace-web": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0", + "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0" + } + }, + "node_modules/@opentelemetry/instrumentation-xml-http-request": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.220.0.tgz", + "integrity": "sha512-9FTY+kT3z5D8f7dC+Tubd4oJTu6tOGlQmws5J8e7DLMeIUwpWmLquRFV2BuUShiAPxTMGqqsZnuT3CVVbTu0JA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/instrumentation": "0.220.0", + "@opentelemetry/sdk-trace-web": "2.9.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.220.0.tgz", + "integrity": "sha512-CXYo8UD5Mn9YbgebO2EL4wejtA+gxLmLiu6HCk2KH2BR7XhFN6/6p1UlCb23DYCjeYkndevLHuejCCN1yx4+OQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/otlp-transformer": "0.220.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.220.0.tgz", + "integrity": "sha512-lXGrv7KXZ0gNH9SVNUaa6vv6phVYGvJxfXAlMbzbakiXru75f5MZl8Z7oqiMMQD77riVHJCFlQvbZs/VVN2/4A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.220.0", + "@opentelemetry/core": "2.9.0", + "@opentelemetry/resources": "2.9.0", + "@opentelemetry/sdk-logs": "0.220.0", + "@opentelemetry/sdk-metrics": "2.9.0", + "@opentelemetry/sdk-trace": "2.9.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.9.0.tgz", + "integrity": "sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.220.0.tgz", + "integrity": "sha512-WywcTkQtv2iNmt+6y5Kcd4rzvx9bLVsBa2Nwcmg01IUaBTkTow3W4d9KE5vNBpEDtb9tp21WcRBY/lANRrApYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.220.0", + "@opentelemetry/core": "2.9.0", + "@opentelemetry/resources": "2.9.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.9.0.tgz", + "integrity": "sha512-Xx8RGS4H5XEBl01WuCreMIpiah9cCXMbSkeuIePPdD2cUpq/vUzYmj8E/MK1OsbOc93FuAD4jfn2WOacKwLn7Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/resources": "2.9.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace/-/sdk-trace-2.9.0.tgz", + "integrity": "sha512-sGA19HvtrrSKYsseHphluH6j3p6Xa3fqc7c7y8f/7mYWejc1lyDFcpSdD1kYa50HCLUeEo4zA5bW0pniaPszuw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/resources": "2.9.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.9.0.tgz", + "integrity": "sha512-cp9zmTl62R8PJrpvFcmc8N2JQU/xfa0S+61q511Nji+QxCfZ8Ifvg7H27G8cANe4crg4RTrWsVvanHiXjSp6ag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/resources": "2.9.0", + "@opentelemetry/sdk-trace": "2.9.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-web": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-2.9.0.tgz", + "integrity": "sha512-LS4XlzOK3e6YYdt84m15AmRR04121rKipmifi4XFZToH1h75f7F2bzHLbB1NMgIEYJ0jSKYm4VsK5mws/5kfTQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.9.0", + "@opentelemetry/sdk-trace-base": "2.9.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz", + "integrity": "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", + "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/import-in-the-middle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.3.1.tgz", + "integrity": "sha512-0rymlHSFLwZ0ixx8DaQkoIyZojJPY2a0K2nEYslhKJ6jIYO/m0IcCb7iQsFPmS7WmKwISZiIrv5Icstrw/CmqA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "cjs-module-lexer": "^2.2.0", + "es-module-lexer": "^2.2.0", + "module-details-from-path": "^1.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/require-in-the-middle": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz", + "integrity": "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3" + }, + "engines": { + "node": ">=9.3.0 || >=8.10.0 <9.0.0" + } + }, + "node_modules/zone.js": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.16.0.tgz", + "integrity": "sha512-LqLPpIQANebrlxY6jKcYKdgN5DTXyyHAKnnWWjE5pPfEQ4n7j5zn7mOEEpwNZVKGqx3kKKmvplEmoBrvpgROTA==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/frontend/package.json b/frontend/package.json index 9db5f87..a8d0e3d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -6,7 +6,22 @@ "node": ">=18" }, "scripts": { + "build": "npm run build:vendor", + "build:vendor": "node scripts/build-vendor.mjs", "test": "node --test tests/*.test.mjs", - "check": "node --check admin/js/dashboard-conflicts.js && node --check admin/js/views/dashboard.js && node --test tests/*.test.mjs" + "check": "node --check auth-session.js && node --check telemetry.js && node --check script.js && node --check admin/js/api.js && node --check admin/js/main.js && node --check teacher/app.js && node --check student/app.js && node --test tests/*.test.mjs" + }, + "devDependencies": { + "@opentelemetry/api": "1.9.0", + "@opentelemetry/auto-instrumentations-web": "0.65.0", + "@opentelemetry/context-zone": "2.9.0", + "@opentelemetry/exporter-trace-otlp-http": "0.220.0", + "@opentelemetry/instrumentation": "0.220.0", + "@opentelemetry/resources": "2.9.0", + "@opentelemetry/sdk-trace-base": "2.9.0", + "@opentelemetry/sdk-trace-web": "2.9.0", + "@opentelemetry/semantic-conventions": "1.43.0", + "esbuild": "0.25.12", + "zone.js": "0.16.0" } } diff --git a/frontend/proxy.conf b/frontend/proxy.conf new file mode 100644 index 0000000..c64c464 --- /dev/null +++ b/frontend/proxy.conf @@ -0,0 +1,10 @@ +ProxyRequests Off +ProxyPreserveHost On + +# Same-origin API для локального Docker Compose. +ProxyPass "/api" "http://backend:8080/api" connectiontimeout=5 timeout=60 retry=0 +ProxyPassReverse "/api" "http://backend:8080/api" + +# Локальная диагностика без публикации backend-порта на хосте. +ProxyPass "/actuator/health" "http://backend:8080/actuator/health" connectiontimeout=5 timeout=10 retry=0 +ProxyPassReverse "/actuator/health" "http://backend:8080/actuator/health" diff --git a/frontend/script.js b/frontend/script.js index c264a8c..125a6bf 100755 --- a/frontend/script.js +++ b/frontend/script.js @@ -1,34 +1,11 @@ +import { clearAuthState, storeAuthState } from './auth-session.js'; +import { initializeTelemetry } from './telemetry.js'; + +void initializeTelemetry(); + (() => { 'use strict'; - // --- OpenTelemetry Frontend Instrumentation --- - // Загружаем OTel только на продакшене (не на localhost) - if (!['localhost', '127.0.0.1'].includes(window.location.hostname)) { - import('https://esm.sh/@opentelemetry/sdk-trace-web').then(async ({ WebTracerProvider, BatchSpanProcessor }) => { - const { OTLPTraceExporter } = await import('https://esm.sh/@opentelemetry/exporter-trace-otlp-http'); - const { getWebAutoInstrumentations } = await import('https://esm.sh/@opentelemetry/auto-instrumentations-web'); - const { registerInstrumentations } = await import('https://esm.sh/@opentelemetry/instrumentation'); - const { Resource } = await import('https://esm.sh/@opentelemetry/resources'); - - const exporter = new OTLPTraceExporter({ - url: window.location.origin + '/otel/v1/traces' - }); - - const provider = new WebTracerProvider({ - resource: new Resource({ 'service.name': 'magistr-frontend' }), - }); - - provider.addSpanProcessor(new BatchSpanProcessor(exporter)); - provider.register(); - - registerInstrumentations({ - instrumentations: [getWebAutoInstrumentations()] - }); - console.log("SigNoz (OpenTelemetry) инициализирован во фронтенде."); - }).catch(e => console.error("Ошибка загрузки OTel:", e)); - } - // ---------------------------------------------- - const form = document.getElementById('login-form'); const usernameInput = document.getElementById('username'); const passwordInput = document.getElementById('password'); @@ -42,14 +19,8 @@ // Ripple effect btnSubmit.addEventListener('click', function(e) { - const rect = this.getBoundingClientRect(); - const x = e.clientX - rect.left; - const y = e.clientY - rect.top; - const ripple = document.createElement('span'); ripple.classList.add('ripple'); - ripple.style.left = `${x}px`; - ripple.style.top = `${y}px`; this.appendChild(ripple); @@ -141,15 +112,8 @@ if (response.ok) { showAlert('Вход выполнен успешно!', 'success'); - - localStorage.removeItem('token'); - localStorage.removeItem('role'); - localStorage.removeItem('departmentId'); - localStorage.removeItem('userId'); - if (data.token) localStorage.setItem('token', data.token); - if (data.role) localStorage.setItem('role', data.role); - if (data.departmentId) localStorage.setItem('departmentId', data.departmentId); - if (data.userId) localStorage.setItem('userId', data.userId); + clearAuthState(); + storeAuthState(data); const redirect = data.redirect || '/'; setTimeout(() => { window.location.href = redirect; }, 400); diff --git a/frontend/scripts/build-vendor.mjs b/frontend/scripts/build-vendor.mjs new file mode 100644 index 0000000..21eeac9 --- /dev/null +++ b/frontend/scripts/build-vendor.mjs @@ -0,0 +1,10 @@ +import { build } from 'esbuild'; + +await build({ + entryPoints: ['telemetry/otel-entry.js'], + bundle: true, + format: 'esm', + platform: 'browser', + target: ['es2022'], + outfile: 'dist/vendor/otel.js' +}); diff --git a/frontend/security.conf b/frontend/security.conf new file mode 100644 index 0000000..f946835 --- /dev/null +++ b/frontend/security.conf @@ -0,0 +1,5 @@ +Header always set Content-Security-Policy "default-src 'self'; base-uri 'self'; connect-src 'self'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src 'self' data:; object-src 'none'; script-src 'self'; script-src-attr 'none'; style-src 'self'; style-src-attr 'unsafe-hashes' 'sha256-Ap89pw6Ru+bI6/fvSZrLRErTB0Vlrkjhr+GBUApiIWk=' 'sha256-SIXM20kwgT/LFCXoUieNCZ2zVEtDEJLBMFkzuqTDiEs=' 'sha256-Gg5P79IEFo2naj0u+NnV/XRNhPpmG+qszzSTXOPUj1A=' 'sha256-TnG5YZ63fruUpLo7bQSZmwEy7iaTHxpbBhwz5vu9uSg=' 'sha256-XzNZtBQ5RVU4zPLtfvXv2K6GCBeoCM2HUIIQSlEaULA=' 'sha256-nULJId45lkSYkp9G7rs5Ucrzkl/RvOYcmolE2LAWGy0=' 'sha256-zxhlsg7XWHprQXI4sW8mCF1bkpJgB7ybVJwWOPVLGRE=' 'sha256-K0Xrmwt6pAGUrGVS8MwRZJExIhykcVQ8SI1byCheVwc=' 'sha256-4YmfPYnVNL8IzZiGb/0iwhc6yUgCF19Y33KOfCPVmCw=' 'sha256-iNZSE5e3vOhMyMQkK5rpl8610z7E4ZtyqgP2Svv49PU=' 'sha256-MhqAPfMbUlw1OEgW5/QfCxo+BaJmIHx/8235W2X3bVI=' 'sha256-foNl8DYrtM07r6llOCuEQkuDC3P+Z9AhhM6r+IJDuvE=' 'sha256-TZ/59DFnpMwCdrSuMVhcjfKS2+Uktb1ikcGdbop+LrY=' 'sha256-bouNTXMWL7OeoflvcP2VmNuyQ00CJIpU091rlJcNh0o=' 'sha256-SWPOf/xgJrjLW+pINXE1lz0iy53MqwWqXeVJ6eC/feI=' 'sha256-1N/gWxc/W4gFlj8zf/p3KcADNes7ROePFaTOWiqwF4E=' 'sha256-biLFinpqYMtWHmXfkA1BPeCY0/fNt46SAZ+BBk5YUog=' 'sha256-/dAGmjflKS5r+hQF1hmagGz5QABPHf+YFadZo1ne2rc=' 'sha256-Xrwk3bvnw8h9hvxxkkKe/tGHcDa4FiyIkZgQh7zZ5OM=' 'sha256-yg9xEhg50yeViXuIpHVfY4ORsctQahuBNAF5elcPo2o=' 'sha256-wJR14aiwE2jYijrg7Fjqg/N0F1aAZ5CIcUtwN05LcGg=' 'sha256-aYnI2FBeHDuscjjfM9Mw136ryNwuYO8SA40Zevg1KoY=' 'sha256-y6K4epLEZv6QKwcoJSp/0xGIN8fOl7DSHSPNd5QT6Xo=' 'sha256-tdUysXRHnX2Z4LXERihNGxflbZuvaer3/ZEbjN2vQYE=' 'sha256-scdHk/Xhx12Q7ITYKMEP661eR9qxmkAEEIEGSoSvhnk=' 'sha256-SQjLChNmhyZMwxbpXjOF6LYFFUEHnV6PvzvTEmWb7eA=' 'sha256-50MALp7OIkg8n1p4VILXcnKO8ypKpLNL/QYLOgWPOCk=' 'sha256-clWb9y4Y/RHEr3K6egWYXbH1r5Hi2fgpzDHlBdskEeo=' 'sha256-chNIGV8ioVlRP9Ypn/XhEA2EhWFAeWCuUGJL5S+vzz0=' 'sha256-W998Pje85WadRdREdYtdQtKylzNM5QOtfq5HJWoaeTc=' 'sha256-s6IpehL1Dcfvbn/QY1MA4otfjj+O7fzMbbfi7Qc6pmA=' 'sha256-AC3CbEeLPJf2W6daVbkfUpWh5e6gLviBovIHzqhb7I4=' 'sha256-+j7xWNheSULp9DWeiEHZrhTxGekhyQ9qIjUgAiPhJ50=' 'sha256-moRhvd2U0JZLbFHJNyPJuevxlkfGXw5XWMByVNv9Vig=' 'sha256-203TZuzrYa786NHRsoV1tXZ8L/9lEl+/UL46E0VAiGI=' 'sha256-032ZxPG0oQ3+/U6NXKrgm5LnBreb9401xJrjrsb+p+U=' 'sha256-JamKOmpIVQSPv+gDrYtzbxnVclnrvhrOMLmA+WaGPIE=' 'sha256-mnRyqew64Lcv5/Qgb/4HP8LfJi5MjjQCGLPt+/cJZis=' 'sha256-Fx6gwPzP46ZjBgLjBZ6QLksJxr+0rXElPelXtSQMnxE=' 'sha256-fug/5+Ut6nV0WD+m4YV23l7GiD/oMKUnUvZdMiDCZmw=' 'sha256-AkGc/9SiOd74zk72UnCdLs+k10sM4iy2uKmgoXkaHe0=' 'sha256-Ar6JjQB5XpqI8eiPMCdTp/UuHaqgHiv6I+MV5V0AqD0=' 'sha256-q3nqK4VzeI/SowYCYQ/tCfo056B/JMutuSpzbJbHczk=' 'sha256-FHr5kWe1pqEckj58767LzvY6a0Jefvryb6NDWnX+9iA=' 'sha256-3bpbcQ42x+1MqmADGJ3zikAZX1tMXcOSJO5HaQgBLd0=' 'sha256-JZXmJpz7JH1a0DyiOr/syUiirSXF8caWHSEs55ZeuvM=' 'sha256-5z4wfnbsEag4kdsuEHpgdTrXYzlAY7n+RR18FQrPaEk=' 'sha256-97KgMmG+SNbCjjLJMC4FFguhozddOvNKLVC6hCmCMsg=' 'sha256-K1k356n2KePxr1iToCyZJNdGCm9eq1GSLPiovYYcGJw=' 'sha256-Wbi+cQ7sBtwXXZqWfFgLJRH4d6W8PogiptWNj9KIw8c=' 'sha256-ZGygktZXqOYjv8SF3rIcpWd19YFA1qMbC3LhD9PPSIk=' 'sha256-C1diVwUHC99dr4LcsUyLWfgQa8cu0K/7SBK+bd24TWg=' 'sha256-gKWvnkygeYkz1lyPSLpgVWSsmFaaDT2lY+hqijL4Gd8=' 'sha256-XhqU3am1TiOnFUKLIcPS5JCePjRUcUoGqQvjnfL92ik=' 'sha256-COR0sjBXRz2BkYmsZyQELjCUGLEbVii9YMmpBGwfFhM=' 'sha256-N90MKmRow2DpYEVeqcc3uc8pOUsS4Rg4sNmkau1k0xQ=' 'sha256-qcFcRsF+ljnThVJj80IfggPdbDjDPk/ZEeeiFCw/f4s=' 'sha256-niVdTxYNBhpZEFDz7d87VgN56BaVHxkE1mKzrSiTEa8=' 'sha256-N6tSydZ64AHCaOWfwKbUhxXx2fRFDxHOaL3e3CO7GPI=' 'sha256-V3Yf08rYNHRd1lYyQK1mcEb3duonX88OA6nfz8qDvuY=' 'sha256-7VXlcg/uSZugHSa6UtIG2/44ju460LiO4M0CyQfraX8='; upgrade-insecure-requests" +Header always set Referrer-Policy "strict-origin-when-cross-origin" +Header always set X-Content-Type-Options "nosniff" +Header always set X-Frame-Options "DENY" +Header always set Permissions-Policy "camera=(), geolocation=(), microphone=()" diff --git a/frontend/student/app.js b/frontend/student/app.js new file mode 100644 index 0000000..c2e0fa2 --- /dev/null +++ b/frontend/student/app.js @@ -0,0 +1,222 @@ +import { + clearAuthState, + fetchWithAuth, + logoutSession, + restoreSession +} from '../auth-session.js'; + +(async () => { + const session = await restoreSession(); + if (!session || session.role !== 'STUDENT') { + window.location.replace('/'); + return; + } + const groupSelect = document.getElementById('group-select'); + const grid = document.getElementById('schedule-grid'); + const statusLine = document.getElementById('status-line'); + const weekLabel = document.getElementById('week-label'); + const datePicker = document.getElementById('date-picker'); + let weekStart = startOfWeek(new Date()); + + document.getElementById('logout-link').addEventListener('click', async (event) => { + event.preventDefault(); + await logoutSession(); + window.location.replace('/'); + }); + + document.getElementById('theme-toggle-local').addEventListener('click', () => { + const next = document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'; + document.documentElement.dataset.theme = next; + localStorage.setItem('theme', next); + }); + document.documentElement.dataset.theme = localStorage.getItem('theme') || 'light'; + + document.getElementById('prev-week').addEventListener('click', () => moveWeek(-1)); + document.getElementById('today-week').addEventListener('click', () => { + weekStart = startOfWeek(new Date()); + loadSchedule(); + }); + document.getElementById('next-week').addEventListener('click', () => moveWeek(1)); + datePicker.addEventListener('change', () => { + if (datePicker.value) { + weekStart = startOfWeek(new Date(datePicker.value)); + loadSchedule(); + } + }); + groupSelect.addEventListener('change', () => { + localStorage.setItem('studentGroupId', groupSelect.value); + loadSchedule(); + }); + + init(); + + async function init() { + await loadGroups(); + await loadSchedule(); + } + + async function loadGroups() { + try { + const groups = await fetchJson('/api/groups'); + if (!groups.length) { + groupSelect.innerHTML = ''; + return; + } + const savedGroupId = localStorage.getItem('studentGroupId'); + groupSelect.innerHTML = groups.map(group => ( + `` + )).join(''); + groupSelect.value = savedGroupId && groups.some(group => String(group.id) === savedGroupId) + ? savedGroupId + : String(groups[0].id); + } catch (error) { + groupSelect.innerHTML = ''; + showStatus(error.message, true); + } + } + + async function loadSchedule() { + const groupId = groupSelect.value; + const startDate = toIsoDate(weekStart); + const endDate = toIsoDate(addDays(weekStart, 6)); + datePicker.value = startDate; + weekLabel.textContent = `${formatDate(weekStart)} - ${formatDate(addDays(weekStart, 6))}`; + + renderEmptyWeek('Загрузка...'); + if (!groupId) { + showStatus('Выберите группу', false); + renderEmptyWeek('Нет выбранной группы'); + return; + } + + try { + const lessons = await fetchJson(`/api/schedule?groupId=${encodeURIComponent(groupId)}&startDate=${startDate}&endDate=${endDate}`); + renderWeek(lessons); + showStatus(lessons.length ? `Найдено занятий: ${lessons.length}` : 'На этой неделе занятий нет', false); + } catch (error) { + renderEmptyWeek('Ошибка загрузки'); + showStatus(error.message, true); + } + } + + function renderWeek(lessons) { + const lessonsByDate = new Map(); + lessons.forEach(lesson => { + if (!lessonsByDate.has(lesson.date)) lessonsByDate.set(lesson.date, []); + lessonsByDate.get(lesson.date).push(lesson); + }); + + grid.innerHTML = daysOfWeek().map(date => { + const key = toIsoDate(date); + const dayLessons = lessonsByDate.get(key) || []; + return renderDay(date, dayLessons); + }).join(''); + } + + function renderEmptyWeek(message) { + grid.innerHTML = daysOfWeek().map(date => renderDay(date, [], message)).join(''); + } + + function renderDay(date, lessons, emptyMessage = 'Занятий нет') { + return ` +
+
+
${escapeHtml(dayName(date))}
+
${escapeHtml(formatDate(date))}
+
+
+ ${lessons.length ? lessons.map(renderLesson).join('') : `
${escapeHtml(emptyMessage)}
`} +
+
+ `; + } + + function renderLesson(lesson) { + const groups = Array.isArray(lesson.groupNames) ? lesson.groupNames.join(', ') : ''; + const subgroups = Array.isArray(lesson.subgroupNames) && lesson.subgroupNames.length + ? lesson.subgroupNames.join(', ') + : lesson.subgroupName; + return ` +
+
${escapeHtml(trimTime(lesson.startTime))} - ${escapeHtml(trimTime(lesson.endTime))}
+
${escapeHtml(lesson.subjectName)}
+
+ ${escapeHtml(lesson.lessonTypeName)} + ${subgroups ? `${escapeHtml(subgroups)}` : ''} + ${escapeHtml(lesson.lessonFormat)} + ${escapeHtml(lesson.teacherName)} + ${escapeHtml(lesson.classroomName)} + ${groups ? `${escapeHtml(groups)}` : ''} +
+
+ `; + } + + function moveWeek(delta) { + weekStart = addDays(weekStart, delta * 7); + loadSchedule(); + } + + function daysOfWeek() { + return Array.from({ length: 7 }, (_, index) => addDays(weekStart, index)); + } + + async function fetchJson(url) { + const response = await fetchWithAuth(url); + const data = await response.json().catch(() => null); + if (response.status === 401) { + clearAuthState(); + window.location.replace('/'); + throw new Error('Требуется повторный вход в систему'); + } + if (!response.ok) { + throw new Error(data?.message || `Ошибка HTTP: ${response.status}`); + } + return data; + } + + function showStatus(message, isError) { + statusLine.textContent = message; + statusLine.classList.toggle('error', isError); + } + + function startOfWeek(date) { + const copy = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + const day = copy.getDay() || 7; + copy.setDate(copy.getDate() - day + 1); + return copy; + } + + function addDays(date, days) { + const copy = new Date(date); + copy.setDate(copy.getDate() + days); + return copy; + } + + function toIsoDate(date) { + return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`; + } + + function formatDate(date) { + return date.toLocaleDateString('ru-RU', { day: '2-digit', month: '2-digit', year: 'numeric' }); + } + + function dayName(date) { + const value = date.toLocaleDateString('ru-RU', { weekday: 'long' }); + return value.charAt(0).toUpperCase() + value.slice(1); + } + + function trimTime(value) { + return String(value || '').slice(0, 5); + } + + function escapeHtml(value) { + return String(value ?? '') + .replaceAll('&', '&') + .replaceAll('<', '<') + .replaceAll('>', '>') + .replaceAll('"', '"') + .replaceAll("'", '''); + } +})(); + diff --git a/frontend/student/index.html b/frontend/student/index.html index b81f5c0..44f253e 100644 --- a/frontend/student/index.html +++ b/frontend/student/index.html @@ -4,304 +4,7 @@ Расписание студента - +
@@ -344,275 +47,6 @@
- + diff --git a/frontend/student/style.css b/frontend/student/style.css new file mode 100644 index 0000000..12952fd --- /dev/null +++ b/frontend/student/style.css @@ -0,0 +1,297 @@ +* { + box-sizing: border-box; +} + +:root { + --bg: #f4f7fb; + --panel: #ffffff; + --panel-border: #dbe3ef; + --text: #162033; + --muted: #66758f; + --accent: #4F46E5; + --accent-strong: #4338CA; + --blue: #2563eb; + --warning: #b45309; + --shadow: 0 12px 34px rgba(22, 32, 51, 0.08); +} + +[data-theme="dark"] { + --bg: #0e131d; + --panel: #151d2b; + --panel-border: #263449; + --text: #edf3fb; + --muted: #9cadc5; + --accent: #8B5CF6; + --accent-strong: #7C3AED; + --blue: #60a5fa; + --warning: #f59e0b; + --shadow: 0 18px 44px rgba(0, 0, 0, 0.28); +} + +body { + margin: 0; + min-height: 100vh; + background: var(--bg); + color: var(--text); + font-family: "Segoe UI", system-ui, -apple-system, sans-serif; +} + +.shell { + max-width: 1240px; + margin: 0 auto; + padding: 24px; +} + +.topbar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + margin-bottom: 18px; +} + +.title h1 { + margin: 0 0 4px; + font-size: 28px; + font-weight: 700; + letter-spacing: 0; +} + +.title span { + color: var(--muted); + font-size: 14px; +} + +.actions { + display: flex; + align-items: center; + gap: 10px; +} + +.btn, +.select, +.date-input { + min-height: 40px; + border: 1px solid var(--panel-border); + border-radius: 8px; + background: var(--panel); + color: var(--text); + font: inherit; +} + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 40px; + padding: 0 14px; + cursor: pointer; + text-decoration: none; + transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease; +} + +.btn:hover { + border-color: var(--accent); + color: var(--accent-strong); +} + +.btn-primary { + border-color: var(--accent); + background: var(--accent); + color: #fff; +} + +.btn-primary:hover { + background: var(--accent-strong); + color: #fff; +} + +.btn-secondary { + background: var(--panel); + border-color: var(--panel-border); + color: var(--text); +} + +.btn-secondary:hover { + background: color-mix(in srgb, var(--accent) 7%, var(--panel)); +} + +.btn-danger-subtle { + background: #FEF2F2; + border-color: #FECACA; + color: #B91C1C; +} + +[data-theme="dark"] .btn-danger-subtle { + background: rgba(239, 68, 68, 0.13); + border-color: rgba(239, 68, 68, 0.25); + color: #FECACA; +} + +.btn-icon-md { + width: 40px; + height: 40px; + padding: 0; + border-radius: 8px; +} + +.btn-icon-md svg { + width: 20px; + height: 20px; +} + +.btn-md { + min-height: 40px; + padding: 0 16px; + font-size: 14px; + font-weight: 600; +} + +.toolbar { + display: grid; + grid-template-columns: minmax(220px, 1fr) auto auto; + gap: 12px; + margin-bottom: 16px; + padding: 14px; + border: 1px solid var(--panel-border); + border-radius: 8px; + background: var(--panel); + box-shadow: var(--shadow); +} + +.select, +.date-input { + width: 100%; + padding: 0 12px; +} + +.week-nav { + display: flex; + gap: 8px; +} + +.status { + min-height: 22px; + margin-bottom: 12px; + color: var(--muted); + font-size: 14px; +} + +.schedule { + display: grid; + grid-template-columns: repeat(7, minmax(0, 1fr)); + gap: 10px; +} + +.day { + min-height: 260px; + border: 1px solid var(--panel-border); + border-radius: 8px; + background: var(--panel); + overflow: hidden; +} + +.day-head { + padding: 12px; + border-bottom: 1px solid var(--panel-border); + background: color-mix(in srgb, var(--accent) 10%, transparent); +} + +.day-name { + font-weight: 700; +} + +.day-date { + margin-top: 2px; + color: var(--muted); + font-size: 13px; +} + +.lesson-list { + display: flex; + flex-direction: column; + gap: 8px; + padding: 10px; +} + +.lesson { + border-left: 4px solid var(--blue); + border-radius: 7px; + background: color-mix(in srgb, var(--blue) 9%, transparent); + padding: 10px; +} + +.lesson-time { + color: var(--muted); + font-size: 13px; + font-weight: 600; +} + +.lesson-title { + margin-top: 5px; + font-weight: 700; + line-height: 1.25; +} + +.lesson-meta { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-top: 8px; +} + +.chip { + border: 1px solid var(--panel-border); + border-radius: 999px; + padding: 3px 8px; + color: var(--muted); + font-size: 12px; + background: var(--panel); +} + +.empty { + padding: 16px 10px; + color: var(--muted); + font-size: 13px; +} + +.error { + color: var(--warning); +} + +@media (max-width: 980px) { + .schedule { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@media (max-width: 640px) { + .shell { + padding: 16px; + } + + .topbar, + .actions, + .toolbar { + grid-template-columns: 1fr; + align-items: stretch; + } + + .topbar, + .actions { + display: grid; + } + + .week-nav { + justify-content: stretch; + } + + .week-nav .btn { + flex: 1; + } + + .schedule { + grid-template-columns: 1fr; + } +} + diff --git a/frontend/style.css b/frontend/style.css index 4e7736f..f4147be 100755 --- a/frontend/style.css +++ b/frontend/style.css @@ -447,6 +447,11 @@ body { animation: ripple 0.6s linear; background-color: rgba(255, 255, 255, 0.3); pointer-events: none; + left: 50%; + top: 50%; + width: 24px; + height: 24px; + margin: -12px 0 0 -12px; } @keyframes ripple { @@ -498,6 +503,15 @@ body { transition: transform 0.4s ease; } +.theme-toggle-icon-enter { + animation: theme-toggle-icon-enter 0.4s ease; +} + +@keyframes theme-toggle-icon-enter { + from { opacity: 0; transform: rotate(-90deg) scale(0.5); } + to { opacity: 1; transform: rotate(0deg) scale(1); } +} + .theme-toggle:hover { background: var(--button-secondary-bg-hover); transform: translateY(-1px); diff --git a/frontend/teacher/app.js b/frontend/teacher/app.js new file mode 100644 index 0000000..e0c9ddb --- /dev/null +++ b/frontend/teacher/app.js @@ -0,0 +1,246 @@ +import { + clearAuthState, + fetchWithAuth, + logoutSession, + restoreSession +} from '../auth-session.js'; + +(async () => { + const session = await restoreSession(); + if (!session || session.role !== 'TEACHER') { + window.location.replace('/'); + return; + } + const teacherId = session.userId; + const grid = document.getElementById('schedule-grid'); + const statusLine = document.getElementById('status-line'); + const weekLabel = document.getElementById('week-label'); + const datePicker = document.getElementById('date-picker'); + let weekStart = startOfWeek(new Date()); + + document.getElementById('logout-link').addEventListener('click', async (event) => { + event.preventDefault(); + await logoutSession(); + window.location.replace('/'); + }); + + document.getElementById('theme-toggle-local').addEventListener('click', () => { + const next = document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'; + document.documentElement.dataset.theme = next; + localStorage.setItem('theme', next); + }); + document.documentElement.dataset.theme = localStorage.getItem('theme') || 'light'; + + document.getElementById('prev-week').addEventListener('click', () => moveWeek(-1)); + document.getElementById('today-week').addEventListener('click', () => { + weekStart = startOfWeek(new Date()); + loadSchedule(); + }); + document.getElementById('next-week').addEventListener('click', () => moveWeek(1)); + datePicker.addEventListener('change', () => { + if (datePicker.value) { + weekStart = startOfWeek(new Date(datePicker.value)); + loadSchedule(); + } + }); + + loadSchedule(); + + async function loadSchedule() { + const startDate = toIsoDate(weekStart); + const endDate = toIsoDate(addDays(weekStart, 6)); + datePicker.value = startDate; + weekLabel.textContent = `${formatDate(weekStart)} - ${formatDate(addDays(weekStart, 6))}`; + + if (!teacherId) { + renderEmptyWeek('Не удалось определить преподавателя'); + showStatus('Выполните вход заново, чтобы получить идентификатор пользователя', true); + return; + } + + renderEmptyWeek('Загрузка...'); + try { + const lessons = await fetchJson(`/api/schedule?teacherId=${encodeURIComponent(teacherId)}&startDate=${startDate}&endDate=${endDate}`); + renderWeek(lessons); + showStatus(lessons.length ? `Найдено занятий: ${lessons.length}` : 'На этой неделе занятий нет', false); + } catch (error) { + renderEmptyWeek('Ошибка загрузки'); + showStatus(error.message, true); + } + } + + function renderWeek(lessons) { + if (window.matchMedia('(max-width: 980px)').matches) { + renderMobileWeek(lessons); + return; + } + + const slots = collectSlots(lessons); + const lessonsByKey = new Map(); + lessons.forEach(lesson => { + lessonsByKey.set(`${lesson.date}:${lesson.timeSlotOrder}`, lesson); + }); + + grid.innerHTML = [ + '
', + ...daysOfWeek().map(date => renderHead(date)), + ...slots.flatMap(slot => [ + `
${escapeHtml(slot.label)}
`, + ...daysOfWeek().map(date => renderCell(lessonsByKey.get(`${toIsoDate(date)}:${slot.order}`))) + ]) + ].join(''); + } + + function renderMobileWeek(lessons) { + const lessonsByDate = new Map(); + lessons.forEach(lesson => { + if (!lessonsByDate.has(lesson.date)) lessonsByDate.set(lesson.date, []); + lessonsByDate.get(lesson.date).push(lesson); + }); + grid.innerHTML = daysOfWeek().map(date => { + const key = toIsoDate(date); + const dayLessons = lessonsByDate.get(key) || []; + return ` +
+ ${renderHead(date)} +
+ ${dayLessons.length ? dayLessons.map(renderLesson).join('') : '
Занятий нет
'} +
+
+ `; + }).join(''); + } + + function renderEmptyWeek(message) { + if (window.matchMedia('(max-width: 980px)').matches) { + grid.innerHTML = daysOfWeek().map(date => ` +
+ ${renderHead(date)} +
${escapeHtml(message)}
+
+ `).join(''); + return; + } + + grid.innerHTML = [ + '
', + ...daysOfWeek().map(date => renderHead(date)), + `
Неделя
`, + ...daysOfWeek().map(() => `
${escapeHtml(message)}
`) + ].join(''); + } + + function renderHead(date) { + return ` +
+ ${escapeHtml(dayName(date))} + ${escapeHtml(formatDate(date))} +
+ `; + } + + function renderCell(lesson) { + return `
${lesson ? renderLesson(lesson) : '
Нет занятия
'}
`; + } + + function renderLesson(lesson) { + const groups = Array.isArray(lesson.groupNames) ? lesson.groupNames.join(', ') : ''; + const subgroups = Array.isArray(lesson.subgroupNames) && lesson.subgroupNames.length + ? lesson.subgroupNames.join(', ') + : lesson.subgroupName; + return ` +
+
${escapeHtml(lesson.subjectName)}
+
+ ${escapeHtml(trimTime(lesson.startTime))} - ${escapeHtml(trimTime(lesson.endTime))} + ${escapeHtml(lesson.lessonTypeName)} + ${subgroups ? `${escapeHtml(subgroups)}` : ''} + ${escapeHtml(lesson.classroomName)} + ${groups ? `${escapeHtml(groups)}` : ''} +
+
+ `; + } + + function collectSlots(lessons) { + const slots = new Map(); + lessons.forEach(lesson => { + slots.set(lesson.timeSlotOrder, { + order: lesson.timeSlotOrder, + label: `${trimTime(lesson.startTime)} - ${trimTime(lesson.endTime)}` + }); + }); + if (!slots.size) { + slots.set(1, { order: 1, label: 'Расписание' }); + } + return [...slots.values()].sort((a, b) => a.order - b.order); + } + + function moveWeek(delta) { + weekStart = addDays(weekStart, delta * 7); + loadSchedule(); + } + + function daysOfWeek() { + return Array.from({ length: 7 }, (_, index) => addDays(weekStart, index)); + } + + async function fetchJson(url) { + const response = await fetchWithAuth(url); + const data = await response.json().catch(() => null); + if (response.status === 401) { + clearAuthState(); + window.location.replace('/'); + throw new Error('Требуется повторный вход в систему'); + } + if (!response.ok) { + throw new Error(data?.message || `Ошибка HTTP: ${response.status}`); + } + return data; + } + + function showStatus(message, isError) { + statusLine.textContent = message; + statusLine.classList.toggle('error', isError); + } + + function startOfWeek(date) { + const copy = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + const day = copy.getDay() || 7; + copy.setDate(copy.getDate() - day + 1); + return copy; + } + + function addDays(date, days) { + const copy = new Date(date); + copy.setDate(copy.getDate() + days); + return copy; + } + + function toIsoDate(date) { + return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`; + } + + function formatDate(date) { + return date.toLocaleDateString('ru-RU', { day: '2-digit', month: '2-digit', year: 'numeric' }); + } + + function dayName(date) { + const value = date.toLocaleDateString('ru-RU', { weekday: 'long' }); + return value.charAt(0).toUpperCase() + value.slice(1); + } + + function trimTime(value) { + return String(value || '').slice(0, 5); + } + + function escapeHtml(value) { + return String(value ?? '') + .replaceAll('&', '&') + .replaceAll('<', '<') + .replaceAll('>', '>') + .replaceAll('"', '"') + .replaceAll("'", '''); + } +})(); + diff --git a/frontend/teacher/index.html b/frontend/teacher/index.html index 846f4c1..9e7a1cd 100644 --- a/frontend/teacher/index.html +++ b/frontend/teacher/index.html @@ -4,310 +4,7 @@ Расписание преподавателя - +
@@ -347,299 +44,6 @@
- + diff --git a/frontend/teacher/style.css b/frontend/teacher/style.css new file mode 100644 index 0000000..78f8577 --- /dev/null +++ b/frontend/teacher/style.css @@ -0,0 +1,303 @@ +* { + box-sizing: border-box; +} + +:root { + --bg: #f5f6f8; + --panel: #ffffff; + --panel-border: #d8dee8; + --text: #172033; + --muted: #67758d; + --accent: #4F46E5; + --accent-strong: #4338CA; + --green: #047857; + --orange: #b45309; + --shadow: 0 12px 30px rgba(23, 32, 51, 0.08); +} + +[data-theme="dark"] { + --bg: #10151f; + --panel: #171f2e; + --panel-border: #2a374b; + --text: #eef4fb; + --muted: #a2b0c5; + --accent: #8B5CF6; + --accent-strong: #7C3AED; + --green: #34d399; + --orange: #f59e0b; + --shadow: 0 18px 42px rgba(0, 0, 0, 0.28); +} + +body { + margin: 0; + min-height: 100vh; + background: var(--bg); + color: var(--text); + font-family: "Segoe UI", system-ui, -apple-system, sans-serif; +} + +.shell { + max-width: 1240px; + margin: 0 auto; + padding: 24px; +} + +.topbar, +.toolbar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 14px; +} + +.topbar { + margin-bottom: 18px; +} + +.title h1 { + margin: 0 0 4px; + font-size: 28px; + font-weight: 700; + letter-spacing: 0; +} + +.title span { + color: var(--muted); + font-size: 14px; +} + +.toolbar { + margin-bottom: 16px; + padding: 14px; + border: 1px solid var(--panel-border); + border-radius: 8px; + background: var(--panel); + box-shadow: var(--shadow); +} + +.actions, +.week-nav { + display: flex; + align-items: center; + gap: 8px; +} + +.btn, +.date-input { + min-height: 40px; + border: 1px solid var(--panel-border); + border-radius: 8px; + background: var(--panel); + color: var(--text); + font: inherit; +} + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 40px; + padding: 0 14px; + cursor: pointer; + text-decoration: none; + transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease; +} + +.btn:hover { + border-color: var(--accent); + color: var(--accent-strong); +} + +.btn-primary { + border-color: var(--accent); + background: var(--accent); + color: #fff; +} + +.btn-primary:hover { + background: var(--accent-strong); + color: #fff; +} + +.btn-secondary { + background: var(--panel); + border-color: var(--panel-border); + color: var(--text); +} + +.btn-secondary:hover { + background: color-mix(in srgb, var(--accent) 7%, var(--panel)); +} + +.btn-danger-subtle { + background: #FEF2F2; + border-color: #FECACA; + color: #B91C1C; +} + +[data-theme="dark"] .btn-danger-subtle { + background: rgba(239, 68, 68, 0.13); + border-color: rgba(239, 68, 68, 0.25); + color: #FECACA; +} + +.btn-icon-md { + width: 40px; + height: 40px; + padding: 0; + border-radius: 8px; +} + +.btn-icon-md svg { + width: 20px; + height: 20px; +} + +.btn-md { + min-height: 40px; + padding: 0 16px; + font-size: 14px; + font-weight: 600; +} + +.date-input { + padding: 0 12px; +} + +.status { + min-height: 22px; + margin-bottom: 12px; + color: var(--muted); + font-size: 14px; +} + +.schedule { + display: grid; + grid-template-columns: 96px repeat(7, minmax(0, 1fr)); + border: 1px solid var(--panel-border); + border-radius: 8px; + background: var(--panel); + box-shadow: var(--shadow); + overflow: hidden; +} + +.corner, +.day-head, +.time-cell, +.day-cell { + border-right: 1px solid var(--panel-border); + border-bottom: 1px solid var(--panel-border); +} + +.corner, +.day-head { + min-height: 58px; + padding: 10px; + background: color-mix(in srgb, var(--accent) 8%, transparent); +} + +.day-head strong { + display: block; +} + +.day-head span { + color: var(--muted); + font-size: 13px; +} + +.time-cell { + padding: 10px; + color: var(--muted); + font-size: 13px; + background: color-mix(in srgb, var(--panel-border) 26%, transparent); +} + +.day-cell { + min-height: 118px; + padding: 8px; +} + +.lesson { + height: 100%; + min-height: 96px; + border-left: 4px solid var(--green); + border-radius: 7px; + background: color-mix(in srgb, var(--green) 10%, transparent); + padding: 9px; +} + +.lesson-title { + font-weight: 700; + line-height: 1.25; +} + +.lesson-meta { + display: flex; + flex-wrap: wrap; + gap: 5px; + margin-top: 8px; +} + +.chip { + border: 1px solid var(--panel-border); + border-radius: 999px; + padding: 3px 8px; + color: var(--muted); + font-size: 12px; + background: var(--panel); +} + +.empty { + color: var(--muted); + font-size: 13px; +} + +.error { + color: var(--orange); +} + +@media (max-width: 980px) { + .schedule { + display: block; + border: 0; + background: transparent; + box-shadow: none; + } + + .mobile-day { + margin-bottom: 10px; + border: 1px solid var(--panel-border); + border-radius: 8px; + background: var(--panel); + overflow: hidden; + } + + .mobile-day .day-head { + border-right: 0; + } + + .mobile-list { + display: flex; + flex-direction: column; + gap: 8px; + padding: 10px; + } +} + +@media (max-width: 640px) { + .shell { + padding: 16px; + } + + .topbar, + .toolbar, + .actions { + display: grid; + align-items: stretch; + } + + .week-nav .btn { + flex: 1; + } +} + diff --git a/frontend/telemetry.js b/frontend/telemetry.js new file mode 100644 index 0000000..0dc59f1 --- /dev/null +++ b/frontend/telemetry.js @@ -0,0 +1,13 @@ +let telemetryPromise = null; + +export function initializeTelemetry() { + if (['localhost', '127.0.0.1', '::1'].includes(window.location.hostname)) { + return Promise.resolve(); + } + if (!telemetryPromise) { + telemetryPromise = import('/vendor/otel.js').catch(error => { + console.warn('Не удалось инициализировать браузерную телеметрию'); + }); + } + return telemetryPromise; +} diff --git a/frontend/telemetry/otel-entry.js b/frontend/telemetry/otel-entry.js new file mode 100644 index 0000000..ae5e719 --- /dev/null +++ b/frontend/telemetry/otel-entry.js @@ -0,0 +1,40 @@ +import { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web'; +import { ZoneContextManager } from '@opentelemetry/context-zone'; +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; +import { registerInstrumentations } from '@opentelemetry/instrumentation'; +import { resourceFromAttributes } from '@opentelemetry/resources'; +import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'; +import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'; +import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; + +const exporter = new OTLPTraceExporter({ + url: `${window.location.origin}/otel/v1/traces` +}); + +const provider = new WebTracerProvider({ + resource: resourceFromAttributes({ + [ATTR_SERVICE_NAME]: 'magistr-frontend' + }), + spanProcessors: [new BatchSpanProcessor(exporter)] +}); + +provider.register({ + contextManager: new ZoneContextManager() +}); + +registerInstrumentations({ + instrumentations: [ + getWebAutoInstrumentations({ + '@opentelemetry/instrumentation-fetch': { + propagateTraceHeaderCorsUrls: [window.location.origin], + clearTimingResources: true + }, + '@opentelemetry/instrumentation-xml-http-request': { + propagateTraceHeaderCorsUrls: [window.location.origin], + clearTimingResources: true + } + }) + ] +}); + +console.info('Браузерная телеметрия OpenTelemetry инициализирована'); diff --git a/frontend/tests/auth-session.test.mjs b/frontend/tests/auth-session.test.mjs new file mode 100644 index 0000000..8924bd3 --- /dev/null +++ b/frontend/tests/auth-session.test.mjs @@ -0,0 +1,174 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; + +let importSequence = 0; + +class StorageMock { + constructor(initial = {}) { + this.values = new Map(Object.entries(initial)); + this.removed = []; + } + + getItem(key) { + return this.values.has(key) ? this.values.get(key) : null; + } + + setItem(key, value) { + this.values.set(key, String(value)); + } + + removeItem(key) { + this.removed.push(key); + this.values.delete(key); + } +} + +async function loadAuthModule() { + importSequence += 1; + return import(`../auth-session.js?test=${importSequence}`); +} + +function installBrowserMocks() { + globalThis.localStorage = new StorageMock({ + token: 'устаревший-access-token', + role: 'ADMIN', + departmentId: '7', + userId: '11', + theme: 'dark' + }); + globalThis.sessionStorage = new StorageMock({ token: 'устаревший-session-token' }); +} + +function jsonResponse(body, status = 200) { + return new Response(JSON.stringify(body), { + status, + headers: { 'Content-Type': 'application/json' } + }); +} + +test('login сохраняет access JWT только в памяти и очищает legacy Web Storage', async () => { + installBrowserMocks(); + const calls = []; + globalThis.fetch = async (url, options) => { + calls.push({ url, options }); + return jsonResponse({ ok: true }); + }; + + const auth = await loadAuthModule(); + const state = auth.storeAuthState({ + token: 'access-login', + role: 'ADMIN', + departmentId: 7, + userId: 11, + redirect: '/admin/' + }); + + assert.equal(auth.getAccessToken(), 'access-login'); + assert.deepEqual(state, { + role: 'ADMIN', + departmentId: '7', + userId: '11', + redirect: '/admin/' + }); + assert.equal(localStorage.getItem('token'), null); + assert.equal(localStorage.getItem('role'), null); + assert.equal(localStorage.getItem('theme'), 'dark'); + + await auth.fetchWithAuth('/api/test'); + assert.equal(new Headers(calls[0].options.headers).get('Authorization'), 'Bearer access-login'); +}); + +test('reload восстанавливает память через HttpOnly refresh-cookie', async () => { + installBrowserMocks(); + const calls = []; + globalThis.fetch = async (url, options) => { + calls.push({ url, options }); + return jsonResponse({ + token: 'access-after-reload', + role: 'DEPARTMENT', + departmentId: 4, + userId: 15, + redirect: '/admin/#department-workspace' + }); + }; + + const auth = await loadAuthModule(); + const state = await auth.restoreSession(); + + assert.equal(calls.length, 1); + assert.equal(calls[0].url, '/api/auth/refresh'); + assert.equal(calls[0].options.method, 'POST'); + assert.equal(calls[0].options.credentials, 'same-origin'); + assert.equal(auth.getAccessToken(), 'access-after-reload'); + assert.equal(state.role, 'DEPARTMENT'); +}); + +test('401 запускает одну ротацию refresh и повторяет запрос с новым access JWT', async () => { + installBrowserMocks(); + const calls = []; + globalThis.fetch = async (url, options) => { + calls.push({ url, options }); + if (calls.length === 1) return jsonResponse({ message: 'Истёк токен' }, 401); + if (url === '/api/auth/refresh') { + return jsonResponse({ token: 'access-rotated', role: 'ADMIN' }); + } + return jsonResponse({ success: true }); + }; + + const auth = await loadAuthModule(); + auth.storeAuthState({ token: 'access-old', role: 'ADMIN' }); + const response = await auth.fetchWithAuth('/api/protected'); + + assert.equal(response.status, 200); + assert.deepEqual(calls.map(call => call.url), [ + '/api/protected', + '/api/auth/refresh', + '/api/protected' + ]); + assert.equal(new Headers(calls[0].options.headers).get('Authorization'), 'Bearer access-old'); + assert.equal(new Headers(calls[2].options.headers).get('Authorization'), 'Bearer access-rotated'); +}); + +test('параллельные запросы используют одну refresh-ротацию', async () => { + installBrowserMocks(); + let refreshCalls = 0; + let releaseRefresh; + const refreshGate = new Promise(resolve => { + releaseRefresh = resolve; + }); + globalThis.fetch = async url => { + if (url === '/api/auth/refresh') { + refreshCalls += 1; + await refreshGate; + return jsonResponse({ token: 'access-shared', role: 'ADMIN' }); + } + return jsonResponse({ success: true }); + }; + + const auth = await loadAuthModule(); + const first = auth.refreshAccessToken(); + const second = auth.refreshAccessToken(); + releaseRefresh(); + + assert.equal(await first, true); + assert.equal(await second, true); + assert.equal(refreshCalls, 1); +}); + +test('logout отзывает cookie-сессию и очищает access JWT из памяти', async () => { + installBrowserMocks(); + const calls = []; + globalThis.fetch = async (url, options) => { + calls.push({ url, options }); + return jsonResponse({ success: true }); + }; + + const auth = await loadAuthModule(); + auth.storeAuthState({ token: 'access-before-logout', role: 'STUDENT', userId: 22 }); + await auth.logoutSession(); + + assert.equal(auth.getAccessToken(), null); + assert.equal(auth.getAuthState(), null); + assert.equal(calls[0].url, '/api/auth/logout'); + assert.equal(calls[0].options.credentials, 'same-origin'); +}); diff --git a/frontend/tests/local-date-format.test.mjs b/frontend/tests/local-date-format.test.mjs new file mode 100644 index 0000000..684a658 --- /dev/null +++ b/frontend/tests/local-date-format.test.mjs @@ -0,0 +1,18 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; + +process.env.TZ = 'Europe/Moscow'; + +const { formatLocalDate } = await import('../admin/js/utils.js'); + +test('date-only форматируется по московским компонентам, а не через UTC', () => { + assert.equal(formatLocalDate(new Date('2026-01-01T21:15:00Z')), '2026-01-02'); +}); + +test('date-only сохраняет локальный день до московской полуночи', () => { + assert.equal(formatLocalDate(new Date('2026-01-01T20:59:59Z')), '2026-01-01'); +}); + +test('некорректная дата отклоняется явной русской ошибкой', () => { + assert.throws(() => formatLocalDate(new Date('invalid')), /Ожидалась корректная дата/); +}); diff --git a/frontend/tests/security-policy.test.mjs b/frontend/tests/security-policy.test.mjs new file mode 100644 index 0000000..b369f9c --- /dev/null +++ b/frontend/tests/security-policy.test.mjs @@ -0,0 +1,169 @@ +import assert from 'node:assert/strict'; +import { createHash } from 'node:crypto'; +import { readdir, readFile } from 'node:fs/promises'; +import { extname, join } from 'node:path'; +import test from 'node:test'; +import { fileURLToPath } from 'node:url'; + +const frontendRoot = fileURLToPath(new URL('..', import.meta.url)); +const sourceExtensions = new Set(['.html', '.js', '.mjs', '.css']); + +async function sourceFiles(directory = frontendRoot) { + const result = []; + for (const entry of await readdir(directory, { withFileTypes: true })) { + if (entry.name === 'node_modules' || entry.name === 'dist' || entry.name === 'tests') continue; + const path = join(directory, entry.name); + if (entry.isDirectory()) { + result.push(...await sourceFiles(path)); + } else if (sourceExtensions.has(extname(entry.name))) { + result.push(path); + } + } + return result; +} + +async function sourceCorpus() { + const files = await sourceFiles(); + return Promise.all(files.map(async path => ({ path, text: await readFile(path, 'utf8') }))); +} + +test('frontend не исполняет удалённые или inline-скрипты', async () => { + const corpus = await sourceCorpus(); + for (const { path, text } of corpus) { + assert.doesNotMatch(text, /(?:from\s+|import\s*\()\s*['"]https?:\/\//, path); + if (extname(path) === '.html') { + assert.doesNotMatch(text, /]*\bsrc=)[^>]*>/i, path); + assert.doesNotMatch(text, / { + const corpus = await sourceCorpus(); + const authStorage = /(?:localStorage|sessionStorage)\.(?:getItem|setItem)\(\s*['"](?:token|role|departmentId|userId)['"]/; + for (const { path, text } of corpus) { + assert.doesNotMatch(text, authStorage, path); + } +}); + +test('CSP запрещает произвольные inline-ресурсы и покрывает style-атрибуты хэшами', async () => { + const corpus = await sourceCorpus(); + const config = await readFile(join(frontendRoot, 'security.conf'), 'utf8'); + + assert.match(config, /script-src 'self'/); + assert.match(config, /script-src-attr 'none'/); + assert.match(config, /style-src 'self'/); + assert.match(config, /style-src-attr 'unsafe-hashes'/); + assert.match(config, /connect-src 'self'/); + assert.doesNotMatch(config, /'unsafe-inline'|'unsafe-eval'/); + + const expectedHashes = new Set(); + for (const { path, text } of corpus) { + assert.doesNotMatch(text, /\.style\.(?:cssText|[A-Za-z-]+)\s*=|\.style\.setProperty|setAttribute\(\s*['"]style/i, path); + for (const match of text.matchAll(/style="([^"]*)"/g)) { + assert.doesNotMatch(match[1], /\$\{/, `Динамический style-атрибут в ${path}`); + expectedHashes.add(`sha256-${createHash('sha256').update(match[1]).digest('base64')}`); + } + } + + const configuredHashes = new Set( + Array.from(config.matchAll(/'((?:sha256)-[^']+)'/g), match => match[1]) + ); + assert.deepEqual(configuredHashes, expectedHashes); +}); + +test('Docker-образ включает локальный telemetry bundle и security headers', async () => { + const dockerfile = await readFile(join(frontendRoot, 'Dockerfile'), 'utf8'); + const telemetry = await readFile(join(frontendRoot, 'telemetry.js'), 'utf8'); + assert.match(dockerfile, /npm ci/); + assert.match(dockerfile, /npm run build:vendor/); + assert.match(dockerfile, /scripts\/build-vendor\.mjs/); + assert.match(dockerfile, /COPY --from=frontend-assets \/build\/dist\/vendor\//); + assert.match(dockerfile, /magistr-security\.conf/); + assert.match(telemetry, /import\('\/vendor\/otel\.js'\)/); + assert.doesNotMatch(telemetry, /https?:\/\//); +}); + +test('сообщения об ошибках не вставляют текст исключения через innerHTML', async () => { + const files = [ + 'admin/js/main.js', + 'admin/settings/js/main.js', + 'admin/settings/js/views/database.js', + 'admin/js/views/teacher-requests.js' + ]; + + for (const relativePath of files) { + const source = await readFile(join(frontendRoot, relativePath), 'utf8'); + assert.doesNotMatch(source, /\$\{[^}\n]*(?:e|error|err)\.message[^}\n]*\}/, relativePath); + } + + const utils = await readFile(join(frontendRoot, 'admin/js/utils.js'), 'utf8'); + assert.match(utils, /element\.textContent = message/); + assert.match(utils, /container\.replaceChildren\(element\)/); + assert.match(utils, /cell\.textContent = message/); + assert.match(utils, /tbody\.replaceChildren\(row\)/); +}); + +test('пароли скрыты и помечены для менеджера паролей', async () => { + const users = await readFile(join(frontendRoot, 'admin/views/users.html'), 'utf8'); + const database = await readFile(join(frontendRoot, 'admin/settings/views/database.html'), 'utf8'); + const teacherRequests = await readFile(join(frontendRoot, 'admin/js/views/teacher-requests.js'), 'utf8'); + + assert.match(users, /id="new-password"[^>]*type="password"|type="password"[^>]*id="new-password"/); + assert.match(users, /id="new-password"[^>]*autocomplete="new-password"/); + assert.match(database, /id="tenant-password"[^>]*type="password"|type="password"[^>]*id="tenant-password"/); + assert.match(database, /id="tenant-password"[^>]*autocomplete="new-password"/); + assert.match(teacherRequests, /type="password"[^>]*class="teacher-request-password"[^>]*autocomplete="new-password"/); +}); + +test('tenant UI и production-логи соблюдают русский языковой регламент', async () => { + const database = await readFile(join(frontendRoot, 'admin/settings/js/views/database.js'), 'utf8'); + assert.doesNotMatch(database, /\bOnline\b|\bOffline\b/); + assert.match(database, /Доступно/); + assert.match(database, /Недоступно/); + + const backendRoot = join(frontendRoot, '..', 'backend', 'src', 'main', 'java', 'com', 'magistr', 'app', 'config', 'tenant'); + const logSources = await Promise.all([ + 'TenantRoutingDataSource.java', + 'TenantDataSourceConfig.java', + 'TenantInterceptor.java' + ].map(name => readFile(join(backendRoot, name), 'utf8'))); + const tenantSources = logSources.flatMap(source => + Array.from(source.matchAll(/log\.(?:debug|info|warn|error)\("([^"]*)"/g), match => match[1]) + ).join('\n'); + assert.doesNotMatch( + tenantSources, + /Database API request|Unknown tenant|Resolved tenant|default DataSource|H2 in-memory|errorType|Tenant-БД|tenant-БД|startup lifecycle|startup Hikari pool/ + ); + + const frontendSources = (await sourceCorpus()) + .filter(({ path }) => extname(path) === '.js') + .map(({ text }) => text) + .join('\n'); + assert.doesNotMatch(frontendSources, /console\.(?:log|info|warn|error)\([^\n]*(?:Failed|Error)/); + assert.doesNotMatch(frontendSources, /console\.(?:warn|error)\([^\n]*\.message/); +}); + +test('единая матрица ролей согласует admin и settings для учебного отдела', async () => { + const { + ADMIN_APP_ROLES, + SETTINGS_ROLES, + capabilitiesForRole + } = await import('../admin/js/role-capabilities.js'); + const educationOffice = capabilitiesForRole('EDUCATION_OFFICE'); + + assert.ok(ADMIN_APP_ROLES.includes('EDUCATION_OFFICE')); + assert.ok(SETTINGS_ROLES.includes('EDUCATION_OFFICE')); + assert.ok(educationOffice.adminTabs.includes('academic-calendar')); + assert.deepEqual(educationOffice.settingsTabs, ['time-slots', 'edu-forms']); + assert.equal(educationOffice.defaultSettingsTab, 'time-slots'); + assert.equal(capabilitiesForRole('DEPARTMENT').settingsTabs.length, 0); + + const adminMain = await readFile(join(frontendRoot, 'admin/js/main.js'), 'utf8'); + const settingsMain = await readFile(join(frontendRoot, 'admin/settings/js/main.js'), 'utf8'); + assert.match(adminMain, /from '\.\/role-capabilities\.js'/); + assert.match(settingsMain, /from '\.\.\/\.\.\/js\/role-capabilities\.js'/); + assert.doesNotMatch(adminMain, /const ROLE_NAVIGATION/); + assert.doesNotMatch(settingsMain, /const ROLE_TABS/); +}); diff --git a/frontend/theme-toggle.js b/frontend/theme-toggle.js index 4a389d4..30866c9 100755 --- a/frontend/theme-toggle.js +++ b/frontend/theme-toggle.js @@ -35,14 +35,9 @@ /* Swap icon immediately and trigger a gentle rotate via CSS */ btn.innerHTML = goLight ? sunSVG : moonSVG; const svg = btn.querySelector('svg'); - svg.style.transition = 'none'; - svg.style.transform = 'rotate(-90deg) scale(0.5)'; - svg.style.opacity = '0'; - requestAnimationFrame(() => { - svg.style.transition = 'transform 0.4s ease, opacity 0.3s ease'; - svg.style.transform = 'rotate(0deg) scale(1)'; - svg.style.opacity = '1'; - }); + svg.classList.remove('theme-toggle-icon-enter'); + void svg.offsetWidth; + svg.classList.add('theme-toggle-icon-enter'); }); /* Where to place the button */ diff --git a/scripts/deploy-images.sh b/scripts/deploy-images.sh new file mode 100644 index 0000000..1bef22c --- /dev/null +++ b/scripts/deploy-images.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +set -euo pipefail + +NAMESPACE=${KUBE_NAMESPACE:-magistr} +BACKEND_REF=${1:-} +FRONTEND_REF=${2:-} + +log() { + printf '[CI/CD] %s\n' "$1" +} + +fail() { + printf '[CI/CD] Ошибка: %s\n' "$1" >&2 + exit 1 +} + +require_digest() { + local image_ref=$1 + local component=$2 + if [[ ! "$image_ref" =~ ^[^[:space:]@]+@sha256:[0-9a-f]{64}$ ]]; then + fail "для ${component} требуется полный immutable image digest" + fi +} + +require_digest "$BACKEND_REF" "backend" +require_digest "$FRONTEND_REF" "frontend" + +previous_backend=$(kubectl get deployment backend -n "$NAMESPACE" \ + -o 'jsonpath={.spec.template.spec.containers[?(@.name=="backend")].image}') +previous_frontend=$(kubectl get deployment frontend -n "$NAMESPACE" \ + -o 'jsonpath={.spec.template.spec.containers[?(@.name=="frontend")].image}') + +[[ -n "$previous_backend" ]] || fail "не удалось определить текущий образ backend" +[[ -n "$previous_frontend" ]] || fail "не удалось определить текущий образ frontend" + +rollback() { + local failed=0 + log "Rollout завершился ошибкой, возвращаем предыдущие образы" + kubectl set image deployment/backend backend="$previous_backend" -n "$NAMESPACE" || failed=1 + kubectl set image deployment/frontend frontend="$previous_frontend" -n "$NAMESPACE" || failed=1 + kubectl rollout status deployment/frontend -n "$NAMESPACE" --timeout=120s || failed=1 + kubectl rollout status deployment/backend -n "$NAMESPACE" --timeout=300s || failed=1 + if [[ "$failed" -ne 0 ]]; then + printf '[CI/CD] Ошибка: автоматический rollback требует вмешательства оператора\n' >&2 + return 1 + fi + log "Предыдущие образы восстановлены" +} + +log "Применяем проверенные image digests" +if ! kubectl set image deployment/backend backend="$BACKEND_REF" -n "$NAMESPACE" \ + || ! kubectl set image deployment/frontend frontend="$FRONTEND_REF" -n "$NAMESPACE"; then + rollback || true + fail "не удалось обновить Deployment" +fi + +if ! kubectl rollout status deployment/frontend -n "$NAMESPACE" --timeout=120s \ + || ! kubectl rollout status deployment/backend -n "$NAMESPACE" --timeout=300s; then + rollback || true + fail "новая ревизия не достигла состояния Ready" +fi + +log "Immutable rollout успешно завершён" diff --git a/scripts/test-deploy-images.sh b/scripts/test-deploy-images.sh new file mode 100644 index 0000000..f62ea11 --- /dev/null +++ b/scripts/test-deploy-images.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -euo pipefail + +ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +DEPLOY_SCRIPT="$ROOT_DIR/scripts/deploy-images.sh" +CALL_LOG=$(mktemp) +trap 'rm -f "$CALL_LOG"' EXIT + +OLD_BACKEND='registry.local/magistr-backend@sha256:1111111111111111111111111111111111111111111111111111111111111111' +OLD_FRONTEND='registry.local/magistr-frontend@sha256:2222222222222222222222222222222222222222222222222222222222222222' +NEW_BACKEND='registry.local/magistr-backend@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +NEW_FRONTEND='registry.local/magistr-frontend@sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' + +kubectl() { + printf '%s\n' "$*" >> "$CALL_LOG" + if [[ "$1" == "get" && "$3" == "backend" ]]; then + printf '%s' "$OLD_BACKEND" + return 0 + fi + if [[ "$1" == "get" && "$3" == "frontend" ]]; then + printf '%s' "$OLD_FRONTEND" + return 0 + fi + if [[ "${DEPLOY_TEST_MODE:-success}" == "failure" \ + && "$1" == "rollout" \ + && "$3" == "deployment/backend" \ + && "${DEPLOY_TEST_FAILURE_EMITTED:-false}" == "false" ]]; then + DEPLOY_TEST_FAILURE_EMITTED=true + return 1 + fi + return 0 +} +export -f kubectl +export CALL_LOG OLD_BACKEND OLD_FRONTEND DEPLOY_TEST_MODE DEPLOY_TEST_FAILURE_EMITTED + +if bash "$DEPLOY_SCRIPT" 'registry.local/backend:main' "$NEW_FRONTEND" >/dev/null 2>&1; then + printf 'Ошибка теста: mutable backend tag не был отклонён\n' >&2 + exit 1 +fi + +: > "$CALL_LOG" +DEPLOY_TEST_MODE=success bash "$DEPLOY_SCRIPT" "$NEW_BACKEND" "$NEW_FRONTEND" +grep --fixed-strings "set image deployment/backend backend=$NEW_BACKEND" "$CALL_LOG" >/dev/null +grep --fixed-strings "set image deployment/frontend frontend=$NEW_FRONTEND" "$CALL_LOG" >/dev/null + +: > "$CALL_LOG" +if DEPLOY_TEST_MODE=failure DEPLOY_TEST_FAILURE_EMITTED=false \ + bash "$DEPLOY_SCRIPT" "$NEW_BACKEND" "$NEW_FRONTEND"; then + printf 'Ошибка теста: неуспешный rollout завершился кодом 0\n' >&2 + exit 1 +fi +grep --fixed-strings "set image deployment/backend backend=$OLD_BACKEND" "$CALL_LOG" >/dev/null +grep --fixed-strings "set image deployment/frontend frontend=$OLD_FRONTEND" "$CALL_LOG" >/dev/null + +printf 'Проверка immutable rollout и rollback завершена успешно\n' From ee876f1acdffda7f347a0d87be97e9062043a35a Mon Sep 17 00:00:00 2001 From: Zuev Date: Sun, 19 Jul 2026 20:16:12 +0300 Subject: [PATCH 09/14] =?UTF-8?q?=D0=B1=D0=B0=D0=B3-=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=20=D0=B7=D0=B0=D0=B2=D0=B5=D1=80=D1=88=D1=91=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 7 +- .gitea/workflows/docker-build.yaml | 68 +++++-- BUG_FIX_PROGRESS.md | 162 ++++++++++++++-- DEVOPS.md | 26 +-- STARTUP_GUIDE.md | 118 ++++++++++++ backend/Dockerfile | 4 +- .../DatabaseConstraintViolationMapper.java | 4 + .../app/controller/GroupController.java | 91 +-------- .../app/controller/SubgroupController.java | 15 +- .../java/com/magistr/app/model/Subgroup.java | 2 +- .../app/service/AcademicStructureService.java | 59 ++++-- .../app/service/ScheduleGeneratorService.java | 3 +- .../app/service/ScheduleQueryService.java | 3 +- .../main/resources/db/migration/V1__init.sql | 79 +++++++- ...inRateLimitConcurrencyIntegrationTest.java | 3 +- ...okenServiceConcurrencyIntegrationTest.java | 3 +- ...riodInvariantMigrationIntegrationTest.java | 3 +- ...emicStructureInvariantIntegrationTest.java | 177 +++++++++++++++++- ...eduleOverrideMigrationIntegrationTest.java | 3 +- ...duleRuleHoursMigrationIntegrationTest.java | 3 +- ...jectOwnershipInvariantIntegrationTest.java | 3 +- ...herDepartmentInvariantIntegrationTest.java | 3 +- ...SlotInvariantMigrationIntegrationTest.java | 3 +- ...micCalendarGridServiceIntegrationTest.java | 3 +- .../service/AcademicStructureServiceTest.java | 55 ++++++ ...PostgreSqlAdvisoryLockIntegrationTest.java | 3 +- .../ScheduleGenerationQueryCountTest.java | 24 +++ .../app/service/ScheduleQueryServiceTest.java | 31 +++ ...RuleServiceConcurrencyIntegrationTest.java | 3 +- ...antLifecyclePostgreSqlIntegrationTest.java | 3 +- .../app/testing/TestContainerImages.java | 16 ++ compose.yaml | 8 +- docs/API.md | 30 ++- docs/ARCHITECTURE.md | 25 +++ docs/BUSINESS_LOGIC.md | 8 +- docs/DATABASE.md | 111 ++++++----- docs/DEVELOPMENT.md | 27 +++ docs/FRONTEND.md | 4 + docs/INFRASTRUCTURE.md | 62 ++++-- docs/README.md | 17 +- frontend/admin/js/views/academic-calendar.js | 30 ++- scripts/check-artifact-pinning.sh | 152 +++++++++++++++ scripts/test-artifact-pinning.sh | 32 ++++ 43 files changed, 1228 insertions(+), 258 deletions(-) create mode 100644 STARTUP_GUIDE.md create mode 100644 backend/src/test/java/com/magistr/app/testing/TestContainerImages.java create mode 100755 scripts/check-artifact-pinning.sh create mode 100755 scripts/test-artifact-pinning.sh diff --git a/.env.example b/.env.example index ae07dab..24fdebd 100644 --- a/.env.example +++ b/.env.example @@ -1,10 +1,10 @@ # Скопируйте файл в .env и замените пустые значения локальными секретами. POSTGRES_USER=myuser -POSTGRES_PASSWORD= +POSTGRES_PASSWORD=supersecretpassword#<---- POSTGRES_DB=app_db # Сгенерировать: openssl rand -base64 48 -JWT_SECRET= +JWT_SECRET=#<---- JWT_ACCESS_TOKEN_TTL=15m JWT_REFRESH_TOKEN_TTL=7d JWT_REFRESH_COOKIE_NAME=magistr_refresh @@ -35,6 +35,3 @@ TZ=Europe/Moscow # Локально Collector не входит в Compose. Укажите false при подключённом OTLP Collector. OTEL_SDK_DISABLED=true - -# Измените, если порт 80 занят. -HTTP_PORT=80 diff --git a/.gitea/workflows/docker-build.yaml b/.gitea/workflows/docker-build.yaml index 917fa20..1923ce4 100644 --- a/.gitea/workflows/docker-build.yaml +++ b/.gitea/workflows/docker-build.yaml @@ -15,6 +15,9 @@ env: REGISTRY: gitea.zuev.company BACKEND_IMAGE: zuev/magistr-backend FRONTEND_IMAGE: zuev/magistr-frontend + MAVEN_IMAGE: maven:3.9.9-eclipse-temurin-17@sha256:f58d59b6273e785ac0a4477f6e9b5ba1d7731c75b906c0f7b34076f1851318cc + NODE_IMAGE: node:22-alpine3.23@sha256:8516dce0483394d5708d4b2ee6cacb79fb1d617ea4e2787c2120bcca92ce372e + TRIVY_IMAGE: aquasec/trivy:0.63.0@sha256:6fb0646988fcd2fdf7bf123f7174945ebc2c9c72d1fa1567c8d7daeeb70f8037 jobs: checks: @@ -23,14 +26,14 @@ jobs: timeout-minutes: 20 steps: - name: Получить исходный код - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - name: Backend unit и component tests run: >- docker run --rm -v "${{ github.workspace }}/backend:/workspace" -w /workspace - maven:3.9.9-eclipse-temurin-17 + "${{ env.MAVEN_IMAGE }}" mvn -Dapi.version=1.44 '-Dtest=!*IntegrationTest' test - name: Frontend static и unit tests @@ -38,7 +41,7 @@ jobs: docker run --rm -v "${{ github.workspace }}/frontend:/workspace" -w /workspace - node:22-alpine3.23 + "${{ env.NODE_IMAGE }}" sh -c "npm ci && npm run check" - name: Проверить Docker Compose @@ -50,6 +53,9 @@ jobs: - name: Проверить сценарий immutable rollout и rollback run: bash scripts/test-deploy-images.sh + - name: Проверить закрепление артефактов и supply-chain gates + run: bash scripts/test-artifact-pinning.sh + build-and-push-backend: name: Собрать backend image needs: checks @@ -59,10 +65,10 @@ jobs: digest: ${{ steps.build.outputs.digest }} steps: - name: Получить исходный код - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - name: Войти в Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -70,7 +76,7 @@ jobs: - name: Сформировать immutable tags и labels id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0 with: images: ${{ env.REGISTRY }}/${{ env.BACKEND_IMAGE }} flavor: latest=false @@ -80,10 +86,12 @@ jobs: - name: Собрать и опубликовать backend image id: build - uses: docker/build-push-action@v6 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: ./backend push: true + provenance: mode=max + sbom: true tags: ${{ steps.meta.outputs.tags }} labels: | ${{ steps.meta.outputs.labels }} @@ -99,10 +107,10 @@ jobs: digest: ${{ steps.build.outputs.digest }} steps: - name: Получить исходный код - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - name: Войти в Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -110,7 +118,7 @@ jobs: - name: Сформировать immutable tags и labels id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0 with: images: ${{ env.REGISTRY }}/${{ env.FRONTEND_IMAGE }} flavor: latest=false @@ -120,19 +128,53 @@ jobs: - name: Собрать и опубликовать frontend image id: build - uses: docker/build-push-action@v6 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: ./frontend push: true + provenance: mode=max + sbom: true tags: ${{ steps.meta.outputs.tags }} labels: | ${{ steps.meta.outputs.labels }} org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ github.sha }} + security-scan: + name: Проверить опубликованные образы + needs: [build-and-push-backend, build-and-push-frontend] + runs-on: ubuntu-latest + timeout-minutes: 20 + env: + BACKEND_REF: ${{ env.REGISTRY }}/${{ env.BACKEND_IMAGE }}@${{ needs.build-and-push-backend.outputs.digest }} + FRONTEND_REF: ${{ env.REGISTRY }}/${{ env.FRONTEND_IMAGE }}@${{ needs.build-and-push-frontend.outputs.digest }} + steps: + - name: Войти в Container Registry + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.ZUEV_TOKEN }} + + - name: Проверить backend на HIGH и CRITICAL уязвимости + run: >- + docker run --rm + -v "$HOME/.docker:/root/.docker:ro" + "${{ env.TRIVY_IMAGE }}" + image --scanners vuln --exit-code 1 --severity HIGH,CRITICAL --ignore-unfixed + "$BACKEND_REF" + + - name: Проверить frontend на HIGH и CRITICAL уязвимости + run: >- + docker run --rm + -v "$HOME/.docker:/root/.docker:ro" + "${{ env.TRIVY_IMAGE }}" + image --scanners vuln --exit-code 1 --severity HIGH,CRITICAL --ignore-unfixed + "$FRONTEND_REF" + deploy-to-k8s: name: Развернуть проверенные digests - needs: [build-and-push-backend, build-and-push-frontend] + needs: [build-and-push-backend, build-and-push-frontend, security-scan] runs-on: ubuntu-latest timeout-minutes: 15 environment: production @@ -143,7 +185,7 @@ jobs: KUBECTL_SHA256: fe80ae4133b44fa2077db4af144e80765eb1b3b2eede55fbff6933c4374d8c6e steps: - name: Получить deploy-скрипт - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - name: Создать kubeconfig env: diff --git a/BUG_FIX_PROGRESS.md b/BUG_FIX_PROGRESS.md index f32f010..bc00ea1 100644 --- a/BUG_FIX_PROGRESS.md +++ b/BUG_FIX_PROGRESS.md @@ -21,7 +21,7 @@ | `V2__subgroups_active_unique_name.sql` | `68f5525a50ddba4f8800a63cab3cd0f84779e301c4a1f29a6e0399f97fbdb30b` | Текущая единая baseline-миграция: `V1__init.sql`, SHA-256 -`250cab68c9ab6d8401619447585b47d6122458d1cb00a6e76af308414f89958d`. +`fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`. Упоминания V2–V7 в исторических записях ниже описывают последовательность разработки до консолидации и не означают наличие этих файлов в текущем дереве. @@ -62,7 +62,7 @@ | 7 | исправлено и проверено | Контроллер сравнивал новые слоты только с сохранёнными правилами, не проверял роль преподавателя и enum формата, а нечётные часы приводили к перерасходу генератора. | `ScheduleRuleService` валидирует весь кандидат до мутации, попарно проверяет дубли/ресурсы, требует `TEACHER`, `Очно`/`Онлайн` и чётные часы; строка семестра сериализует запись. Чётность и точный дубль закреплены в V1. | 23 service/MockMvc/Flyway/PostgreSQL tests; полный backend: 102/0/0/0. | | 8 | исправлено и проверено | `saveGrid` удалял данные до полной валидации и ловил исключение внутри transactional controller-метода, поэтому Spring коммитил delete и уже обработанные строки. | `AcademicCalendarGridService` полностью валидирует и строит replacement до delete, атомарно заменяет строки и очищает кэш через `afterCommit`; контроллер стал HTTP-адаптером. | 8 unit + 1 PostgreSQL proxy test; fingerprint старой сетки после отказа неизменен; полный backend 111/0/0/0. | | 9 | исправлено и проверено | При update старый pool закрывался до создания нового; Hikari допускал ленивый нерабочий pool, Flyway проглатывал ошибку, а отказ persistence мог сочетаться с изменённым локальным состоянием. | `TenantLifecycleService` выполняет prepare → connection validation → Flyway → Secret persistence → atomic snapshot swap; candidate закрывается при отказе, прежний route сохраняется, Secret компенсируется, старый pool закрывается после drain. | 18 целевых unit/MockMvc/PostgreSQL tests; create/update, credentials, invalid connection, Flyway, persistence, swap, HTTP `503` и in-flight connection. Полный backend: 132/0/0/0. | -| 10 | требуется внешнее действие | Два pod перезаписывали целый tenant-документ без `resourceVersion`; TCP probes не отражали готовность tenant-БД. | Backend применяет доменные upsert/remove через GET → условный PUT по `resourceVersion`, ограниченный retry и безопасную компенсацию; Actuator разделяет process-only liveness и readiness обязательных tenant-БД. Оператору остаются RBAC `get/update`, mount без `subPath`, `TENANTS_CONFIG_REQUIRED=true` и HTTP probes в отсутствующем `../k8s`. | 64 целевых теста; полный backend 169/0/0/0; LF-хеши V1–V4 совпадают. Kustomize не выполнен: `../k8s` отсутствует. | +| 10 | исправлено и проверено | Два pod перезаписывали целый tenant-документ без `resourceVersion`; TCP probes не отражали готовность tenant-БД. | Backend применяет доменные upsert/remove через GET → условный PUT по `resourceVersion`, ограниченный retry и безопасную компенсацию; Actuator разделяет process-only liveness и readiness обязательных tenant-БД. Kubernetes содержит RBAC `get/update`, directory mount без `subPath`, required tenant-config и HTTP probes. | 64 целевых теста; полный backend 277/0/0/0; Kustomize, secret-scan и синтаксис deploy-скрипта прошли. | | 11 | исправлено и проверено | Воскресенье вычислялось повторным мутированием одной даты, date-only строился через UTC, а ошибки кафедральных запросов превращались в пустой успешный результат. | `dashboard-conflicts.js` формирует локальный диапазон на отдельных объектах, загружает кафедры через `Promise.allSettled` и fail-closed различает `COMPLETE`/`PARTIAL`/`NOT_RUN`; зелёная карточка разрешена только для полного результата без конфликтов. | 12 `node:test`: 02.07.2026 00:15 Europe/Moscow, переход года, полный/частичный/нулевой успех и строгий UI-контракт; `npm run check` и синтаксис 25 JS/MJS-файлов — успешно. | | 12 | исправлено и проверено | Четыре frontend-клиента хранили access JWT и профиль в Web Storage; login/admin исполняли OTel с `esm.sh`, а inline JS/styles не позволяли включить строгий CSP. | Общий `auth-session.js` держит access JWT только в памяти и восстанавливает его через HttpOnly refresh-cookie; OTel собирается из exact npm-зависимостей в same-origin bundle; Apache выдаёт CSP без `unsafe-inline`/`unsafe-eval`. | 21 frontend test, `npm audit` 0 vulnerabilities, Docker build и live HTTP/CSP/bundle check — успешно. | | 13 | исправлено и проверено | Watcher сравнивал только домены, подтверждал hash до полного успеха, а API после мутации мог принять запаздывающую mounted-проекцию за актуальную. | Полное нормализованное сравнение, prepare/verify/Flyway/atomic swap без повторной записи Secret, hash-after-success, retry 30–300 секунд и semantic snapshot fence по `TenantSecretUpdateReceipt`. | 53 целевых теста, 2 PostgreSQL lifecycle-теста; полный backend 200/0/0/0. | @@ -81,10 +81,10 @@ | 26 | исправлено и проверено | Compose требовал внешнюю сеть, не публиковал HTTP, рассогласовывал DB/JWT и использовал anonymous volume. Live startup также выявил два неоднозначных Spring-конструктора. | Внутренняя bridge-сеть, Apache reverse proxy и `HTTP_PORT`; согласованные datasource/JWT env, healthchecks, named volume; production-конструкторы явно помечены для DI. | `up --build --wait`; PostgreSQL/backend/frontend healthy, `/` и liveness `200`, API `401`, named volume; полный backend 235/0/0/0. | | 27 | исправлено и проверено | Pipeline собирал и деплоил без тестов, а release tag только перезапускал Deployment на mutable `:main`. | Обязательный checks job, production concurrency lock, SHA/release build tags и deploy только digest из build outputs; общий shell rollback обоих Deployment. | Workflow YAML/static scan, shell success/failure/rollback, production-secret scan и Kustomize — успешно. | | 28 | исправлено и проверено | Login не имел shared rate limit, различал архивного пользователя и безусловно доверял forwarded header. | Транзакционный PostgreSQL limiter по tenant + NFKC username + проверенному IP; прогрессивная блокировка, audit/cleanup, единый `401`, `429`/`Retry-After` и trusted proxy chain. | 12 целевых unit/PostgreSQL tests; два service instance дали ровно один `401` и один `429`, общий failure count 2; V1 и cleanup проверены. | -| 29 | не начато | Business dates зависят от timezone процесса; frontend date-only строится через UTC. | Инъекция `Clock`/`Europe/Moscow`, UTC timestamps, локальное форматирование date-only, TZ контейнеров. | Boundary tests 00:00–03:00 и первые дни месяца. | -| 30 | не начато | Образы/скачиваемые инструменты используют mutable tags/latest без checksum/SBOM/scan. | Pin versions+digests, SHA verification, SBOM и image scan gates. | Static scan production refs и CI configuration. | -| 31 | не начато | Group create/update допускает неположительные значения и уменьшение ниже активных подгрупп. | Общий validator, locking, новые CHECK constraints. | Create/update/concurrency и migration tests. | -| 32 | не начато | `between(start,end) > 120` разрешает 121 включительную дату. | Проверять `between + 1 <= 120` в обоих сервисах. | Границы 120/121. | +| 29 | исправлено и проверено | Business dates зависели от timezone процесса, абсолютные моменты смешивались с `LocalDateTime`, frontend date-only местами строился через UTC. | `BusinessTimeService` с `Clock`/`Europe/Moscow`; абсолютные моменты переведены на `Instant`/`TIMESTAMPTZ`/UTC; frontend использует локальные компоненты; Compose и Kubernetes фиксируют бизнес-зону и timezone JVM. | Boundary tests московской полуночи, frontend date-only, Kustomize и полный backend PostgreSQL/Testcontainers-прогон 277/0/0/0 прошли. | +| 30 | исправлено и проверено | Образы/скачиваемые инструменты использовали mutable refs либо не имели общего контроля digest/SBOM/scan. | Docker/Compose/Testcontainers, OTel Collector и CI images закреплены tag+digest, Actions — commit SHA; checksum, provenance, SBOM и Trivy gate проверяются скриптом. | Shell-регрессии, Workflow/Compose YAML, repo и полный `K8S_DIR=../k8s` artifact-scan прошли. | +| 31 | исправлено и проверено | Group create/update допускал неположительные значения и уменьшение ниже активных подгрупп; параллельные изменения могли вместе превысить размер группы. | Общий validator create/update, блокировка родительской группы, положительные CHECK и перекрёстные триггеры непосредственно в V1. | 11 service tests и 4 PostgreSQL migration/concurrency tests; полный backend 277/0/0/0. | +| 32 | исправлено и проверено | `between(start,end) > 120` разрешал 121 включительную дату. | Оба сервиса считают включительные даты как `between + 1` и разрешают не больше 120. | Границы 120/121 в query/generator tests; полный backend 277/0/0/0. | | 33 | исправлено и проверено | Несколько `e.message` вставлялись как HTML; парольные поля имели `type=text`. | Ошибки вкладок, БД и заявок рендерятся фиксированным текстом через `textContent`/`replaceChildren`; поля создания пользователя, tenant и одобрения заявки используют `type=password` и `autocomplete=new-password`. | 3 новых static regression tests; полный frontend: 24 проверки, 0 ошибок; CSP-хэши синхронизированы. | | 34 | исправлено и проверено | В затронутых UI/log paths оставались английские метки/логи и raw exception text. | Статусы БД и пользовательские ошибки русифицированы; начальная tenant-конфигурация, маршрутизация и interceptor пишут русские production-сообщения с безопасным типом исключения. | Static-проверка исходных английских сообщений; полный backend 200/0/0/0; live Docker HTTP/CSP — успешно. | @@ -333,10 +333,10 @@ - AutoUpdateDocs синхронизировал `docs/API.md`, `docs/ARCHITECTURE.md` и `docs/INFRASTRUCTURE.md`. На этом этапе ограничение watcher по обновлению URL/credentials существующего домена было оставлено проблеме № 13 и устранено следующим этапом. -- В текущей рабочей копии отсутствует внешний каталог `../k8s`, поэтому манифесты не менялись - и Kustomize не запускался. Для production обязательны directory mount без `subPath`, +- В текущем внешнем `../k8s` подтверждены directory mount без `subPath`, `TENANTS_CONFIG_REQUIRED=true`, Role `get/update` для `tenants-secret` и HTTP liveness / - readiness probes; применение и rollout остаются внешними действиями оператора. + readiness probes. Манифесты успешно собираются Kustomize; production rollout остаётся + отдельным действием оператора. Фактические проверки этапа: @@ -348,7 +348,7 @@ | Контейнерный полный `mvn test` | 169 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS; 40 suites. | | `git diff --check` | Успешно. | | Повторные LF-нормализованные SHA-256 V1/V2/V3/V4 | Совпадают с ранее зафиксированными значениями. | -| `kubectl kustomize ../k8s` | Не выполнено: внешний каталог `../k8s` отсутствует в текущем workspace. | +| `kubectl kustomize ../k8s`, production secret-scan и `bash -n ../k8s/deploy.sh` | Успешно в финальном аудите. | ### № 13 — полная и повторяемая синхронизация tenant-конфигурации @@ -926,14 +926,142 @@ | Compose, Kustomize, secret-scan, `git diff --check` | Успешно. | | Изменённые внешние файлы | `../k8s/config.yaml`, `../k8s/README.md`; каталог вне Git-корня и проверен отдельно. | +### № 29 — единая временная зона бизнес-дат + +- Добавлен `BusinessTimeService`: production использует UTC `Clock`, а календарную дату + вычисляет в настраиваемой зоне `BUSINESS_TIME_ZONE` с безопасным default + `Europe/Moscow`. Контроллеры пользователей, групп, кабинета кафедры, заявок и дисциплин, + генератор расписания и история кафедр получают текущую бизнес-дату через этот сервис. +- Абсолютные моменты refresh/login-аудита, lifecycle, overrides, заявок, комментариев и + назначений переведены с `LocalDateTime` на `Instant`. Hibernate и Jackson настроены на + UTC; все соответствующие колонки единственной `V1__init.sql` используют `TIMESTAMPTZ`. +- `formatLocalDate()` и календарная арифметика frontend используют локальные компоненты + `Date`; `toISOString().slice(0, 10)` для date-only в frontend больше не используется. +- Compose передаёт `BUSINESS_TIME_ZONE`, `TZ` и + `JAVA_TOOL_OPTIONS=-Duser.timezone=...`; `.env.example` содержит явные значения. + Kubernetes `app-config` содержит те же production-поля, поэтому backend pod не зависит от + timezone node или базового образа. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/ARCHITECTURE.md`, + `docs/DATABASE.md`, `docs/DEVELOPMENT.md`, `docs/FRONTEND.md` и + `docs/INFRASTRUCTURE.md`. +- Новых миграционных файлов не создано; каталог Flyway содержит только `V1__init.sql`, + текущий SHA-256 после завершения № 31: + `fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `BusinessTimeServiceTest` | В первом полном прогоне обе границы московской полуночи прошли. | +| `npm test`, `node --check` | Все 4 frontend test-suite и изменённые JS-файлы прошли. | +| Static time scan | В production Java нет `LocalDate.now()`/`LocalDateTime.now()` без явной зоны; во frontend нет date-only через `toISOString`; в V1 и документации нет `TIMESTAMP` без timezone. | +| Compose и diff | `docker compose config --quiet` с обязательными секретами и `git diff --check` успешны. | +| Kubernetes timezone | Kustomize-рендер содержит `BUSINESS_TIME_ZONE=Europe/Moscow`, `TZ=Europe/Moscow` и `JAVA_TOOL_OPTIONS=-Duser.timezone=Europe/Moscow`. | +| Первый полный `mvn test` | 269 тестов: 263 успешны. После прогона исправлены новое lifecycle-ожидание, JDBC binding `Instant` и три ранее нестабильных ожидания PostgreSQL `40P01`; также усилена блокировка календарного assignment. | +| Повторный Maven/Testcontainers | Полный прогон после № 31–32: 277 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | + +### № 30 — воспроизводимые и проверяемые артефакты + +- Backend build/runtime, PostgreSQL Compose и все PostgreSQL Testcontainers закреплены + одновременно точной версией и manifest digest. Ранее закреплённые frontend base images + сохранены. +- Все сторонние Actions в Gitea workflow закреплены полными 40-символьными commit SHA; + Maven, Node.js и Trivy запускаются только по `tag@sha256:...`. +- OpenTelemetry Java Agent и `kubectl` имеют точные версии и обязательную SHA-256 проверку до + использования. +- Оба build job публикуют BuildKit provenance `mode=max` и SBOM-attestation. Отдельный + `security-scan` проверяет backend/frontend digests закреплённым Trivy и блокирует deploy при + исправимых `HIGH`/`CRITICAL` уязвимостях. +- Добавлены `scripts/check-artifact-pinning.sh` и его регрессионный shell-тест. Проверка + контролирует Dockerfile, Compose, Testcontainers, Actions, checksum, SBOM/provenance, scan + gate и зависимость deploy от scan. Опциональный `K8S_DIR` расширяет проверку на внешние + production-манифесты. +- AutoUpdateDocs синхронизировал `docs/DATABASE.md`, `docs/DEVELOPMENT.md`, + `docs/INFRASTRUCTURE.md` и `DEVOPS.md`. +- Внешний `../k8s/otel-collector.yaml` использует официальный Collector Contrib + `0.153.0@sha256:93aad750175cbf1a973ae1c5886c3371f4d800f61be25cdd26870b8441ffe9fa`. + Версия подтверждена официальным релизом OpenTelemetry, manifest digest получен напрямую + из Docker Hub Registry API. +- Новых Flyway-файлов не создано; в каталоге миграций остаётся только `V1__init.sql` с + SHA-256 `fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `bash scripts/check-artifact-pinning.sh` | Успешно: repo image refs, Actions, checksum, SBOM и scan gates закреплены. | +| `bash scripts/test-artifact-pinning.sh` | Успешно: незакреплённый base image и удалённая SBOM гарантированно отклоняются. | +| `bash scripts/test-deploy-images.sh` | Успешно: immutable refs, rollout и парный rollback. | +| Workflow YAML, Compose config, `git diff --check` | Успешно. | +| `K8S_DIR=../k8s bash scripts/check-artifact-pinning.sh` | Успешно: все production-образы имеют полный digest. | +| `kubectl kustomize ../k8s` | Успешно; рендер содержит закреплённый OTel Collector. | + +### № 31 — инварианты численности групп и подгрупп + +- Создание и изменение групп теперь проходят через общий validator + `AcademicStructureService`: численность, год начала обучения и все идентификаторы должны + быть положительными, обязательные поля не могут отсутствовать. +- При обновлении сервис блокирует группу и запрещает уменьшать `groupSize` ниже суммы + численностей активных подгрупп. Создание, обновление и архивация подгрупп также блокируют + строку родительской группы до завершения транзакции. +- `subgroups.student_capacity` стал обязательным. В V1 добавлены CHECK-ограничения + положительной численности группы, года начала обучения и численности подгруппы. +- Два триггера V1 защищают перекрёстный инвариант при прямых и конкурентных записях: + сумма активных подгрупп не может превышать размер группы. Ошибка сопоставляется с + безопасным русским ответом через `DatabaseConstraintViolationMapper`. +- Новых миграций не создано: вся итоговая схема находится в `V1__init.sql`, а V2–V4 + отсутствуют. +- AutoUpdateDocs синхронизировал `docs/API.md`, `docs/ARCHITECTURE.md`, + `docs/BUSINESS_LOGIC.md` и `docs/DATABASE.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `AcademicStructureServiceTest` | 11 тестов: общий create/update validator, положительные значения и запрет уменьшения ниже подгрупп прошли. | +| `AcademicStructureInvariantIntegrationTest` | 4 PostgreSQL-теста: CHECK, уменьшение группы и гонка уменьшения с добавлением подгруппы прошли; инвариант сохранён. | +| Полный контейнерный `mvn test` | 277 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | +| Каталог Flyway | Ровно один `V1__init.sql`, SHA-256 `fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`. | + +### № 32 — точный включительный лимит диапазона расписания + +- `ScheduleQueryService` и `ScheduleGeneratorService` одинаково вычисляют количество + календарных дат как `ChronoUnit.DAYS.between(startDate, endDate) + 1`. +- Диапазон из 120 дат разрешён, а из 121 даты возвращает русскую ошибку валидации. +- AutoUpdateDocs уточнил включительную семантику лимита в `docs/API.md`, + `docs/ARCHITECTURE.md` и `docs/BUSINESS_LOGIC.md`. + +Фактические проверки этапа: + +| Команда | Результат | +|---|---| +| `ScheduleQueryServiceTest.rangeLimitCountsBothBoundaryDates` | Граница 120 разрешена, 121 отклонена. | +| `ScheduleGenerationQueryCountTest` | Существующая генерация 120 дат сохранена, запрос 121 даты отклонён до генерации. | +| Полный контейнерный `mvn test` | 277 тестов, 0 failures, 0 errors, 0 skipped, BUILD SUCCESS. | + +## Финальный аудит + +- Все 33 проблемы из области (`1` и `3–34`) имеют реализованную репозиторную часть и + воспроизводимое подтверждение. № 2 не изменялась, `BUG_REPORT.md` сохранён как исходный + реестр. +- Полностью закрыты и проверены 32 пункта. Для № 1 остаются только операторские ротация, + provisioning, rollout и очистка истории, которые исходный prompt прямо запрещает + выполнять без отдельных production-полномочий. +- Полный backend PostgreSQL/Testcontainers-прогон: 277 тестов, 0 failures, 0 errors, + 0 skipped. Четыре frontend test-suite, `npm run check`, Compose validation, + Workflow YAML, artifact/deploy shell-тесты и `git diff --check` прошли. +- `kubectl kustomize ../k8s`, production secret-scan, синтаксис deploy-скрипта и расширенный + artifact-scan прошли. В production-манифестах отсутствуют mutable `latest` и `:main`. +- Каталог Flyway содержит ровно `V1__init.sql`; V2–V4 и другие дополнительные миграции + отсутствуют. Финальный SHA-256 V1: + `fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`. + ## Точка продолжения -Текущий этап: **№ 29 — единая временная зона бизнес-дат**. +Текущий этап: **реализация и проверка всех разрешённых изменений завершены**. -Следующая операция: +Оставшееся операторское действие владельца: -1. построить graphify-контекст всех `LocalDate.now()`/`LocalDateTime.now()` и frontend - `toISOString()` в бизнес-операциях; -2. внедрить единый `Clock`/`ZoneId` Europe/Moscow без изменения абсолютных timestamp; -3. зафиксировать `TZ`/`user.timezone` в Compose и Kubernetes; -4. проверить границы московской полуночи и date-only форматирование без UTC-сдвига. +1. при готовности production-полномочий выполнить `docs/SECURITY_RUNBOOK.md`: ротацию, + provisioning, rollout и очистку истории для № 1. Эти действия не выполнялись + автоматически и не требуются для завершения репозиторной реализации. diff --git a/DEVOPS.md b/DEVOPS.md index 4ce8624..05a37cf 100644 --- a/DEVOPS.md +++ b/DEVOPS.md @@ -88,12 +88,12 @@ graph TD * **Frontend (`frontend.yaml`)**: * Реализован в виде `Deployment` с 2 репликами для обеспечения высокой доступности (HA) и возможности бесшовного обновления rolling-update. - * В качестве базового образа контейнера применен легковесный веб-сервер Apache HTTPd (`httpd:alpine`). + * В качестве базового образа контейнера применен легковесный веб-сервер Apache HTTPd; версия и manifest digest закреплены в Dockerfile. * Для балансировки и внутреннего доступа настроен `Service` типа ClusterIP, слушающий порт 80. * **Backend (`backend.yaml`)**: * `Deployment` с 1-2 репликами (детали балансировки конфигурации описаны ниже). - * Для сборки образов используется multi-stage сборка Maven (JDK 17) и запуск под управлением `eclipse-temurin:17-jre-alpine`. + * Для сборки образов используется multi-stage сборка Maven (JDK 17); build/runtime-образы одновременно закреплены точным tag и manifest digest. * Интегрирован Java-агент OpenTelemetry для автоматического инструментирования трассировки и логов. * Для связи с Ingress настроен ClusterIP-сервис на порту 8080. @@ -194,22 +194,26 @@ graph TD ### 5.1 Автоматизация сборки (CI) В репозитории проекта создан workflow-манифест `.gitea/workflows/docker-build.yaml`. При каждом пуше изменений в ветку `main` запускается конвейер: -1. **Checkout**: Загрузка актуального исходного кода проекта на ранер. -2. **Setup Buildx**: Инициализация Docker Buildx для оптимизации кэширования слоев. -3. **Login to Registry**: Аутентификация во встроенном реестре контейнеров Gitea Container Registry (`git.zuev.company`) с использованием сервисного токена `ZUEV_TOKEN` (права `write:package`). -4. **Build & Push**: Параллельная сборка Docker-образов для бэкенда и фронтенда с тегом `latest` и отправка их в приватный реестр. +1. **Checks**: Backend/frontend-тесты, Compose validation, тест immutable rollback и статическая проверка закрепления артефактов. +2. **Build & Push**: Параллельная сборка и публикация backend/frontend с SHA-tag или release tag; mutable `latest` не создаётся. +3. **Attestations**: BuildKit добавляет к обоим образам SBOM и максимальную provenance-attestation. +4. **Security scan**: Закреплённый digest Trivy блокирует доставку при исправимых уязвимостях `HIGH`/`CRITICAL`. +5. **Deploy**: Только прошедшие gates registry digests передаются в production rollout. Все сторонние Actions закреплены полными commit SHA. ### 5.2 Доставка в кластер (CD) Для авторизации нод K3s в приватном реестре Gitea мной был создан секрет `gitea-registry` типа `docker-registry` в пространстве имен `magistr`. Этот секрет ассоциирован со спецификациями деплоев через директиву `imagePullSecrets`. -Непосредственно Gitea Actions Runner работает как демон `act_runner` внутри изолированного LXC контейнера (CTID 107). В пайплайне шаг развертывания (`deploy-to-k8s`) динамически генерирует `kubeconfig` из секрета, устанавливает утилиту `kubectl` и выполняет императивное обновление релизов без использования тяжеловесных GitOps операторов: +Непосредственно Gitea Actions Runner работает как демон `act_runner` внутри изолированного LXC контейнера (CTID 107). В пайплайне шаг развертывания (`deploy-to-k8s`) динамически генерирует `kubeconfig` из секрета, проверяет checksum закреплённой версии `kubectl` и выполняет атомарное обновление обоих образов без использования тяжеловесных GitOps операторов: ```bash -kubectl rollout restart deployment backend frontend -n magistr -kubectl rollout status deployment/frontend -n magistr --timeout=120s -kubectl rollout status deployment/backend -n magistr --timeout=300s +bash scripts/deploy-images.sh \ + gitea.zuev.company/zuev/magistr-backend@sha256: \ + gitea.zuev.company/zuev/magistr-frontend@sha256: ``` -Поскольку манифесты используют `imagePullPolicy: Always` и тег `:main`, поды автоматически скачивают свежие слои собранных образов. + +Скрипт принимает только полные `image@sha256:...`, ожидает готовность обоих Deployment и при +ошибке возвращает предыдущую пару digest. Поэтому содержимое релиза не зависит от повторного +разрешения mutable tag. --- diff --git a/STARTUP_GUIDE.md b/STARTUP_GUIDE.md new file mode 100644 index 0000000..ff28b33 --- /dev/null +++ b/STARTUP_GUIDE.md @@ -0,0 +1,118 @@ +# Инструкция запуска Magistr + +Ниже — минимальный порядок действий. Подробности по инфраструктуре и секретам находятся в +[`docs/INFRASTRUCTURE.md`](docs/INFRASTRUCTURE.md) и +[`docs/SECURITY_RUNBOOK.md`](docs/SECURITY_RUNBOOK.md). + +## 1. Локальный запуск + +Нужны Git, Docker Engine, Docker Compose и запущенный Caddy из `../сaddy-proxy/`. + +1. В корне проекта создайте локальный файл настроек: + + ```bash + cp .env.example .env + openssl rand -base64 36 # значение POSTGRES_PASSWORD + openssl rand -base64 48 # значение JWT_SECRET + ``` + + Вставьте полученные значения в `.env`. Файл `.env` не коммитьте. + +2. Один раз создайте общую Docker-сеть, затем запустите Caddy и Magistr: + + ```bash + docker network inspect proxy >/dev/null 2>&1 || docker network create proxy + docker compose -f ../сaddy-proxy/compose.yaml up -d + docker compose config --quiet + docker compose up -d --build + docker compose ps + ``` + +3. Откройте `https://localhost` (`http://localhost` перенаправит на HTTPS). Проверьте backend + через Caddy: + + ```bash + curl -kfsS https://localhost/actuator/health/readiness + ``` + + Если браузер не доверяет локальному сертификату Caddy, на CachyOS/Arch выполните: + + ```bash + docker cp caddy:/data/caddy/pki/authorities/local/root.crt /tmp/caddy-local-root.crt + sudo trust anchor --store /tmp/caddy-local-root.crt + ``` + + До установки проверьте SHA-256 отпечаток командой + `openssl x509 -in /tmp/caddy-local-root.crt -noout -fingerprint -sha256`, затем полностью + перезапустите браузер. + + Для первого локального входа: `admin` / `admin`. Эти данные предназначены только для + разработки. + +4. Если запуск не удался: + + ```bash + docker compose logs --tail=200 backend db frontend + ``` + + Полный локальный сброс БД выполняется командой `docker compose down -v`, но она удалит + все локальные данные. Обычная остановка без удаления данных: `docker compose down`. + +## 2. Первый запуск в production + +1. Подготовьте K3s/Kubernetes-кластер и убедитесь, что `kubectl get nodes` работает. + PostgreSQL в текущие манифесты не входит: заранее создайте доступную из кластера БД для + каждого университета. Пользователь БД должен иметь права на создание и изменение схемы — + Flyway применит `V1__init.sql` автоматически. + +2. Настройте DNS для `magistr.zuev.company` и остальных tenant-доменов на публичный + reverse proxy/Ingress. В текущем `../k8s/ingress.yaml` нет секции TLS: для HTTPS нужно + настроить внешний Caddy с сертификатом либо добавить cert-manager/TLS в кластер. + +3. Создайте namespace и четыре обязательных Secret по + [`docs/SECURITY_RUNBOOK.md`](docs/SECURITY_RUNBOOK.md): + + - `app-secret`: `JWT_SECRET`, `POSTGRES_USER`, `POSTGRES_PASSWORD`; + - `tenants-secret`: файл `tenants.json`; + - `otel-postgres-secret`: подключения Collector к БД; + - `gitea-registry`: доступ к приватным Docker-образам. + + Для `magistr.zuev.company` запись в `tenants.json` должна иметь `"domain": "magistr"` + и реальный JDBC URL. Не сохраняйте значения Secret в Git или логах. + +4. В Gitea Actions добавьте секреты `ZUEV_TOKEN` (доступ к registry) и + `KUBECONFIG_DATA` (kubeconfig в Base64). Push в `main` соберёт, проверит и опубликует + образы. При самом первом запуске автоматический deploy может ещё не найти Deployment — + возьмите два опубликованных digest из CI/registry и выполните bootstrap вручную: + + ```bash + export BACKEND_IMAGE_REF='gitea.zuev.company/zuev/magistr-backend@sha256:' + export FRONTEND_IMAGE_REF='gitea.zuev.company/zuev/magistr-frontend@sha256:' + K8S_DIR=../k8s bash scripts/check-production-secrets.sh + K8S_DIR=../k8s bash scripts/check-artifact-pinning.sh + kubectl kustomize ../k8s >/dev/null + bash ../k8s/deploy.sh apply + ``` + +5. Проверьте результат: + + ```bash + bash ../k8s/deploy.sh status + kubectl rollout status deployment/backend -n magistr --timeout=300s + kubectl logs -n magistr -l app=backend --tail=200 + curl -fsS https://magistr.zuev.company/ + ``` + + После первого входа немедленно смените/отключите все тестовые пароли из `V1__init.sql`. + Следующие push в `main` CI/CD сможет развёртывать автоматически. + +## 3. Что могу выполнить я + +По вашей команде я могу подготовить `.env`, запустить и диагностировать локальный Compose, +проверить/исправить код и манифесты, прогнать тесты и dry-run Kubernetes, а при доступном +`kubectl` — проверить состояние кластера. + +Без вас я не могу получить реальные пароли и токены, настроить DNS/сертификаты у внешнего +провайдера или войти в Gitea/Kubernetes, если доступы не предоставлены. Production deploy, +ротацию Secret и удаление БД я не выполняю без отдельного явного разрешения: это меняет +внешнюю систему и может прервать работу либо уничтожить данные. diff --git a/backend/Dockerfile b/backend/Dockerfile index 995c9a6..234cf97 100755 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM maven:3.9-eclipse-temurin-17 AS build +FROM maven:3.9.9-eclipse-temurin-17@sha256:f58d59b6273e785ac0a4477f6e9b5ba1d7731c75b906c0f7b34076f1851318cc AS build WORKDIR /app COPY pom.xml . RUN mvn dependency:go-offline -B @@ -14,7 +14,7 @@ RUN mvn org.apache.maven.plugins:maven-dependency-plugin:3.6.1:copy \ -B \ && echo "${OTEL_JAVAAGENT_SHA256} /app/opentelemetry-javaagent.jar" | sha256sum -c - -FROM eclipse-temurin:17-jre-alpine +FROM eclipse-temurin:17-jre-alpine@sha256:02320dd4ce20e243dfb915c686089cf9315c763084fafbb12d5c9993aee18b57 # Best practice: run as a non-root user RUN addgroup -S spring && adduser -S spring -G spring diff --git a/backend/src/main/java/com/magistr/app/controller/DatabaseConstraintViolationMapper.java b/backend/src/main/java/com/magistr/app/controller/DatabaseConstraintViolationMapper.java index 360f0b4..eb0c3ca 100644 --- a/backend/src/main/java/com/magistr/app/controller/DatabaseConstraintViolationMapper.java +++ b/backend/src/main/java/com/magistr/app/controller/DatabaseConstraintViolationMapper.java @@ -38,6 +38,10 @@ final class DatabaseConstraintViolationMapper { badRequest("chk_calendar_days_week_positive", "Номер недели должен быть положительным"), badRequest("chk_calendar_days_day", "День недели должен быть от 1 до 7"), badRequest("chk_academic_calendar_subjects_semester_positive", "Номер семестра должен быть положительным"), + badRequest("chk_student_groups_group_size_positive", "Численность группы должна быть больше нуля"), + badRequest("chk_student_groups_year_start_positive", "Год начала обучения должен быть больше нуля"), + badRequest("chk_subgroups_student_capacity_positive", "Численность подгруппы должна быть больше нуля"), + badRequest("chk_student_group_subgroup_capacity", "Сумма численностей активных подгрупп не может превышать численность группы"), badRequest("chk_schedule_rules_type_hours_non_negative", "Количество академических часов не может быть отрицательным"), badRequest("chk_schedule_rules_has_type_hours", "В правиле должен быть хотя бы один тип занятия с часами"), badRequest("chk_schedule_rules_start_weeks_positive", "Неделя начала занятия должна быть положительной"), diff --git a/backend/src/main/java/com/magistr/app/controller/GroupController.java b/backend/src/main/java/com/magistr/app/controller/GroupController.java index ec4d97d..85eb0f5 100755 --- a/backend/src/main/java/com/magistr/app/controller/GroupController.java +++ b/backend/src/main/java/com/magistr/app/controller/GroupController.java @@ -6,7 +6,6 @@ import com.magistr.app.dto.CreateGroupRequest; import com.magistr.app.dto.GroupCalendarAssignmentDto; import com.magistr.app.dto.GroupResponse; import com.magistr.app.model.AcademicCalendarSubject; -import com.magistr.app.model.EducationForm; import com.magistr.app.model.Role; import com.magistr.app.model.Speciality; import com.magistr.app.model.SpecialtyProfile; @@ -31,7 +30,6 @@ import java.time.LocalDate; import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -43,9 +41,6 @@ public class GroupController { private static final Logger logger = LoggerFactory.getLogger(GroupController.class); private final GroupRepository groupRepository; - private final EducationFormRepository educationFormRepository; - private final SpecialtiesRepository specialtiesRepository; - private final SpecialtyProfileRepository specialtyProfileRepository; private final AcademicCalendarSubjectRepository calendarSubjectRepository; private final StudentGroupCalendarAssignmentRepository assignmentRepository; private final ScheduleGeneratorService scheduleGeneratorService; @@ -54,25 +49,18 @@ public class GroupController { private final BusinessTimeService businessTime; public GroupController(GroupRepository groupRepository, - EducationFormRepository educationFormRepository, - SpecialtiesRepository specialtiesRepository, - SpecialtyProfileRepository specialtyProfileRepository, AcademicCalendarSubjectRepository calendarSubjectRepository, StudentGroupCalendarAssignmentRepository assignmentRepository, ScheduleGeneratorService scheduleGeneratorService, StudentGroupLifecycleService groupLifecycleService, AcademicStructureService academicStructureService) { - this(groupRepository, educationFormRepository, specialtiesRepository, - specialtyProfileRepository, calendarSubjectRepository, assignmentRepository, + this(groupRepository, calendarSubjectRepository, assignmentRepository, scheduleGeneratorService, groupLifecycleService, academicStructureService, BusinessTimeService.systemDefault()); } @Autowired public GroupController(GroupRepository groupRepository, - EducationFormRepository educationFormRepository, - SpecialtiesRepository specialtiesRepository, - SpecialtyProfileRepository specialtyProfileRepository, AcademicCalendarSubjectRepository calendarSubjectRepository, StudentGroupCalendarAssignmentRepository assignmentRepository, ScheduleGeneratorService scheduleGeneratorService, @@ -80,9 +68,6 @@ public class GroupController { AcademicStructureService academicStructureService, BusinessTimeService businessTime) { this.groupRepository = groupRepository; - this.educationFormRepository = educationFormRepository; - this.specialtiesRepository = specialtiesRepository; - this.specialtyProfileRepository = specialtyProfileRepository; this.calendarSubjectRepository = calendarSubjectRepository; this.assignmentRepository = assignmentRepository; this.scheduleGeneratorService = scheduleGeneratorService; @@ -144,46 +129,10 @@ public class GroupController { @PostMapping @RequireRoles({Role.ADMIN}) public ResponseEntity createGroup(@RequestBody CreateGroupRequest request) { - logger.info("Получен запрос на создание новой группы: name = {}, groupSize = {}, educationFormId = {}, departmentId = {}, yearStartStudy = {}", - request.getName(), request.getGroupSize(), request.getEducationFormId(), request.getDepartmentId(), request.getYearStartStudy()); - try { - ResponseEntity validationError = validateGroupRequest(request); - if (validationError != null) { - return validationError; - } - - Optional efOpt = educationFormRepository.findById(request.getEducationFormId()); - if (efOpt.isEmpty()) { - return ResponseEntity.badRequest().body(Map.of("message", "Форма обучения не найдена")); - } - Speciality speciality = specialtiesRepository.findById(request.getEffectiveSpecialtyId()) - .orElse(null); - if (speciality == null) { - return ResponseEntity.badRequest().body(Map.of("message", "Специальность не найдена")); - } - SpecialtyProfile profile = specialtyProfileRepository.findById(request.getSpecialtyProfileId()) - .orElse(null); - if (profile == null || !profile.getSpeciality().getId().equals(speciality.getId())) { - return ResponseEntity.badRequest().body(Map.of("message", "Профиль обучения не найден для выбранной специальности")); - } - - StudentGroup group = new StudentGroup(); - group.setName(request.getName().trim()); - group.setGroupSize(request.getGroupSize()); - group.setEducationForm(efOpt.get()); - group.setDepartmentId(request.getDepartmentId()); - group.setYearStartStudy(request.getYearStartStudy()); - group.setSpeciality(speciality); - group.setSpecialtyProfile(profile); - groupRepository.save(group); - - logger.info("Группа успешно создана с ID - {}", group.getId()); - - return ResponseEntity.ok(mapToResponse(group)); - } catch (Exception e) { - logger.error("Ошибка при создании группы", e); - throw e; - } + logger.info("Получен запрос на создание новой группы"); + StudentGroup group = academicStructureService.createGroup(request); + logger.info("Группа успешно создана с ID - {}", group.getId()); + return ResponseEntity.ok(mapToResponse(group)); } @PutMapping("/{id}") @@ -222,36 +171,6 @@ public class GroupController { return ResponseEntity.ok(mapToResponse(group)); } - private ResponseEntity validateGroupRequest(CreateGroupRequest request) { - if (request.getName() == null || request.getName().isBlank()) { - return validationError("Название группы обязательно"); - } - if (request.getGroupSize() == null) { - return validationError("Численность группы обязательна"); - } - if (request.getEducationFormId() == null) { - return validationError("Форма обучения обязательна"); - } - if (request.getDepartmentId() == null || request.getDepartmentId() == 0) { - return validationError("ID кафедры обязателен"); - } - if (request.getYearStartStudy() == null || request.getYearStartStudy() == 0) { - return validationError("Год начала обучения обязателен"); - } - if (request.getEffectiveSpecialtyId() == null || request.getEffectiveSpecialtyId() == 0) { - return validationError("Код специальности обязателен"); - } - if (request.getSpecialtyProfileId() == null || request.getSpecialtyProfileId() == 0) { - return validationError("Профиль обучения обязателен"); - } - return null; - } - - private ResponseEntity validationError(String errorMessage) { - logger.error("Ошибка валидации: {}", errorMessage); - return ResponseEntity.badRequest().body(Map.of("message", errorMessage)); - } - private GroupResponse mapToResponse(StudentGroup group) { LocalDate today = businessTime.today(); int course = CourseAndSemesterCalculator.getActualCourse(group.getYearStartStudy(), today); diff --git a/backend/src/main/java/com/magistr/app/controller/SubgroupController.java b/backend/src/main/java/com/magistr/app/controller/SubgroupController.java index ec99f95..58abb1f 100644 --- a/backend/src/main/java/com/magistr/app/controller/SubgroupController.java +++ b/backend/src/main/java/com/magistr/app/controller/SubgroupController.java @@ -10,6 +10,7 @@ import com.magistr.app.repository.ScheduleRuleSlotRepository; import com.magistr.app.repository.SubgroupRepository; import com.magistr.app.service.ScheduleGeneratorService; import org.springframework.http.ResponseEntity; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -53,8 +54,9 @@ public class SubgroupController { @PostMapping("/api/groups/{groupId}/subgroups") @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) + @Transactional public ResponseEntity create(@PathVariable Long groupId, @RequestBody SubgroupDto request) { - StudentGroup group = groupRepository.findById(groupId).orElse(null); + StudentGroup group = groupRepository.findByIdForUpdate(groupId).orElse(null); if (group == null) { return ResponseEntity.notFound().build(); } @@ -81,9 +83,14 @@ public class SubgroupController { @PutMapping("/api/groups/{groupId}/subgroups/{id}") @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) + @Transactional public ResponseEntity update(@PathVariable Long groupId, @PathVariable Long id, @RequestBody SubgroupDto request) { + StudentGroup group = groupRepository.findByIdForUpdate(groupId).orElse(null); + if (group == null) { + return ResponseEntity.notFound().build(); + } Subgroup subgroup = subgroupRepository.findByIdAndStudentGroupId(id, groupId).orElse(null); if (subgroup == null) { return ResponseEntity.notFound().build(); @@ -98,7 +105,7 @@ public class SubgroupController { if (duplicateName) { return ResponseEntity.badRequest().body(Map.of("message", "Подгруппа с таким названием уже есть в группе")); } - String capacityError = validateGroupCapacity(subgroup.getStudentGroup(), id, request.studentCapacity()); + String capacityError = validateGroupCapacity(group, id, request.studentCapacity()); if (capacityError != null) { return ResponseEntity.badRequest().body(Map.of("message", capacityError)); } @@ -112,7 +119,11 @@ public class SubgroupController { @DeleteMapping("/api/groups/{groupId}/subgroups/{id}") @RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE}) + @Transactional public ResponseEntity delete(@PathVariable Long groupId, @PathVariable Long id) { + if (groupRepository.findByIdForUpdate(groupId).isEmpty()) { + return ResponseEntity.notFound().build(); + } Subgroup subgroup = subgroupRepository.findByIdAndStudentGroupId(id, groupId).orElse(null); if (subgroup == null) { return ResponseEntity.notFound().build(); diff --git a/backend/src/main/java/com/magistr/app/model/Subgroup.java b/backend/src/main/java/com/magistr/app/model/Subgroup.java index e2e5ca0..c17ce6f 100644 --- a/backend/src/main/java/com/magistr/app/model/Subgroup.java +++ b/backend/src/main/java/com/magistr/app/model/Subgroup.java @@ -17,7 +17,7 @@ public class Subgroup extends LifecycleEntity { @Column(nullable = false, length = 100) private String name; - @Column(name = "student_capacity") + @Column(name = "student_capacity", nullable = false) private Integer studentCapacity; public Long getId() { diff --git a/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java b/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java index c8a48ae..24e3232 100644 --- a/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java +++ b/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java @@ -19,6 +19,7 @@ import com.magistr.app.repository.GroupRepository; import com.magistr.app.repository.SpecialtiesRepository; import com.magistr.app.repository.SpecialtyProfileRepository; import com.magistr.app.repository.StudentGroupCalendarAssignmentRepository; +import com.magistr.app.repository.SubgroupRepository; import com.magistr.app.utils.CourseAndSemesterCalculator; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; @@ -41,6 +42,7 @@ public class AcademicStructureService { private final EducationFormRepository educationFormRepository; private final GroupRepository groupRepository; private final StudentGroupCalendarAssignmentRepository assignmentRepository; + private final SubgroupRepository subgroupRepository; private final ScheduleGeneratorService scheduleGeneratorService; public AcademicStructureService(AcademicCalendarRepository calendarRepository, @@ -52,6 +54,7 @@ public class AcademicStructureService { EducationFormRepository educationFormRepository, GroupRepository groupRepository, StudentGroupCalendarAssignmentRepository assignmentRepository, + SubgroupRepository subgroupRepository, ScheduleGeneratorService scheduleGeneratorService) { this.calendarRepository = calendarRepository; this.calendarDayRepository = calendarDayRepository; @@ -62,9 +65,22 @@ public class AcademicStructureService { this.educationFormRepository = educationFormRepository; this.groupRepository = groupRepository; this.assignmentRepository = assignmentRepository; + this.subgroupRepository = subgroupRepository; this.scheduleGeneratorService = scheduleGeneratorService; } + @Transactional + public StudentGroup createGroup(CreateGroupRequest request) { + validateGroupRequest(request); + GroupDimensions candidate = resolveGroupDimensions(request); + + StudentGroup group = new StudentGroup(); + applyGroupDimensions(group, request, candidate); + StudentGroup saved = saveGroup(group); + clearScheduleCacheAfterCommit(); + return saved; + } + @Transactional public AcademicCalendar updateCalendar(Long id, AcademicCalendarDto request) { validateCalendarRequest(request); @@ -122,6 +138,13 @@ public class AcademicStructureService { validateGroupRequest(request); StudentGroup group = groupRepository.findByIdForUpdate(id) .orElseThrow(() -> new NoSuchElementException("Учебная группа не найдена")); + long activeSubgroupCapacity = subgroupRepository.sumActiveStudentCapacityByGroupId(id); + if (request.getGroupSize() < activeSubgroupCapacity) { + throw new IllegalArgumentException( + "Численность группы не может быть меньше суммы численностей активных подгрупп (" + + activeSubgroupCapacity + " чел.)" + ); + } GroupDimensions candidate = resolveGroupDimensions(request); boolean incompatibleAssignment = assignmentRepository.findByGroupIdWithDetails(id).stream() @@ -139,13 +162,7 @@ public class AcademicStructureService { ); } - group.setName(request.getName().trim()); - group.setGroupSize(request.getGroupSize()); - group.setEducationForm(candidate.studyForm()); - group.setDepartmentId(request.getDepartmentId()); - group.setYearStartStudy(request.getYearStartStudy()); - group.setSpeciality(candidate.speciality()); - group.setSpecialtyProfile(candidate.profile()); + applyGroupDimensions(group, request, candidate); StudentGroup saved = saveGroup(group); clearScheduleCacheAfterCommit(); return saved; @@ -217,26 +234,38 @@ public class AcademicStructureService { if (request.getName() == null || request.getName().isBlank()) { throw new IllegalArgumentException("Название группы обязательно"); } - if (request.getGroupSize() == null) { - throw new IllegalArgumentException("Численность группы обязательна"); + if (request.getGroupSize() == null || request.getGroupSize() <= 0) { + throw new IllegalArgumentException("Численность группы должна быть больше нуля"); } - if (request.getEducationFormId() == null) { + if (request.getEducationFormId() == null || request.getEducationFormId() <= 0) { throw new IllegalArgumentException("Форма обучения обязательна"); } - if (request.getDepartmentId() == null || request.getDepartmentId() == 0) { + if (request.getDepartmentId() == null || request.getDepartmentId() <= 0) { throw new IllegalArgumentException("ID кафедры обязателен"); } - if (request.getYearStartStudy() == null || request.getYearStartStudy() == 0) { - throw new IllegalArgumentException("Год начала обучения обязателен"); + if (request.getYearStartStudy() == null || request.getYearStartStudy() <= 0) { + throw new IllegalArgumentException("Год начала обучения должен быть больше нуля"); } - if (request.getEffectiveSpecialtyId() == null || request.getEffectiveSpecialtyId() == 0) { + if (request.getEffectiveSpecialtyId() == null || request.getEffectiveSpecialtyId() <= 0) { throw new IllegalArgumentException("Код специальности обязателен"); } - if (request.getSpecialtyProfileId() == null || request.getSpecialtyProfileId() == 0) { + if (request.getSpecialtyProfileId() == null || request.getSpecialtyProfileId() <= 0) { throw new IllegalArgumentException("Профиль обучения обязателен"); } } + private void applyGroupDimensions(StudentGroup group, + CreateGroupRequest request, + GroupDimensions candidate) { + group.setName(request.getName().trim()); + group.setGroupSize(request.getGroupSize()); + group.setEducationForm(candidate.studyForm()); + group.setDepartmentId(request.getDepartmentId()); + group.setYearStartStudy(request.getYearStartStudy()); + group.setSpeciality(candidate.speciality()); + group.setSpecialtyProfile(candidate.profile()); + } + private CalendarDimensions resolveCalendarDimensions(AcademicCalendarDto request) { AcademicYear academicYear = academicYearRepository.findById(request.academicYearId()) .orElseThrow(() -> new IllegalArgumentException("Учебный год не найден")); diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java b/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java index 37bf881..8f12ec7 100644 --- a/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java +++ b/backend/src/main/java/com/magistr/app/service/ScheduleGeneratorService.java @@ -284,7 +284,8 @@ public class ScheduleGeneratorService { if (endDate.isBefore(startDate)) { throw new IllegalArgumentException("Дата окончания не может быть раньше даты начала"); } - if (java.time.temporal.ChronoUnit.DAYS.between(startDate, endDate) > MAX_RANGE_DAYS) { + long inclusiveDays = java.time.temporal.ChronoUnit.DAYS.between(startDate, endDate) + 1; + if (inclusiveDays > MAX_RANGE_DAYS) { throw new IllegalArgumentException("Диапазон расписания не может превышать 120 дней"); } } diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java b/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java index eb2f021..c70689e 100644 --- a/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java +++ b/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java @@ -298,7 +298,8 @@ public class ScheduleQueryService { if (endDate.isBefore(startDate)) { throw new IllegalArgumentException("Дата окончания не может быть раньше даты начала"); } - if (ChronoUnit.DAYS.between(startDate, endDate) > MAX_RANGE_DAYS) { + long inclusiveDays = ChronoUnit.DAYS.between(startDate, endDate) + 1; + if (inclusiveDays > MAX_RANGE_DAYS) { throw new IllegalArgumentException("Диапазон расписания не может превышать 120 дней"); } } diff --git a/backend/src/main/resources/db/migration/V1__init.sql b/backend/src/main/resources/db/migration/V1__init.sql index 734d875..175b09a 100755 --- a/backend/src/main/resources/db/migration/V1__init.sql +++ b/backend/src/main/resources/db/migration/V1__init.sql @@ -254,12 +254,14 @@ ON CONFLICT (name) DO NOTHING; CREATE TABLE IF NOT EXISTS student_groups ( id BIGSERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, - group_size BIGINT NOT NULL, + group_size BIGINT NOT NULL + CONSTRAINT chk_student_groups_group_size_positive CHECK (group_size > 0), education_form_id BIGINT NOT NULL REFERENCES education_forms(id), department_id BIGINT NOT NULL REFERENCES departments(id), specialty_id BIGINT NOT NULL REFERENCES specialties(id), specialty_profile_id BIGINT NOT NULL REFERENCES specialty_profiles(id), - year_start_study BIGINT NOT NULL, + year_start_study BIGINT NOT NULL + CONSTRAINT chk_student_groups_year_start_positive CHECK (year_start_study > 0), created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, @@ -289,7 +291,8 @@ CREATE TABLE IF NOT EXISTS subgroups ( id BIGSERIAL PRIMARY KEY, group_id BIGINT NOT NULL REFERENCES student_groups(id) ON DELETE CASCADE, name VARCHAR(100) NOT NULL, - student_capacity INT, + student_capacity INT NOT NULL + CONSTRAINT chk_subgroups_student_capacity_positive CHECK (student_capacity > 0), status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', active_from DATE, active_to DATE, @@ -299,6 +302,76 @@ CREATE TABLE IF NOT EXISTS subgroups ( UNIQUE(group_id, name) ); +CREATE OR REPLACE FUNCTION validate_student_group_subgroup_capacity() +RETURNS TRIGGER AS $$ +DECLARE + active_capacity BIGINT; +BEGIN + SELECT COALESCE(SUM(student_capacity), 0) + INTO active_capacity + FROM subgroups + WHERE group_id = NEW.id + AND status <> 'ARCHIVED'; + + IF active_capacity > NEW.group_size THEN + RAISE EXCEPTION 'Сумма численностей активных подгрупп не может превышать численность группы' + USING ERRCODE = '23514', + CONSTRAINT = 'chk_student_group_subgroup_capacity'; + END IF; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER validate_student_group_subgroup_capacity + BEFORE UPDATE OF group_size ON student_groups + FOR EACH ROW + EXECUTE FUNCTION validate_student_group_subgroup_capacity(); + +CREATE OR REPLACE FUNCTION validate_subgroup_student_capacity() +RETURNS TRIGGER AS $$ +DECLARE + group_capacity BIGINT; + allocated_capacity BIGINT; +BEGIN + SELECT group_size + INTO group_capacity + FROM student_groups + WHERE id = NEW.group_id + FOR UPDATE; + + IF group_capacity IS NULL OR NEW.status = 'ARCHIVED' THEN + RETURN NEW; + END IF; + + IF TG_OP = 'INSERT' THEN + SELECT COALESCE(SUM(student_capacity), 0) + INTO allocated_capacity + FROM subgroups + WHERE group_id = NEW.group_id + AND status <> 'ARCHIVED'; + ELSE + SELECT COALESCE(SUM(student_capacity), 0) + INTO allocated_capacity + FROM subgroups + WHERE group_id = NEW.group_id + AND status <> 'ARCHIVED' + AND id <> OLD.id; + END IF; + + IF allocated_capacity + NEW.student_capacity > group_capacity THEN + RAISE EXCEPTION 'Сумма численностей активных подгрупп не может превышать численность группы' + USING ERRCODE = '23514', + CONSTRAINT = 'chk_student_group_subgroup_capacity'; + END IF; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER validate_subgroup_student_capacity + BEFORE INSERT OR UPDATE OF group_id, student_capacity, status ON subgroups + FOR EACH ROW + EXECUTE FUNCTION validate_subgroup_student_capacity(); + INSERT INTO subgroups (group_id, name, student_capacity) SELECT sg.id, diff --git a/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitConcurrencyIntegrationTest.java index 62227ee..62ed96f 100644 --- a/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitConcurrencyIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/config/auth/LoginRateLimitConcurrencyIntegrationTest.java @@ -46,7 +46,8 @@ class LoginRateLimitConcurrencyIntegrationTest { private static final Instant NOW = Instant.parse("2026-07-19T09:00:00Z"); @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java index 8f197b1..bbeef02 100644 --- a/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/config/auth/RefreshTokenServiceConcurrencyIntegrationTest.java @@ -51,7 +51,8 @@ class RefreshTokenServiceConcurrencyIntegrationTest { private static final String TENANT = "test-tenant"; @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/backend/src/test/java/com/magistr/app/migration/AcademicPeriodInvariantMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/AcademicPeriodInvariantMigrationIntegrationTest.java index c4fd3a1..e796481 100644 --- a/backend/src/test/java/com/magistr/app/migration/AcademicPeriodInvariantMigrationIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/AcademicPeriodInvariantMigrationIntegrationTest.java @@ -32,7 +32,8 @@ class AcademicPeriodInvariantMigrationIntegrationTest { private static final String SEMESTER_OVERLAP_CONSTRAINT = "ex_semesters_year_no_overlap"; @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @Test @DisplayName("V1 разрешает соседние периоды и запрещает overlap или выход семестра за год") diff --git a/backend/src/test/java/com/magistr/app/migration/AcademicStructureInvariantIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/AcademicStructureInvariantIntegrationTest.java index bc07564..4edeefa 100644 --- a/backend/src/test/java/com/magistr/app/migration/AcademicStructureInvariantIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/AcademicStructureInvariantIntegrationTest.java @@ -27,7 +27,8 @@ import static org.assertj.core.api.Assertions.catchThrowable; class AcademicStructureInvariantIntegrationTest { @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @Test @DisplayName("V1 сохраняет назначение и отклоняет несовместимые изменения графика или группы") @@ -205,6 +206,123 @@ class AcademicStructureInvariantIntegrationTest { } } + @Test + @DisplayName("V1 отклоняет неположительную численность и уменьшение группы ниже активных подгрупп") + void baselineProtectsGroupAndSubgroupCapacityConstraints() throws SQLException { + Flyway flyway = baselineFlyway(); + flyway.clean(); + flyway.migrate(); + + try (Connection connection = POSTGRES.createConnection("")) { + long groupId = queryLong( + connection, + "SELECT id FROM student_groups WHERE name = 'ИВТ-21-1'" + ); + + assertSqlState( + () -> insertCapacityGroup(connection, "НУЛЕВАЯ-ГРУППА", 0, 2025), + "23514", + "chk_student_groups_group_size_positive" + ); + assertSqlState( + () -> insertCapacityGroup(connection, "НУЛЕВОЙ-ГОД", 10, 0), + "23514", + "chk_student_groups_year_start_positive" + ); + assertSqlState( + () -> insertSubgroup(connection, groupId, "Нулевая подгруппа", 0), + "23514", + "chk_subgroups_student_capacity_positive" + ); + assertSqlState( + () -> updateLong( + connection, + "UPDATE student_groups SET group_size = ? WHERE id = ?", + 24, + groupId + ), + "23514", + "Сумма численностей активных подгрупп" + ); + + assertThat(queryLong( + connection, + "SELECT group_size FROM student_groups WHERE id = ?", + groupId + )).isEqualTo(25); + } + } + + @Test + @DisplayName("V1 сериализует конкурентное уменьшение группы и добавление подгруппы") + void baselineProtectsConcurrentGroupAndSubgroupCapacityWrites() throws Exception { + Flyway flyway = baselineFlyway(); + flyway.clean(); + flyway.migrate(); + + long groupId; + try (Connection connection = POSTGRES.createConnection("")) { + groupId = insertCapacityGroup(connection, "ГРУППА-ГОНКА-ВМЕСТИМОСТИ", 30, 2025); + insertSubgroup(connection, groupId, "Исходная подгруппа", 20); + } + + ExecutorService executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + try { + long finalGroupId = groupId; + List> futures = List.of( + executor.submit(() -> concurrentWrite( + "UPDATE student_groups SET group_size = ? WHERE id = ?", + List.of(20L, finalGroupId), + ready, + start + )), + executor.submit(() -> concurrentWrite( + "INSERT INTO subgroups (group_id, name, student_capacity) VALUES (?, 'Новая подгруппа', 10)", + List.of(finalGroupId), + ready, + start + )) + ); + + assertThat(ready.await(5, TimeUnit.SECONDS)).isTrue(); + start.countDown(); + List outcomes = List.of( + futures.get(0).get(10, TimeUnit.SECONDS), + futures.get(1).get(10, TimeUnit.SECONDS) + ); + + assertThat(outcomes).filteredOn(WriteOutcome::success).hasSize(1); + assertThat(outcomes).filteredOn(outcome -> !outcome.success()).singleElement() + .satisfies(outcome -> { + assertThat(outcome.sqlState()).isEqualTo("23514"); + assertThat(outcome.message()).contains("Сумма численностей активных подгрупп"); + }); + + try (Connection connection = POSTGRES.createConnection("")) { + long groupSize = queryLong( + connection, + "SELECT group_size FROM student_groups WHERE id = ?", + groupId + ); + long subgroupCapacity = queryLong( + connection, + """ + SELECT COALESCE(SUM(student_capacity), 0) + FROM subgroups + WHERE group_id = ? AND status <> 'ARCHIVED' + """, + groupId + ); + assertThat(subgroupCapacity).isLessThanOrEqualTo(groupSize); + } + } finally { + start.countDown(); + executor.shutdownNow(); + } + } + private WriteOutcome concurrentGroupUpdate(long groupId, long educationFormId, CountDownLatch ready, @@ -304,6 +422,63 @@ class AcademicStructureInvariantIntegrationTest { } } + private long insertCapacityGroup(Connection connection, + String name, + long groupSize, + int yearStartStudy) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO student_groups ( + name, + group_size, + education_form_id, + department_id, + specialty_id, + specialty_profile_id, + year_start_study + ) + SELECT + ?, + ?, + study_form.id, + department.id, + specialty.id, + profile.id, + ? + FROM education_forms study_form + CROSS JOIN departments department + CROSS JOIN specialties specialty + JOIN specialty_profiles profile ON profile.specialty_id = specialty.id + WHERE study_form.name = 'Бакалавриат' + AND department.code = 1 + AND specialty.specialty_code = '09.03.01' + AND profile.name = 'Без профиля' + RETURNING id + """)) { + statement.setString(1, name); + statement.setLong(2, groupSize); + statement.setInt(3, yearStartStudy); + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + } + + private void insertSubgroup(Connection connection, + long groupId, + String name, + int studentCapacity) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO subgroups (group_id, name, student_capacity) + VALUES (?, ?, ?) + """)) { + statement.setLong(1, groupId); + statement.setString(2, name); + statement.setInt(3, studentCapacity); + statement.executeUpdate(); + } + } + private void insertOutOfRangeCalendarDay(Connection connection, long calendarId) throws SQLException { try (PreparedStatement statement = connection.prepareStatement(""" INSERT INTO academic_calendar_days ( diff --git a/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java index 32e5456..a6b305a 100644 --- a/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java @@ -23,7 +23,8 @@ import static org.assertj.core.api.Assertions.catchThrowable; class ScheduleOverrideMigrationIntegrationTest { @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @Test @DisplayName("V1 принимает допустимые варианты и отклоняет недопустимые данные") diff --git a/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java index b81a1ee..7270392 100644 --- a/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/ScheduleRuleHoursMigrationIntegrationTest.java @@ -24,7 +24,8 @@ class ScheduleRuleHoursMigrationIntegrationTest { private static final String EXACT_SLOT_CONSTRAINT = "uq_schedule_rule_slots_exact_payload"; @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @Test @DisplayName("V1 принимает чётные часы и отклоняет нечётное значение каждого вида занятий") diff --git a/backend/src/test/java/com/magistr/app/migration/SubjectOwnershipInvariantIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/SubjectOwnershipInvariantIntegrationTest.java index 71110f4..578d2b4 100644 --- a/backend/src/test/java/com/magistr/app/migration/SubjectOwnershipInvariantIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/SubjectOwnershipInvariantIntegrationTest.java @@ -28,7 +28,8 @@ class SubjectOwnershipInvariantIntegrationTest { private static final String UNIQUE_INDEX = "uq_subjects_name_ci"; @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @Test @DisplayName("V1 запрещает совпадение названия дисциплины без учёта регистра") diff --git a/backend/src/test/java/com/magistr/app/migration/TeacherDepartmentInvariantIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/TeacherDepartmentInvariantIntegrationTest.java index f888261..1506912 100644 --- a/backend/src/test/java/com/magistr/app/migration/TeacherDepartmentInvariantIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/TeacherDepartmentInvariantIntegrationTest.java @@ -31,7 +31,8 @@ class TeacherDepartmentInvariantIntegrationTest { private static final String OVERLAP_CONSTRAINT = "ex_teacher_primary_department_no_overlap"; @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @Test @DisplayName("V1 разрешает соседний перевод и совместительство, но запрещает пересечение основных кафедр") diff --git a/backend/src/test/java/com/magistr/app/migration/TimeSlotInvariantMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/TimeSlotInvariantMigrationIntegrationTest.java index 829313b..7f462e4 100644 --- a/backend/src/test/java/com/magistr/app/migration/TimeSlotInvariantMigrationIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/TimeSlotInvariantMigrationIntegrationTest.java @@ -30,7 +30,8 @@ class TimeSlotInvariantMigrationIntegrationTest { private static final String OVERLAP_CONSTRAINT = "ex_time_slots_scope_no_overlap"; @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @Test @DisplayName("V1 вычислительно связывает длительность, запрещает пересечения и защищает базовые слоты") diff --git a/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java index 1fe0748..d87b827 100644 --- a/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceIntegrationTest.java @@ -43,7 +43,8 @@ import static org.mockito.Mockito.verify; class AcademicCalendarGridServiceIntegrationTest { @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java b/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java index cb5242e..9b8af15 100644 --- a/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java +++ b/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java @@ -19,6 +19,7 @@ import com.magistr.app.repository.GroupRepository; import com.magistr.app.repository.SpecialtiesRepository; import com.magistr.app.repository.SpecialtyProfileRepository; import com.magistr.app.repository.StudentGroupCalendarAssignmentRepository; +import com.magistr.app.repository.SubgroupRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -69,6 +70,8 @@ class AcademicStructureServiceTest { @Mock private StudentGroupCalendarAssignmentRepository assignmentRepository; @Mock + private SubgroupRepository subgroupRepository; + @Mock private ScheduleGeneratorService scheduleGeneratorService; private AcademicStructureService service; @@ -92,6 +95,7 @@ class AcademicStructureServiceTest { educationFormRepository, groupRepository, assignmentRepository, + subgroupRepository, scheduleGeneratorService ); academicYear = academicYear(); @@ -111,6 +115,7 @@ class AcademicStructureServiceTest { when(educationFormRepository.findById(FORM_ID)).thenReturn(Optional.of(studyForm)); when(educationFormRepository.findById(OTHER_FORM_ID)).thenReturn(Optional.of(otherStudyForm)); when(groupRepository.findByIdForUpdate(GROUP_ID)).thenReturn(Optional.of(group)); + when(subgroupRepository.sumActiveStudentCapacityByGroupId(GROUP_ID)).thenReturn(0L); when(calendarRepository.saveAndFlush(any(AcademicCalendar.class))) .thenAnswer(invocation -> invocation.getArgument(0)); when(groupRepository.saveAndFlush(any(StudentGroup.class))) @@ -192,6 +197,56 @@ class AcademicStructureServiceTest { verify(scheduleGeneratorService).clearCache(); } + @Test + void createsGroupThroughSharedValidationAndClearsCache() { + StudentGroup saved = service.createGroup(groupRequest(2025, FORM_ID)); + + assertThat(saved.getName()).isEqualTo("ИВТ-26"); + assertThat(saved.getGroupSize()).isEqualTo(25L); + assertThat(saved.getEducationForm()).isSameAs(studyForm); + verify(groupRepository).saveAndFlush(saved); + verify(scheduleGeneratorService).clearCache(); + } + + @Test + void rejectsNonPositiveGroupSizeOnCreateAndUpdate() { + CreateGroupRequest createRequest = groupRequest(2025, FORM_ID); + createRequest.setGroupSize(0L); + CreateGroupRequest updateRequest = groupRequest(2025, FORM_ID); + updateRequest.setGroupSize(-1L); + + assertThatThrownBy(() -> service.createGroup(createRequest)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Численность группы должна быть больше нуля"); + assertThatThrownBy(() -> service.updateGroup(GROUP_ID, updateRequest)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Численность группы должна быть больше нуля"); + + verify(groupRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsGroupSizeBelowActiveSubgroups() { + when(subgroupRepository.sumActiveStudentCapacityByGroupId(GROUP_ID)).thenReturn(24L); + CreateGroupRequest request = groupRequest(2025, FORM_ID); + request.setGroupSize(23L); + + assertThatThrownBy(() -> service.updateGroup(GROUP_ID, request)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Численность группы не может быть меньше суммы численностей активных подгрупп (24 чел.)"); + + verify(groupRepository, never()).saveAndFlush(any()); + } + + @Test + void rejectsNonPositiveStudyStartYear() { + CreateGroupRequest request = groupRequest(0, FORM_ID); + + assertThatThrownBy(() -> service.createGroup(request)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Год начала обучения должен быть больше нуля"); + } + @Test void rejectsAssignmentWhenGroupCourseIsOutsideCalendar() { group.setYearStartStudy(2020); diff --git a/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java index 60df341..6040310 100644 --- a/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java @@ -41,7 +41,8 @@ class PostgreSqlAdvisoryLockIntegrationTest { private static final LocalDate TEST_DATE = LocalDate.of(2026, 9, 1); @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleGenerationQueryCountTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleGenerationQueryCountTest.java index 9bb02cb..41dd467 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleGenerationQueryCountTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleGenerationQueryCountTest.java @@ -13,6 +13,7 @@ import java.util.stream.IntStream; import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.anyCollection; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.*; @@ -134,6 +135,29 @@ class ScheduleGenerationQueryCountTest { assertThat(repositoryCalls).isEqualTo(7); } + @Test + @DisplayName("Генератор отклоняет 121 включительную дату") + void rejects121InclusiveDates() { + ScheduleGeneratorService generator = new ScheduleGeneratorService( + mock(ScheduleRuleRepository.class), + mock(GroupRepository.class), + mock(UserRepository.class), + mock(AcademicDateService.class), + mock(TimeSlotRepository.class), + mock(TimeSlotScopeRepository.class), + mock(TimeSlotDateAssignmentRepository.class) + ); + LocalDate startDate = LocalDate.of(2026, 1, 1); + + assertThatThrownBy(() -> generator.buildScheduleForGroups( + List.of(), + startDate, + startDate.plusDays(120) + )) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Диапазон расписания не может превышать 120 дней"); + } + private AcademicYear academicYear() { AcademicYear academicYear = new AcademicYear(); academicYear.setId(1L); diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java index 9873600..39d71d1 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTest.java @@ -73,6 +73,37 @@ class ScheduleQueryServiceTest { verify(groupRepository, never()).findAll(); } + @Test + void rangeLimitCountsBothBoundaryDates() { + ScheduleGeneratorService generatorService = mock(ScheduleGeneratorService.class); + GroupRepository groupRepository = mock(GroupRepository.class); + ScheduleOverrideRepository overrideRepository = mock(ScheduleOverrideRepository.class); + StudentGroupLifecycleService groupLifecycleService = mock(StudentGroupLifecycleService.class); + ScheduleQueryService service = new ScheduleQueryService( + generatorService, + groupRepository, + overrideRepository, + groupLifecycleService + ); + LocalDate startDate = LocalDate.of(2026, 1, 1); + LocalDate allowedEndDate = startDate.plusDays(119); + LocalDate rejectedEndDate = startDate.plusDays(120); + when(generatorService.buildScheduleForTeacher(10L, startDate, allowedEndDate)) + .thenReturn(List.of()); + when(overrideRepository.findByLessonDateBetweenWithDetails(startDate, allowedEndDate)) + .thenReturn(List.of()); + + assertThat(service.search(null, 10L, null, null, + null, null, null, null, + startDate, allowedEndDate)).isEmpty(); + + assertThatThrownBy(() -> service.search(null, 10L, null, null, + null, null, null, null, + startDate, rejectedEndDate)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Диапазон расписания не может превышать 120 дней"); + } + @ParameterizedTest @ValueSource(ints = {51, 100}) void aggregationSearchProcessesAllActiveGroupsWithoutInteractiveLimit(int groupCount) { diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java index f164708..806550a 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleRuleServiceConcurrencyIntegrationTest.java @@ -53,7 +53,8 @@ import static org.mockito.Mockito.verify; class ScheduleRuleServiceConcurrencyIntegrationTest { @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java index 3c7a4f0..cfb9e4a 100644 --- a/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/TenantLifecyclePostgreSqlIntegrationTest.java @@ -42,7 +42,8 @@ class TenantLifecyclePostgreSqlIntegrationTest { private static final String VALID_DATABASE = "tenant_valid"; @Container - static final PostgreSQLContainer POSTGRES = new PostgreSQLContainer<>("postgres:16.3-alpine"); + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); private TenantRoutingDataSource routingDataSource; private TenantDatabaseMigrationService migrationService; diff --git a/backend/src/test/java/com/magistr/app/testing/TestContainerImages.java b/backend/src/test/java/com/magistr/app/testing/TestContainerImages.java new file mode 100644 index 0000000..78a0d4a --- /dev/null +++ b/backend/src/test/java/com/magistr/app/testing/TestContainerImages.java @@ -0,0 +1,16 @@ +package com.magistr.app.testing; + +import org.testcontainers.utility.DockerImageName; + +/** + * Единые воспроизводимые образы интеграционных тестов. + */ +public final class TestContainerImages { + + public static final DockerImageName POSTGRES = DockerImageName.parse( + "postgres:16.3-alpine@sha256:36ed71227ae36305d26382657c0b96cbaf298427b3f1eaeb10d77a6dea3eec41" + ).asCompatibleSubstituteFor("postgres"); + + private TestContainerImages() { + } +} diff --git a/compose.yaml b/compose.yaml index 8f263ce..e243f6b 100755 --- a/compose.yaml +++ b/compose.yaml @@ -45,22 +45,22 @@ services: start_period: 20s networks: - magistr + - proxy frontend: restart: unless-stopped build: context: ./frontend dockerfile: Dockerfile - ports: - - "${HTTP_PORT:-80}:80" networks: - magistr + - proxy depends_on: backend: condition: service_healthy db: - image: postgres:16.3-alpine3.20 + image: postgres:16.3-alpine@sha256:36ed71227ae36305d26382657c0b96cbaf298427b3f1eaeb10d77a6dea3eec41 restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-myuser} @@ -79,6 +79,8 @@ services: networks: magistr: driver: bridge + proxy: + external: true volumes: postgres_data: diff --git a/docs/API.md b/docs/API.md index d19efdd..edbb1f1 100644 --- a/docs/API.md +++ b/docs/API.md @@ -8,7 +8,7 @@ ```json { - "timestamp": "2026-05-27T19:47:54", + "timestamp": "2026-05-27T16:47:54Z", "status": 400, "error": "Некорректный запрос", "message": "Некорректные параметры запроса", @@ -18,6 +18,11 @@ Контроллеры, у которых исторически есть собственная обработка ошибок, могут возвращать более короткий объект с полем `message`. +Все поля момента времени (`createdAt`, `updatedAt`, `reviewedAt`, `archivedAt` и +аналогичные) сериализуются как ISO-8601 UTC с суффиксом `Z`. Поля календарной даты +(`date`, `validFrom`, `validTo`, `activeFrom`, `activeTo`) остаются строками `YYYY-MM-DD` +без часового пояса и вычисляются по бизнес-зоне `Europe/Moscow`. + Нарушения ограничений PostgreSQL также обрабатываются централизованно. Известные CHECK возвращают `400`, а UNIQUE, FK и GiST exclusion conflicts — `409` с безопасным русским сообщением. Тексты JDBC, SQL, имена ограничений и внутренние причины исключений в JSON не @@ -360,7 +365,13 @@ Refresh-токен ротируется при каждом успешном о | `startDate` | Да | Начало периода в формате `YYYY-MM-DD` | | `endDate` | Да | Конец периода в формате `YYYY-MM-DD` | -Передаётся ровно один параметр: `groupId` или `teacherId`. Максимальный диапазон — 120 дней. Если у группы нет назначения календарного графика на учебный год даты, расписание для неё возвращается пустым списком. Время пары берётся из базового слота правила, но для конкретной даты может быть заменено субботней или ручной сеткой времени из `/api/admin/time-slots`. +Передаётся ровно один параметр: `groupId` или `teacherId`. Максимальный диапазон — 120 +календарных дат с учётом обеих границ: например, период с 1 января по 30 апреля +невисокосного года содержит ровно 120 дат и разрешён, а по 1 мая — уже 121 дата и +отклоняется. Если у группы нет назначения календарного графика на учебный год даты, +расписание для неё возвращается пустым списком. Время пары берётся из базового слота +правила, но для конкретной даты может быть заменено субботней или ручной сеткой времени из +`/api/admin/time-slots`. **Пример:** ```http @@ -973,7 +984,11 @@ payload обрабатываются один раз, используется } ``` -`specialtyId` и `specialtyProfileId` обязательны. Поле `specialityCode` сохранено как legacy-alias для старых клиентов и исторически содержит ID записи из `/api/specialties`. Текущий курс вычисляется из `yearStartStudy`, но не опускается ниже `0`, если обучение ещё не началось. +`groupSize`, `yearStartStudy` и все связанные идентификаторы должны быть положительными; +`specialtyId` и `specialtyProfileId` обязательны. Поле `specialityCode` сохранено как +legacy-alias для старых клиентов и исторически содержит ID записи из +`/api/specialties`. Текущий курс вычисляется из `yearStartStudy`, но не опускается ниже +`0`, если обучение ещё не началось. Поле `active` показывает, можно ли выбирать группу в текущих рабочих сценариях. `studyState` принимает значения `ACTIVE`, `NOT_STARTED`, `GRADUATED`, `INACTIVE`, `ARCHIVED`. @@ -1000,6 +1015,10 @@ payload обрабатываются один раз, используется Несовместимое изменение возвращает `409 Conflict`; группа и её назначения остаются без изменений. +Если у группы есть активные подгруппы, `groupSize` нельзя уменьшить ниже суммы их +`studentCapacity`. Такой запрос отклоняется без изменения группы. Параллельные изменения +группы и подгрупп сериализуются на backend и проверяются ограничениями PostgreSQL. + ### `DELETE /api/groups/{id}` Архивирование группы. Запись остаётся в истории, поэтому расписание за прошлые даты не теряет связь с группой. @@ -1012,7 +1031,10 @@ payload обрабатываются один раз, используется Подгруппы используются только для деления лабораторных занятий. Лекции и практики не принимают `subgroupId` и `subgroupIds`. -Для одной учебной группы сумма численностей активных подгрупп не может превышать численность самой группы. Frontend на вкладке `groups` настраивает деление как один из режимов: без подгрупп, две подгруппы или три подгруппы. +`studentCapacity` обязателен и должен быть больше нуля. Для одной учебной группы сумма +численностей активных подгрупп не может превышать численность самой группы. Frontend на +вкладке `groups` настраивает деление как один из режимов: без подгрупп, две подгруппы или +три подгруппы. Имена подгрупп уникальны только среди активных подгрупп одной группы, поэтому после архивирования можно создать новую `Подгруппа 1`. Частичное удаление подгруппы из активного деления запрещено, если после удаления оставшиеся подгруппы не покрывают всю численность группы. Количество подгрупп меняется через настройку режима деления. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 8443647..3b37e94 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -273,6 +273,12 @@ GiST exclusion constraints и триггеры PostgreSQL, связывающи ссылочные строки, поэтому гонка прямых записей или нескольких backend-pod не создаёт устаревшее назначение. +Создание и обновление группы используют один validator положительных размерностей. +Уменьшение численности дополнительно сверяется с суммой активных подгрупп. CRUD подгрупп и +изменение группы захватывают строку родительской группы `FOR UPDATE`; V1 повторяет проверку +триггерами обеих таблиц. Поэтому конкурентно могут завершиться только совместимые +изменения, а сумма активных `student_capacity` никогда не превышает `group_size`. + `TeacherDepartmentService` является единым источником датированных решений о кафедре преподавателя. Списки пользователей, кабинет кафедры, права на привязку дисциплин и отчёты нагрузки читают `teacher_department_assignments` на целевую дату, не используют @@ -329,6 +335,8 @@ rollback. Инвалидация кэша зарегистрирована че lost update или проверке устаревшего снимка. Генерация диапазона использует request-scoped снимки вместо запросов из вложенных циклов. +Обе границы диапазона включительны, поэтому общий лимит 120 дат вычисляется как +`endDate - startDate + 1` одинаково в query- и generator-слоях. `ScheduleQueryService` передаёт набор групп одним вызовом `buildScheduleForGroups()`. `AcademicDateService` одним запросом загружает пересекающиеся семестры, затем batch-набор назначений календарей и дневную сетку от начала затронутого семестра до конца диапазона. @@ -345,6 +353,23 @@ Teacher-only чтение строит базовое расписание на --- +## Временная модель + +`BusinessTimeService` является единым источником текущей календарной даты и абсолютного +момента. Бизнес-дата вычисляется из инъецируемого `Clock` в зоне +`BUSINESS_TIME_ZONE` (по умолчанию `Europe/Moscow`), поэтому lifecycle, доступность +расписания, назначения кафедр и создание периодов не зависят от timezone JVM или хоста. + +Абсолютные моменты представлены `Instant`, хранятся в PostgreSQL как `TIMESTAMPTZ` и +сериализуются в UTC. Hibernate принудительно использует `hibernate.jdbc.time_zone=UTC`, +Jackson — UTC. Отдельные календарные даты представлены `LocalDate`/SQL `DATE`; для них +смещение и время суток не передаются. + +В production-конструкторах используется системный UTC clock. Тесты передают фиксированный +`Clock`, включая границу московской полуночи, поэтому переход бизнес-даты воспроизводим. + +--- + ## Аутентификация Система использует access JWT и отзывные refresh-токены без включения полноценного Spring Security flow: diff --git a/docs/BUSINESS_LOGIC.md b/docs/BUSINESS_LOGIC.md index 2dbe1ca..c9d9232 100644 --- a/docs/BUSINESS_LOGIC.md +++ b/docs/BUSINESS_LOGIC.md @@ -66,9 +66,9 @@ Bearer-токен проверяется на backend. Frontend-скрытие ### Учебные группы (Student Groups) -- **Поля:** Название, численность, форма обучения, кафедра, специальность, профиль обучения, год начала обучения +- **Поля:** Название, положительная численность, форма обучения, кафедра, специальность, профиль обучения, положительный год начала обучения - **Курс:** вычисляется относительно учебного года: `год начала учебного года - year_start_study + 1`, но до начала обучения отдаётся как `0`, а не отрицательное число -- **Подгруппы:** Возможно деление группы на 2 или 3 подгруппы либо режим без деления (таблица `subgroups`). Сумма численностей активных подгрупп не может превышать численность группы. Нельзя удалить одну подгруппу из активного деления так, чтобы часть студентов не относилась ни к одной подгруппе. +- **Подгруппы:** Возможно деление группы на 2 или 3 подгруппы либо режим без деления (таблица `subgroups`). Численность каждой подгруппы обязательна и положительна, а сумма численностей активных подгрупп не может превышать численность группы. Численность группы нельзя уменьшить ниже этой суммы. Изменения группы и подгрупп сериализуются блокировкой родительской группы и дополнительно защищены триггерами V1, поэтому параллельные запросы не нарушают инвариант. Нельзя удалить одну подгруппу из активного деления так, чтобы часть студентов не относилась ни к одной подгруппе. - **Календарь:** на каждый учебный год группе назначается конкретный календарный учебный график - **Дисциплины графика:** при назначении графика группе отображаются дисциплины, вручную привязанные к номерам семестров этого графика - **Завершение обучения:** если текущий курс больше `course_count` назначенного календарного графика, группа считается завершившей обучение и не попадает в обычные списки выбора. Историческое расписание по датам периода обучения остаётся доступным. @@ -193,6 +193,10 @@ Bearer-токен проверяется на backend. Frontend-скрытие В генерацию попадают только активные на дату правила, дисциплины, группы, преподаватели и аудитории. Для будущих дат аудитория с `is_available=false` не выводится в расписании, но прошлые занятия остаются доступными для просмотра. +Диапазон расписания включает обе переданные границы и ограничен ровно 120 календарными +датами. Query- и generator-слои используют одинаковый расчёт `end - start + 1`: 120 дат +разрешены, 121 дата отклоняется до генерации. + Расширенный поиск расписания ограничивает широкие запросы: если не указаны `groupId`, `departmentId` и teacher-only режим, сервис не будет обходить больше 50 активных групп и вернёт ошибку валидации. Запросы по одному `teacherId` сначала строятся через генерацию diff --git a/docs/DATABASE.md b/docs/DATABASE.md index c841e6a..6815389 100644 --- a/docs/DATABASE.md +++ b/docs/DATABASE.md @@ -2,11 +2,13 @@ ## Общая информация -- **СУБД:** PostgreSQL (локально `postgres:16.3-alpine3.20`, продакшн — managed PostgreSQL) +- **СУБД:** PostgreSQL (локально `postgres:16.3-alpine` с закреплённым digest, продакшн — managed PostgreSQL) - **Управление схемой:** Flyway (программный запуск) - **Hibernate DDL:** Отключён (`ddl-auto=none`) - **Расширения:** `pgcrypto` (bcrypt-хеширование паролей), `btree_gist` (exclusion constraint временных слотов) - **Мультитенантность:** Каждый тенант = отдельная БД +- **Абсолютное время:** `TIMESTAMPTZ`, Hibernate читает и записывает значения как UTC `Instant` +- **Календарные бизнес-даты:** `DATE`, интерпретируются в зоне `Europe/Moscow` --- @@ -44,9 +46,9 @@ erDiagram VARCHAR status DATE active_from DATE active_to - TIMESTAMP archived_at - TIMESTAMP created_at - TIMESTAMP updated_at + TIMESTAMPTZ archived_at + TIMESTAMPTZ created_at + TIMESTAMPTZ updated_at } auth_refresh_tokens { @@ -54,9 +56,9 @@ erDiagram BIGINT user_id FK VARCHAR tenant VARCHAR token_hash UK - TIMESTAMP issued_at - TIMESTAMP expires_at - TIMESTAMP revoked_at + TIMESTAMPTZ issued_at + TIMESTAMPTZ expires_at + TIMESTAMPTZ revoked_at VARCHAR rotated_to_token_hash } @@ -66,10 +68,10 @@ erDiagram VARCHAR username_normalized UK VARCHAR client_ip UK INTEGER failure_count - TIMESTAMP window_started_at - TIMESTAMP last_failure_at - TIMESTAMP blocked_until - TIMESTAMP updated_at + TIMESTAMPTZ window_started_at + TIMESTAMPTZ last_failure_at + TIMESTAMPTZ blocked_until + TIMESTAMPTZ updated_at } auth_login_attempt_audit { @@ -78,7 +80,7 @@ erDiagram VARCHAR username_normalized VARCHAR client_ip VARCHAR outcome - TIMESTAMP occurred_at + TIMESTAMPTZ occurred_at INTEGER retry_after_seconds } @@ -86,7 +88,7 @@ erDiagram BIGSERIAL id PK VARCHAR name UK TEXT description - TIMESTAMP created_at + TIMESTAMPTZ created_at } student_groups { @@ -98,7 +100,7 @@ erDiagram BIGINT specialty_id FK BIGINT specialty_profile_id FK BIGINT year_start_study - TIMESTAMP created_at + TIMESTAMPTZ created_at } subgroups { @@ -114,7 +116,7 @@ erDiagram VARCHAR code BIGINT department_id FK TEXT description - TIMESTAMP created_at + TIMESTAMPTZ created_at } lesson_types { @@ -141,9 +143,9 @@ erDiagram VARCHAR status DATE active_from DATE active_to - TIMESTAMP archived_at + TIMESTAMPTZ archived_at TEXT description - TIMESTAMP created_at + TIMESTAMPTZ created_at } classroom_equipments { @@ -180,7 +182,7 @@ erDiagram VARCHAR status BIGINT requested_by FK BIGINT reviewed_by FK - TIMESTAMP reviewed_at + TIMESTAMPTZ reviewed_at TEXT review_comment BIGINT created_teacher_id FK } @@ -190,7 +192,7 @@ erDiagram BIGINT subject_id FK BIGINT author_id FK TEXT comment - TIMESTAMP created_at + TIMESTAMPTZ created_at } teacher_lesson_types { @@ -256,8 +258,8 @@ erDiagram BIGINT specialty_profile_id FK BIGINT study_form_id FK INT course_count - TIMESTAMP created_at - TIMESTAMP updated_at + TIMESTAMPTZ created_at + TIMESTAMPTZ updated_at } academic_calendar_days { @@ -275,7 +277,7 @@ erDiagram BIGINT calendar_id FK INT semester_number BIGINT subject_id FK - TIMESTAMP created_at + TIMESTAMPTZ created_at } student_group_calendar_assignments { @@ -433,10 +435,10 @@ erDiagram | `status` | VARCHAR(20) | `ACTIVE` или `ARCHIVED`; архивный пользователь не может войти | | `active_from` | DATE | Дата начала действия записи | | `active_to` | DATE | Дата окончания действия записи | -| `archived_at` | TIMESTAMP | Когда пользователь архивирован | +| `archived_at` | TIMESTAMPTZ | Когда пользователь архивирован | | `archive_reason` | TEXT | Причина архивирования | -| `created_at` | TIMESTAMP | Дата создания | -| `updated_at` | TIMESTAMP | Дата обновления (авто-триггер) | +| `created_at` | TIMESTAMPTZ | Дата создания | +| `updated_at` | TIMESTAMPTZ | Дата обновления (авто-триггер) | > **Триггер:** `update_users_updated_at` автоматически обновляет `updated_at` при любом `UPDATE`. @@ -447,9 +449,9 @@ erDiagram | `user_id` | BIGINT FK → users (CASCADE) | Пользователь | | `tenant` | VARCHAR(100) | Тенант, для которого выдан refresh-токен | | `token_hash` | VARCHAR(64) UNIQUE | SHA-256 хэш refresh-токена | -| `issued_at` | TIMESTAMP | Дата выдачи | -| `expires_at` | TIMESTAMP | Дата истечения | -| `revoked_at` | TIMESTAMP | Дата отзыва, `NULL` для активной сессии | +| `issued_at` | TIMESTAMPTZ | Дата выдачи | +| `expires_at` | TIMESTAMPTZ | Дата истечения | +| `revoked_at` | TIMESTAMPTZ | Дата отзыва, `NULL` для активной сессии | | `rotated_to_token_hash` | VARCHAR(64) | Хэш следующего refresh-токена после ротации | | `user_agent` | VARCHAR(512) | User-Agent клиента | | `ip_address` | VARCHAR(64) | IP-адрес клиента | @@ -469,11 +471,11 @@ audit retention (по умолчанию 30 дней). Индексы `idx_auth_ | `username_normalized` | VARCHAR(100) | NFKC-нормализованное имя в нижнем регистре | | `client_ip` | VARCHAR(64) | Проверенный IP клиента | | `failure_count` | INTEGER | Число отказов в текущем окне, не меньше нуля | -| `window_started_at` | TIMESTAMP | Начало окна учёта попыток | -| `last_failure_at` | TIMESTAMP | Время последнего отказа | -| `blocked_until` | TIMESTAMP | Окончание временной блокировки либо `NULL` | -| `created_at` | TIMESTAMP | Время создания состояния | -| `updated_at` | TIMESTAMP | Последнее изменение состояния | +| `window_started_at` | TIMESTAMPTZ | Начало окна учёта попыток | +| `last_failure_at` | TIMESTAMPTZ | Время последнего отказа | +| `blocked_until` | TIMESTAMPTZ | Окончание временной блокировки либо `NULL` | +| `created_at` | TIMESTAMPTZ | Время создания состояния | +| `updated_at` | TIMESTAMPTZ | Последнее изменение состояния | Комбинация `(tenant, username_normalized, client_ip)` уникальна. Перед проверкой пароля backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHING`, затем захватывает её @@ -489,7 +491,7 @@ backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHIN | `username_normalized` | VARCHAR(100) | Нормализованное имя из запроса | | `client_ip` | VARCHAR(64) | Проверенный IP клиента | | `outcome` | VARCHAR(20) | `FAILURE` или `BLOCKED` | -| `occurred_at` | TIMESTAMP | Время события | +| `occurred_at` | TIMESTAMPTZ | Время события | | `retry_after_seconds` | INTEGER | Срок `Retry-After` для блокировки либо `NULL` | Таблица принципиально не содержит пароль, его хэш из запроса или признак существования @@ -512,16 +514,16 @@ backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHIN |---------|-----|----------| | `id` | BIGSERIAL PK | ID | | `name` | VARCHAR(100) | Название группы (напр. `ИВТ-21-1`), не уникальное | -| `group_size` | BIGINT | Количество студентов | +| `group_size` | BIGINT CHECK (> 0) | Количество студентов | | `education_form_id` | BIGINT FK → education_forms | Форма обучения | | `department_id` | BIGINT FK → departments | Кафедра | | `specialty_id` | BIGINT FK → specialties | Специальность | | `specialty_profile_id` | BIGINT FK → specialty_profiles | Профиль обучения группы | -| `year_start_study` | BIGINT | Год начала обучения, используется для вычисления текущего курса | +| `year_start_study` | BIGINT CHECK (> 0) | Год начала обучения, используется для вычисления текущего курса | | `status` | VARCHAR(20) | Жизненный цикл группы: `ACTIVE` или `ARCHIVED` | | `active_from` | DATE | Дата начала действия группы | | `active_to` | DATE | Дата окончания действия группы для исторических расчётов | -| `archived_at` | TIMESTAMP | Дата и время архивирования | +| `archived_at` | TIMESTAMPTZ | Дата и время архивирования | | `archive_reason` | TEXT | Причина архивирования | #### `subgroups` — Подгруппы @@ -530,9 +532,18 @@ backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHIN | `id` | BIGSERIAL PK | ID | | `group_id` | BIGINT FK → student_groups (CASCADE) | Родительская группа | | `name` | VARCHAR(100) | Название подгруппы | -| `student_capacity` | INT | Количество студентов | +| `student_capacity` | INT NOT NULL CHECK (> 0) | Количество студентов | -Уникальность активных записей задаётся парой `(group_id, lower(name))`: в разных группах могут быть подгруппы с одинаковым названием, а архивные подгруппы не блокируют повторное создание подгруппы с тем же именем. Подгруппы применяются только для лабораторных занятий. +Уникальность активных записей задаётся парой `(group_id, lower(name))`: в разных группах +могут быть подгруппы с одинаковым названием, а архивные подгруппы не блокируют повторное +создание подгруппы с тем же именем. Подгруппы применяются только для лабораторных занятий. + +CHECK-ограничения требуют положительные `student_groups.group_size`, +`student_groups.year_start_study` и `subgroups.student_capacity`. Триггеры +`validate_student_group_subgroup_capacity` и +`validate_subgroup_student_capacity` блокируют родительскую группу и не допускают, +чтобы сумма численностей активных подгрупп превышала `group_size`. Инвариант действует и +при прямой записи в БД, смене статуса/родительской группы и конкурентных транзакциях. #### `subjects` — Дисциплины | Колонка | Тип | Описание | @@ -561,7 +572,7 @@ backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHIN | `status` | VARCHAR(20) | `ACTIVE` или `ARCHIVED`; архивные аудитории не выбираются в новых назначениях | | `active_from` | DATE | Дата начала действия записи | | `active_to` | DATE | Дата окончания действия записи | -| `archived_at` | TIMESTAMP | Когда аудитория выведена из эксплуатации | +| `archived_at` | TIMESTAMPTZ | Когда аудитория выведена из эксплуатации | | `archive_reason` | TEXT | Причина архивирования | | `description` | TEXT | Описание | @@ -618,7 +629,7 @@ backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHIN | `valid_to` | DATE | Дата окончания принадлежности, `NULL` для текущей кафедры | | `is_primary` | BOOLEAN | Основная кафедра преподавателя | | `comment` | TEXT | Комментарий к переводу | -| `created_at` | TIMESTAMP | Дата создания записи | +| `created_at` | TIMESTAMPTZ | Дата создания записи | | `created_by` | BIGINT FK → users | Кто оформил перевод | Индекс `uq_teacher_department_open_primary` гарантирует не больше одной открытой основной @@ -641,11 +652,11 @@ backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHIN | `status` | VARCHAR(20) | `PENDING`, `APPROVED` или `REJECTED` | | `requested_by` | BIGINT FK → users | Пользователь, создавший заявку | | `reviewed_by` | BIGINT FK → users | Администратор, рассмотревший заявку | -| `reviewed_at` | TIMESTAMP | Дата рассмотрения | +| `reviewed_at` | TIMESTAMPTZ | Дата рассмотрения | | `review_comment` | TEXT | Комментарий администратора | | `created_teacher_id` | BIGINT FK → users | Созданный преподаватель после одобрения | -| `created_at` | TIMESTAMP | Дата создания заявки | -| `updated_at` | TIMESTAMP | Дата последнего изменения | +| `created_at` | TIMESTAMPTZ | Дата создания заявки | +| `updated_at` | TIMESTAMPTZ | Дата последнего изменения | Заявка не хранит пароль. Пароль задаётся администратором только при одобрении, после чего создаётся пользователь с ролью `TEACHER` и основная запись в `teacher_department_assignments`. Частичный уникальный индекс `uq_teacher_creation_requests_pending_username` запрещает две открытые заявки с одним логином. @@ -656,7 +667,7 @@ backend создаёт строку через `INSERT ... ON CONFLICT DO NOTHIN | `subject_id` | BIGINT FK → subjects | Дисциплина | | `author_id` | BIGINT FK → users | Автор комментария | | `comment` | TEXT | Текст комментария | -| `created_at` | TIMESTAMP | Дата создания | +| `created_at` | TIMESTAMPTZ | Дата создания | #### `time_slot_scopes` — Сетки времени | Колонка | Тип | Описание | @@ -748,8 +759,8 @@ V1 создаёт GiST exclusion constraint `ex_academic_years_no_overlap` дл | `specialty_profile_id` | BIGINT FK → specialty_profiles | Профиль обучения | | `study_form_id` | BIGINT FK → education_forms | Форма обучения из общего справочника | | `course_count` | INT CHECK(1–8) | Количество курсов в сетке | -| `created_at` | TIMESTAMP | Дата создания | -| `updated_at` | TIMESTAMP | Дата обновления | +| `created_at` | TIMESTAMPTZ | Дата создания | +| `updated_at` | TIMESTAMPTZ | Дата обновления | Триггер `trg_academic_calendars_protect_dependencies` не позволяет изменить учебный год, специальность, профиль, форму обучения или количество курсов так, чтобы уже назначенная @@ -777,7 +788,7 @@ V1 создаёт GiST exclusion constraint `ex_academic_years_no_overlap` дл | `calendar_id` | BIGINT FK → academic_calendars (CASCADE) | Календарный график | | `semester_number` | INT CHECK(> 0) | Номер учебного семестра внутри графика: 1, 2, 3 ... | | `subject_id` | BIGINT FK → subjects | Дисциплина из справочника | -| `created_at` | TIMESTAMP | Дата создания привязки | +| `created_at` | TIMESTAMPTZ | Дата создания привязки | Уникальность задаётся по `calendar_id + semester_number + subject_id`, поэтому одну дисциплину нельзя дважды добавить в один семестр одного графика. Верхняя граница номера семестра проверяется backend и триггером `trg_calendar_subjects_dimensions` по `academic_calendars.course_count * 2`. @@ -841,7 +852,7 @@ V1 создаёт GiST exclusion constraint `ex_academic_years_no_overlap` дл | `classroom_locked` | BOOLEAN | Аудитория закреплена учебным отделом | | `teacher_locked` | BOOLEAN | Преподаватель закреплён учебным отделом | | `locked_by` | BIGINT FK → users | Кто выполнил закрепление | -| `locked_at` | TIMESTAMP | Когда выполнено закрепление | +| `locked_at` | TIMESTAMPTZ | Когда выполнено закрепление | | `lock_comment` | TEXT | Комментарий к закреплению | V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном правиле нельзя повторить @@ -870,7 +881,7 @@ V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр | `new_lesson_format` | VARCHAR(30) | Новый формат занятия | | `comment` | TEXT | Причина изменения | | `created_by` | BIGINT FK → users | Автор изменения | -| `created_at` | TIMESTAMP | Дата создания | +| `created_at` | TIMESTAMPTZ | Дата создания | Ограничение `uq_schedule_overrides_slot_date` не позволяет создать две разные правки для одной и той же пары. Базовая схема V1 добавляет структурные инварианты: diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index e615db1..eeb75c3 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -23,6 +23,21 @@ docker compose logs -f Приложение доступно: **http://localhost:80** +### Обновление контейнерных артефактов + +Базовые и служебные образы указываются как `точный-tag@sha256:manifest-digest`; сторонние +Actions — полным 40-символьным commit SHA. При обновлении версии одновременно обновите tag, +digest и комментарий версии, затем выполните: + +```bash +bash scripts/test-artifact-pinning.sh +K8S_DIR=../k8s bash scripts/check-artifact-pinning.sh +``` + +Для скачиваемого исполняемого файла обязательны точная версия и проверка опубликованного +SHA-256 до установки. Отключать SBOM, provenance или блокирующее HIGH/CRITICAL-сканирование +ради прохождения pipeline запрещено. + ### Пересборка после изменений ```bash @@ -220,6 +235,18 @@ public class AbsenceController { --- +## Работа со временем + +- Для абсолютного момента используйте `Instant`; в БД ему соответствует `TIMESTAMPTZ`. +- Для календарной даты без времени используйте `LocalDate`; текущую бизнес-дату получайте + через инъекцию `BusinessTimeService`, а не через `LocalDate.now()`. +- Новую бизнес-логику, зависящую от текущего времени, проверяйте фиксированным `Clock` на + границе московской полуночи. +- Во frontend не формируйте date-only через `Date.toISOString().slice(0, 10)`: + используйте `formatLocalDate()` или исходную строку `YYYY-MM-DD`. + +--- + ## Работа с миграциями Flyway ### Правила diff --git a/docs/FRONTEND.md b/docs/FRONTEND.md index 6e4c5f2..a56fc3c 100644 --- a/docs/FRONTEND.md +++ b/docs/FRONTEND.md @@ -159,6 +159,10 @@ frontend/ ### Особенности админских вкладок +- Общий `formatLocalDate()` формирует `YYYY-MM-DD` из локальных компонентов `Date`, не + используя `toISOString()`. Кабинет кафедры и редактор академического календаря также + выполняют календарную арифметику локальными компонентами, поэтому даты первых часов + суток и границы месяца не сдвигаются из-за преобразования в UTC. - Вкладка `dashboard` формирует date-only значения из локальных компонентов даты, а текущую неделю — от отдельного объекта понедельника до `понедельник + 6 дней`. Расписания кафедр загружаются независимо через `Promise.allSettled`: `COMPLETE` означает ответы всех кафедр, `PARTIAL` — только части, `NOT_RUN` — отсутствие пригодных ответов или кафедр. Зелёная карточка «Конфликты расписания не обнаружены» разрешена только для `COMPLETE` без найденных конфликтов; частичный результат всегда остаётся предупреждением, а полный отказ показывается как «Проверка не выполнена». Технические причины отказов в DOM не выводятся. - Вкладка `groups` загружает кафедры, специальности, профили, учебные годы и календарные графики. Список групп открывается через `/api/groups?includeArchived=true`, поэтому в таблице видны активные, будущие, завершившие обучение и архивные группы со статусом. Группа создаётся через `/api/groups` с `specialtyId` и `specialtyProfileId`, а модалка редактирования использует широкую сетку полей без внутреннего пустого скролла. Блок подгрупп использует `/api/subgroups` и `/api/groups/{id}/subgroups`, а блок назначений использует `/api/groups/{id}/calendar-assignments`. После назначения графика в таблице назначений сразу выводятся дисциплины графика, сгруппированные по номерам семестров. В селекты подгрупп и назначений попадают только группы с `active=true`. - Вкладка `teacher-requests` показывает pending-заявки кафедр на создание преподавателей. Администратор может скорректировать кафедру, логин, ФИО и должность, задать пароль минимум 8 символов в скрытом поле с `autocomplete="new-password"`, затем одобрить заявку через `/api/teacher-requests/{id}/approve` или отклонить её через `/api/teacher-requests/{id}/reject`. Для роли `ADMIN` счётчик pending-заявок выводится в пункте меню «Заявки» и рядом с заголовком страницы, чтобы очередь была видна без открытия вкладки. diff --git a/docs/INFRASTRUCTURE.md b/docs/INFRASTRUCTURE.md index ad87888..e716460 100644 --- a/docs/INFRASTRUCTURE.md +++ b/docs/INFRASTRUCTURE.md @@ -7,16 +7,29 @@ ```yaml services: backend: # Spring Boot (Java 17), внутренний порт 8080 - frontend: # Apache httpd, публикует HTTP_PORT (по умолчанию 80) + frontend: # Apache httpd, внутренний порт 80 db: # PostgreSQL 16.3, внутренний порт 5432 ``` ### Сеть -Compose сам создаёт изолированную bridge-сеть `magistr`. Внешняя сеть или отдельно -установленный reverse proxy для локального запуска не нужны. Apache раздаёт frontend и -проксирует same-origin пути `/api` и `/actuator/health` в backend; backend и PostgreSQL не -публикуют порты на хосте. +Compose сам создаёт изолированную bridge-сеть `magistr` для приложения и подключает backend +с frontend к существующей внешней Docker-сети `proxy`. Caddy из `../сaddy-proxy/` также +подключён к `proxy`: на `localhost` он отправляет `/api/*` непосредственно в `backend:8080`, +а остальные пути — в `frontend:80`. Контейнеры Magistr не публикуют порты на хосте; +PostgreSQL доступен только во внутренней сети `magistr`. + +Перед первым запуском создайте общую сеть и поднимите Caddy: + +```bash +docker network inspect proxy >/dev/null 2>&1 || docker network create proxy +docker compose -f ../сaddy-proxy/compose.yaml up -d +docker compose up -d --build +``` + +Для `https://localhost` Caddy выпускает сертификат своим локальным CA. На CachyOS/Arch +корневой сертификат устанавливается в системное хранилище через `trust anchor`; точная +команда приведена в `STARTUP_GUIDE.md`. Данные PostgreSQL сохраняются в именованном томе `postgres_data`. Обычный `docker compose down` не удаляет их; явный `docker compose down -v` выполняет полный сброс. @@ -39,8 +52,9 @@ LOGIN_RATE_BASE_BLOCK_DURATION=1m LOGIN_RATE_MAX_BLOCK_DURATION=15m LOGIN_AUDIT_RETENTION=90d TRUSTED_PROXY_CIDRS=172.16.0.0/12 +BUSINESS_TIME_ZONE=Europe/Moscow +TZ=Europe/Moscow OTEL_SDK_DISABLED=true -HTTP_PORT=80 ``` Начальный шаблон находится в `.env.example`: скопируйте его в игнорируемый Git файл `.env` @@ -51,10 +65,15 @@ HTTP_PORT=80 согласованным. Все JWT TTL/cleanup-переменные и параметры защиты входа передаются backend-контейнеру явно. `TRUSTED_PROXY_CIDRS` должен содержать только сеть фактического reverse proxy: заголовок `X-Forwarded-For` от остальных источников backend игнорирует. +`BUSINESS_TIME_ZONE` задаёт правила календарных бизнес-дат, а `TZ` и +`JAVA_TOOL_OPTIONS=-Duser.timezone=...` фиксируют timezone JVM и контейнера. Абсолютные +timestamps при этом всегда передаются между Java и PostgreSQL в UTC. Поскольку локальный Compose не запускает OpenTelemetry Collector, SDK по умолчанию отключён; при подключённом Collector задайте `OTEL_SDK_DISABLED=false` и его OTLP endpoint. В продакшене секреты задаются через Kubernetes Secret, а не через коммитимые файлы. +Kubernetes `app-config` также явно задаёт `BUSINESS_TIME_ZONE=Europe/Moscow`, +`TZ=Europe/Moscow` и `JAVA_TOOL_OPTIONS=-Duser.timezone=Europe/Moscow` для backend pod. Встроенного JWT fallback в приложении нет. Отсутствующее, короткое или шаблонное значение останавливает запуск; профиль `production` также требует Secure refresh-cookie. @@ -64,10 +83,10 @@ reverse proxy: заголовок `X-Forwarded-For` от остальных ис ### Dockerfile (Backend) Backend собирается через multi-stage сборку Maven: -1. Этап сборки: `maven:3.9-eclipse-temurin-17` → `mvn package` +1. Этап сборки: `maven:3.9.9-eclipse-temurin-17@sha256:f58d59b...` → `mvn package` 2. OpenTelemetry Java Agent `2.28.1` загружается как фиксированный Maven-артефакт и проверяется по закреплённому SHA-256 -3. Этап запуска: `eclipse-temurin:17-jre-alpine` → `java -jar app.jar` +3. Этап запуска: `eclipse-temurin:17-jre-alpine@sha256:02320dd4...` → `java -jar app.jar` ### Dockerfile (Frontend) @@ -82,7 +101,8 @@ COPY security.conf /usr/local/apache2/conf/extra/magistr-security.conf COPY proxy.conf /usr/local/apache2/conf/extra/magistr-proxy.conf ``` -Оба базовых образа зафиксированы tag и manifest digest. Первый этап собирает зафиксированный +Все базовые образы backend/frontend и локальный PostgreSQL зафиксированы одновременно точным +tag и manifest digest. Первый этап frontend собирает зафиксированный OpenTelemetry bundle; второй раздаёт только runtime- файлы, без `node_modules`, тестов и build-исходников. Apache подключает `mod_headers`, `mod_proxy` и `mod_proxy_http`; proxy сохраняет исходный `Host`, чтобы `localhost` корректно @@ -340,16 +360,26 @@ Deployment-файлов запрещено. Расположение: `.gitea/workflows/docker-build.yaml` Основные шаги: -1. Backend unit/component tests, frontend static/unit tests, Compose validation и shell-тест - immutable rollout/rollback. +1. Backend unit/component tests, frontend static/unit tests, Compose validation, shell-тест + immutable rollout/rollback и регрессионная проверка закрепления артефактов. 2. Только после успешных gates — login, параллельная сборка и push backend/frontend с - SHA-tag и release tag без `latest`. -3. Build jobs публикуют digest обоих образов; deploy job устанавливает фиксированный - `kubectl v1.33.12` после SHA-256 проверки. -4. `scripts/deploy-images.sh` принимает только `image@sha256:...`, сохраняет предыдущие + SHA-tag и release tag без `latest`. Сторонние Actions закреплены полными commit SHA. +3. BuildKit публикует для обоих образов максимальную provenance- и SBOM-attestation. Build + jobs также возвращают registry digest каждого образа. +4. Отдельный обязательный job сканирует опубликованные digests закреплённым Trivy `0.63.0` и + блокирует deploy при исправимых `HIGH`/`CRITICAL` уязвимостях. +5. Deploy job устанавливает фиксированный `kubectl v1.33.12` только после SHA-256 проверки. + Java Agent также имеет точную версию и checksum. +6. `scripts/deploy-images.sh` принимает только `image@sha256:...`, сохраняет предыдущие ссылки, применяет оба digest и ждёт rollout. При отказе автоматически возвращает оба предыдущих образа и повторно проверяет их готовность. -5. Workflow-wide concurrency lock не допускает одновременные production deployment. +7. Workflow-wide concurrency lock не допускает одновременные production deployment. + +`scripts/check-artifact-pinning.sh` проверяет Dockerfile, Compose, Actions, checksum и CI +gates. При передаче `K8S_DIR=../k8s` он дополнительно требует digest у каждого production +образа Kubernetes. Внешний `otel-collector.yaml` использует официальный Collector Contrib +`0.153.0@sha256:93aad750175cbf1a973ae1c5886c3371f4d800f61be25cdd26870b8441ffe9fa`; +версия и manifest digest обновляются только вместе и проверяются до rollout. --- diff --git a/docs/README.md b/docs/README.md index 7fa4038..6046bc0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -29,6 +29,7 @@ - Docker и Docker Compose - Git +- запущенный Caddy из `../сaddy-proxy/` ### Локальный запуск @@ -41,13 +42,21 @@ cp .env.example .env # Укажите в .env POSTGRES_PASSWORD и случайный JWT_SECRET. # JWT_SECRET можно сгенерировать командой: openssl rand -base64 48 -# 3. Запустить все сервисы +# 3. Один раз создать общую proxy-сеть и запустить Caddy +docker network inspect proxy >/dev/null 2>&1 || docker network create proxy +docker compose -f ../сaddy-proxy/compose.yaml up -d + +# 4. Запустить все сервисы Magistr docker compose up -d --build ``` -Compose сам создаёт внутреннюю сеть и именованный том PostgreSQL. После запуска приложение -доступно по адресу **http://localhost:80**; если в `.env` задан другой `HTTP_PORT`, используйте -его. Backend и PostgreSQL наружу не публикуются: `/api` проксируется frontend-контейнером. +Compose создаёт внутреннюю сеть и именованный том PostgreSQL, а backend/frontend подключает +к общей внешней сети `proxy`. Они не публикуют порты на хосте: Caddy принимает запросы на +**https://localhost** (`http://localhost` перенаправляется на HTTPS), `/api` отправляет в +backend, остальные пути — во frontend. PostgreSQL остаётся только во внутренней сети. + +Caddy использует локальный корневой сертификат. В CachyOS/Arch его можно добавить в +системное хранилище командами из `STARTUP_GUIDE.md`; без этого браузер покажет предупреждение. **Учётные данные по умолчанию:** diff --git a/frontend/admin/js/views/academic-calendar.js b/frontend/admin/js/views/academic-calendar.js index 6becd8a..de46715 100644 --- a/frontend/admin/js/views/academic-calendar.js +++ b/frontend/admin/js/views/academic-calendar.js @@ -1,5 +1,5 @@ import { api } from '../api.js'; -import { escapeHtml, showAlert, hideAlert } from '../utils.js'; +import { escapeHtml, formatLocalDate, showAlert, hideAlert } from '../utils.js'; const DAY_OPTIONS = [ { value: 1, label: 'Понедельник', shortLabel: 'Пн' }, @@ -1473,24 +1473,36 @@ export async function initAcademicCalendar() { } function previousIsoDate(value) { - const date = new Date(`${value}T00:00:00Z`); - date.setUTCDate(date.getUTCDate() - 1); - return date.toISOString().slice(0, 10); + const date = parseLocalIsoDate(value); + date.setDate(date.getDate() - 1); + return formatLocalDate(date); } function enumerateDates(startIso, endIso) { const result = []; - const current = new Date(`${startIso}T00:00:00Z`); - const end = new Date(`${endIso}T00:00:00Z`); + const current = parseLocalIsoDate(startIso); + const end = parseLocalIsoDate(endIso); while (current <= end) { - const iso = current.toISOString().slice(0, 10); - const jsDay = current.getUTCDay(); + const iso = formatLocalDate(current); + const jsDay = current.getDay(); result.push({ iso, dayOfWeek: jsDay === 0 ? 7 : jsDay }); - current.setUTCDate(current.getUTCDate() + 1); + current.setDate(current.getDate() + 1); } return result; } + function parseLocalIsoDate(value) { + const [year, month, day] = String(value).split('-').map(Number); + const date = new Date(year, month - 1, day, 12); + if (!year || !month || !day || Number.isNaN(date.getTime()) + || date.getFullYear() !== year + || date.getMonth() !== month - 1 + || date.getDate() !== day) { + throw new TypeError('Ожидалась дата в формате ГГГГ-ММ-ДД'); + } + return date; + } + function groupBy(items, keyFn) { const grouped = new Map(); items.forEach(item => { diff --git a/scripts/check-artifact-pinning.sh b/scripts/check-artifact-pinning.sh new file mode 100755 index 0000000..4c603bd --- /dev/null +++ b/scripts/check-artifact-pinning.sh @@ -0,0 +1,152 @@ +#!/usr/bin/env bash + +set -euo pipefail + +PROJECT_ROOT=${PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)} +WORKFLOW="$PROJECT_ROOT/.gitea/workflows/docker-build.yaml" + +failures=0 + +fail() { + printf '[АРТЕФАКТЫ] Ошибка: %s\n' "$1" >&2 + failures=$((failures + 1)) +} + +require_file() { + local file=$1 + if [[ ! -f "$file" ]]; then + fail "не найден обязательный файл ${file#"$PROJECT_ROOT"/}" + return 1 + fi +} + +check_dockerfile() { + local file=$1 + local line + + require_file "$file" || return + while IFS= read -r line; do + if [[ ! "$line" =~ ^FROM[[:space:]]+[^[:space:]]+@sha256:[0-9a-f]{64}([[:space:]]+AS[[:space:]]+[A-Za-z0-9._-]+)?$ ]]; then + fail "базовый образ в ${file#"$PROJECT_ROOT"/} должен содержать полный sha256 digest: $line" + fi + done < <(grep -E '^FROM[[:space:]]+' "$file") +} + +check_compose_images() { + local line + + require_file "$PROJECT_ROOT/compose.yaml" || return + while IFS= read -r line; do + if [[ ! "$line" =~ image:[[:space:]]+[^[:space:]]+@sha256:[0-9a-f]{64}[[:space:]]*$ ]]; then + fail "образ Compose должен содержать полный sha256 digest: ${line#*image: }" + fi + done < <(grep -E '^[[:space:]]+image:[[:space:]]+' "$PROJECT_ROOT/compose.yaml") +} + +check_actions() { + local action_ref + + require_file "$WORKFLOW" || return + while IFS= read -r action_ref; do + if [[ ! "$action_ref" =~ ^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+@[0-9a-f]{40}$ ]]; then + fail "Action должен быть закреплён полным commit SHA: $action_ref" + fi + done < <(sed -nE 's/^[[:space:]]+uses:[[:space:]]+([^[:space:]#]+).*/\1/p' "$WORKFLOW") +} + +require_count() { + local pattern=$1 + local expected=$2 + local description=$3 + local actual + + actual=$(grep -Ec "$pattern" "$WORKFLOW" || true) + if (( actual < expected )); then + fail "$description: ожидается не менее $expected, найдено $actual" + fi +} + +check_workflow_gates() { + require_file "$WORKFLOW" || return + + require_count '^[[:space:]]+sbom:[[:space:]]+true$' 2 \ + "для обоих образов должна публиковаться SBOM attestation" + require_count '^[[:space:]]+provenance:[[:space:]]+mode=max$' 2 \ + "для обоих образов должна публиковаться provenance attestation" + require_count 'image --scanners vuln --exit-code 1 --severity HIGH,CRITICAL' 2 \ + "оба образа должны проходить блокирующее HIGH/CRITICAL-сканирование" + require_count 'TRIVY_IMAGE: [^[:space:]]+@sha256:[0-9a-f]{64}$' 1 \ + "образ Trivy должен быть закреплён digest" + require_count 'MAVEN_IMAGE: [^[:space:]]+@sha256:[0-9a-f]{64}$' 1 \ + "образ Maven для CI должен быть закреплён digest" + require_count 'NODE_IMAGE: [^[:space:]]+@sha256:[0-9a-f]{64}$' 1 \ + "образ Node.js для CI должен быть закреплён digest" + + if ! grep -Eq '^ needs: \[build-and-push-backend, build-and-push-frontend, security-scan\]$' "$WORKFLOW"; then + fail "deploy обязан зависеть от успешного security-scan" + fi + + if ! grep -Eq '^ KUBECTL_VERSION: v[0-9]+\.[0-9]+\.[0-9]+$' "$WORKFLOW" \ + || ! grep -Eq '^ KUBECTL_SHA256: [0-9a-f]{64}$' "$WORKFLOW" \ + || ! grep -Fq 'sha256sum --check --strict' "$WORKFLOW"; then + fail "kubectl должен иметь точную версию и обязательную SHA-256 проверку" + fi +} + +check_downloaded_backend_artifact() { + local dockerfile="$PROJECT_ROOT/backend/Dockerfile" + + require_file "$dockerfile" || return + if ! grep -Eq '^ARG OTEL_JAVAAGENT_VERSION=[0-9]+\.[0-9]+\.[0-9]+$' "$dockerfile" \ + || ! grep -Eq '^ARG OTEL_JAVAAGENT_SHA256=[0-9a-f]{64}$' "$dockerfile" \ + || ! grep -Fq 'sha256sum -c -' "$dockerfile"; then + fail "OpenTelemetry Java Agent должен иметь точную версию и SHA-256 проверку" + fi +} + +check_testcontainer_images() { + local image_catalog="$PROJECT_ROOT/backend/src/test/java/com/magistr/app/testing/TestContainerImages.java" + + [[ -d "$PROJECT_ROOT/backend/src/test/java" ]] || return 0 + require_file "$image_catalog" || return + if ! grep -Eq 'postgres:[^"[:space:]]+@sha256:[0-9a-f]{64}' "$image_catalog" \ + || ! grep -Fq 'asCompatibleSubstituteFor("postgres")' "$image_catalog"; then + fail "образ PostgreSQL Testcontainers должен содержать digest и явную совместимость" + fi +} + +check_optional_kubernetes_images() { + local k8s_dir=${K8S_DIR:-} + local line + + [[ -n "$k8s_dir" ]] || return 0 + if [[ ! -d "$k8s_dir" ]]; then + fail "каталог Kubernetes не найден: $k8s_dir" + return + fi + + while IFS= read -r line; do + if [[ "$line" =~ image:[[:space:]]+([^[:space:]]+) ]]; then + local image_ref=${BASH_REMATCH[1]} + if [[ ! "$image_ref" =~ @sha256:[0-9a-f]{64}$ ]]; then + fail "production-образ Kubernetes должен содержать digest: $image_ref" + fi + fi + done < <(grep -R -h -E '^[[:space:]]+image:[[:space:]]+' "$k8s_dir" --include='*.yaml' --include='*.yml' || true) +} + +check_dockerfile "$PROJECT_ROOT/backend/Dockerfile" +check_dockerfile "$PROJECT_ROOT/frontend/Dockerfile" +check_compose_images +check_actions +check_workflow_gates +check_downloaded_backend_artifact +check_testcontainer_images +check_optional_kubernetes_images + +if (( failures > 0 )); then + printf '[АРТЕФАКТЫ] Проверка завершена с ошибками: %d\n' "$failures" >&2 + exit 1 +fi + +printf '[АРТЕФАКТЫ] Все версии, digest, checksum, SBOM и scan gates проверены\n' diff --git a/scripts/test-artifact-pinning.sh b/scripts/test-artifact-pinning.sh new file mode 100755 index 0000000..9abd5e7 --- /dev/null +++ b/scripts/test-artifact-pinning.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -euo pipefail + +ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +CHECK_SCRIPT="$ROOT_DIR/scripts/check-artifact-pinning.sh" +FIXTURE_DIR=$(mktemp -d) +trap 'rm -rf "$FIXTURE_DIR"' EXIT + +mkdir -p "$FIXTURE_DIR/backend" "$FIXTURE_DIR/frontend" "$FIXTURE_DIR/.gitea/workflows" +cp "$ROOT_DIR/backend/Dockerfile" "$FIXTURE_DIR/backend/Dockerfile" +cp "$ROOT_DIR/frontend/Dockerfile" "$FIXTURE_DIR/frontend/Dockerfile" +cp "$ROOT_DIR/compose.yaml" "$FIXTURE_DIR/compose.yaml" +cp "$ROOT_DIR/.gitea/workflows/docker-build.yaml" \ + "$FIXTURE_DIR/.gitea/workflows/docker-build.yaml" + +PROJECT_ROOT="$FIXTURE_DIR" bash "$CHECK_SCRIPT" >/dev/null + +sed -i -E '0,/@sha256:[0-9a-f]{64}/s///' "$FIXTURE_DIR/backend/Dockerfile" +if PROJECT_ROOT="$FIXTURE_DIR" bash "$CHECK_SCRIPT" >/dev/null 2>&1; then + printf 'Ошибка теста: незакреплённый базовый образ не был отклонён\n' >&2 + exit 1 +fi + +cp "$ROOT_DIR/backend/Dockerfile" "$FIXTURE_DIR/backend/Dockerfile" +sed -i '0,/sbom: true/{/sbom: true/d;}' "$FIXTURE_DIR/.gitea/workflows/docker-build.yaml" +if PROJECT_ROOT="$FIXTURE_DIR" bash "$CHECK_SCRIPT" >/dev/null 2>&1; then + printf 'Ошибка теста: отсутствие SBOM для одного образа не было отклонено\n' >&2 + exit 1 +fi + +printf 'Проверка закрепления артефактов завершена успешно\n' From 92ff87a917c845c60afec0c92485e94f26b1d85e Mon Sep 17 00:00:00 2001 From: Zuev Date: Wed, 22 Jul 2026 00:15:35 +0300 Subject: [PATCH 10/14] =?UTF-8?q?#2=20-=20=D1=82=D0=B5=D1=81=D1=82,=20#5?= =?UTF-8?q?=20-=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BE.=20=D0=A0=D0=B0?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=BE=D0=B5=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BD=D1=8F=D1=82=D0=B8=D1=8F=20=D0=B1=D0=B5=D0=B7=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/controller/ScheduleController.java | 29 +- .../ScheduleOverrideController.java | 17 +- .../controller/TimeSlotAdminController.java | 37 +- .../magistr/app/dto/RenderedLessonDto.java | 75 ++- .../dto/ScheduleOverrideAvailabilityDto.java | 12 + .../magistr/app/dto/ScheduleOverrideDto.java | 108 +++- .../magistr/app/model/ScheduleOverride.java | 11 + .../ScheduleOverrideRepository.java | 62 +- .../app/service/EffectiveTimeSlotService.java | 76 +++ .../app/service/ScheduleOverrideService.java | 346 ++++++++-- .../app/service/ScheduleQueryService.java | 145 ++++- .../main/resources/db/migration/V1__init.sql | 64 +- .../controller/ScheduleControllerTest.java | 55 ++ .../ScheduleOverrideControllerTest.java | 48 ++ ...eduleOverrideMigrationIntegrationTest.java | 119 +++- ...PostgreSqlAdvisoryLockIntegrationTest.java | 64 ++ .../service/ScheduleOverrideServiceTest.java | 327 +++++++++- .../ScheduleQueryServiceOverrideTest.java | 108 ++++ ...heduleQueryServiceTeacherOverrideTest.java | 7 +- docs/API.md | 84 ++- docs/BUSINESS_LOGIC.md | 38 +- docs/DATABASE.md | 21 +- docs/FRONTEND.md | 15 +- frontend/admin/css/auditorium-workload.css | 476 +++++++++++++- .../admin/js/views/schedule-override-panel.js | 611 ++++++++++++++++++ frontend/admin/js/views/schedule-view.js | 148 ++++- frontend/admin/views/schedule-view.html | 111 +++- frontend/tests/schedule-overrides.test.mjs | 64 ++ .../tests/schedule-view-semesters.test.mjs | 53 ++ graphify-out/.graphify_learning.json | 181 ++++-- ...лнительные_фильры_просмотра_расписаний_нужно.md | 24 + ...¼у_в_выборе_аудитории_показаны_корпус_и_этаж.md | 23 + graphify-out/reflections/LESSONS.md | 16 +- 33 files changed, 3324 insertions(+), 251 deletions(-) create mode 100644 backend/src/main/java/com/magistr/app/dto/ScheduleOverrideAvailabilityDto.java create mode 100644 backend/src/main/java/com/magistr/app/service/EffectiveTimeSlotService.java create mode 100644 backend/src/test/java/com/magistr/app/controller/ScheduleControllerTest.java create mode 100644 frontend/admin/js/views/schedule-override-panel.js create mode 100644 frontend/tests/schedule-overrides.test.mjs create mode 100644 frontend/tests/schedule-view-semesters.test.mjs create mode 100644 graphify-out/memory/query_20260721_195213_в_дополнительные_фильры_просмотра_расписаний_нужно.md create mode 100644 graphify-out/memory/query_20260721_204948_почему_в_выборе_аудитории_показаны_корпус_и_этаж.md diff --git a/backend/src/main/java/com/magistr/app/controller/ScheduleController.java b/backend/src/main/java/com/magistr/app/controller/ScheduleController.java index eb326af..0119113 100644 --- a/backend/src/main/java/com/magistr/app/controller/ScheduleController.java +++ b/backend/src/main/java/com/magistr/app/controller/ScheduleController.java @@ -2,7 +2,10 @@ package com.magistr.app.controller; import com.magistr.app.config.auth.RequireRoles; import com.magistr.app.dto.RenderedLessonDto; +import com.magistr.app.dto.SemesterDto; import com.magistr.app.model.Role; +import com.magistr.app.model.Semester; +import com.magistr.app.repository.SemesterRepository; import com.magistr.app.service.ScheduleQueryService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,6 +14,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; +import java.util.Comparator; +import java.util.List; import java.util.Map; @RestController @@ -21,9 +26,20 @@ public class ScheduleController { private static final Logger logger = LoggerFactory.getLogger(ScheduleController.class); private final ScheduleQueryService scheduleQueryService; + private final SemesterRepository semesterRepository; - public ScheduleController(ScheduleQueryService scheduleQueryService) { + public ScheduleController(ScheduleQueryService scheduleQueryService, + SemesterRepository semesterRepository) { this.scheduleQueryService = scheduleQueryService; + this.semesterRepository = semesterRepository; + } + + @GetMapping("/semesters") + public List getSemesters() { + return semesterRepository.findAll().stream() + .sorted(Comparator.comparing(Semester::getStartDate).reversed()) + .map(this::toSemesterDto) + .toList(); } @GetMapping @@ -54,4 +70,15 @@ public class ScheduleController { endDate )); } + + private SemesterDto toSemesterDto(Semester semester) { + return new SemesterDto( + semester.getId(), + semester.getAcademicYear().getId(), + semester.getAcademicYear().getTitle(), + semester.getSemesterType(), + semester.getStartDate(), + semester.getEndDate() + ); + } } diff --git a/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java b/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java index 0500e88..f9d40be 100644 --- a/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java +++ b/backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java @@ -2,6 +2,7 @@ package com.magistr.app.controller; import com.magistr.app.config.auth.RequireRoles; import com.magistr.app.dto.ScheduleOverrideDto; +import com.magistr.app.dto.ScheduleOverrideAvailabilityDto; import com.magistr.app.model.Role; import com.magistr.app.service.ScheduleOverrideService; import org.springframework.http.ResponseEntity; @@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; +import java.time.LocalDate; @RestController @RequestMapping("/api/edu-office/schedule/overrides") @@ -22,8 +24,19 @@ public class ScheduleOverrideController { } @GetMapping - public List getAll() { - return scheduleOverrideService.getAll(); + public List getAll( + @RequestParam(required = false) LocalDate startDate, + @RequestParam(required = false) LocalDate endDate + ) { + return scheduleOverrideService.getAll(startDate, endDate); + } + + @GetMapping("/availability") + public ScheduleOverrideAvailabilityDto getAvailability( + @RequestParam Long baseRuleSlotId, + @RequestParam LocalDate lessonDate + ) { + return scheduleOverrideService.getAvailability(baseRuleSlotId, lessonDate); } @PostMapping diff --git a/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java b/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java index d176e4b..f311b9e 100644 --- a/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java +++ b/backend/src/main/java/com/magistr/app/controller/TimeSlotAdminController.java @@ -12,6 +12,7 @@ import com.magistr.app.repository.TimeSlotDateAssignmentRepository; import com.magistr.app.repository.TimeSlotRepository; import com.magistr.app.repository.TimeSlotScopeRepository; import com.magistr.app.service.TimeSlotService; +import com.magistr.app.service.EffectiveTimeSlotService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -35,15 +36,18 @@ public class TimeSlotAdminController { private final TimeSlotScopeRepository timeSlotScopeRepository; private final TimeSlotDateAssignmentRepository dateAssignmentRepository; private final TimeSlotService timeSlotService; + private final EffectiveTimeSlotService effectiveTimeSlotService; public TimeSlotAdminController(TimeSlotRepository timeSlotRepository, TimeSlotScopeRepository timeSlotScopeRepository, TimeSlotDateAssignmentRepository dateAssignmentRepository, - TimeSlotService timeSlotService) { + TimeSlotService timeSlotService, + EffectiveTimeSlotService effectiveTimeSlotService) { this.timeSlotRepository = timeSlotRepository; this.timeSlotScopeRepository = timeSlotScopeRepository; this.dateAssignmentRepository = dateAssignmentRepository; this.timeSlotService = timeSlotService; + this.effectiveTimeSlotService = effectiveTimeSlotService; } @GetMapping @@ -55,7 +59,7 @@ public class TimeSlotAdminController { @GetMapping("/effective") public ResponseEntity getEffective(@RequestParam LocalDate date) { - return ResponseEntity.ok(effectiveSlots(date).stream().map(this::toDto).toList()); + return ResponseEntity.ok(effectiveTimeSlotService.findEffective(date).stream().map(this::toDto).toList()); } @GetMapping("/scopes") @@ -167,35 +171,6 @@ public class TimeSlotAdminController { return ResponseEntity.ok(Map.of("message", "Временной слот удалён")); } - private List effectiveSlots(LocalDate date) { - TimeSlotScope defaultScope = defaultScope(); - TimeSlotScope effectiveScope = effectiveScope(date); - List defaultSlots = timeSlotRepository.findAllByTimeSlotScopeIdOrderByOrderNumberAsc(defaultScope.getId()); - if (effectiveScope.getId().equals(defaultScope.getId())) { - return defaultSlots; - } - - Map slotsByOrder = new LinkedHashMap<>(); - defaultSlots.forEach(slot -> slotsByOrder.put(slot.getOrderNumber(), slot)); - timeSlotRepository.findAllByTimeSlotScopeIdOrderByOrderNumberAsc(effectiveScope.getId()) - .forEach(slot -> slotsByOrder.put(slot.getOrderNumber(), slot)); - return new ArrayList<>(slotsByOrder.values()); - } - - private TimeSlotScope effectiveScope(LocalDate date) { - return dateAssignmentRepository.findByDate(date) - .map(TimeSlotDateAssignment::getTimeSlotScope) - .or(() -> timeSlotScopeRepository.findByApplyModeAndDayOfWeek( - APPLY_MODE_WEEKDAY, - date.getDayOfWeek().getValue())) - .orElseGet(this::defaultScope); - } - - private TimeSlotScope defaultScope() { - return timeSlotScopeRepository.findFirstByApplyModeOrderByDisplayOrderAsc(APPLY_MODE_DEFAULT) - .orElseThrow(() -> new IllegalStateException("Базовая сетка времени не настроена")); - } - private int nextManualDisplayOrder() { return timeSlotScopeRepository.findAllByOrderByDisplayOrderAscNameAsc().stream() .map(TimeSlotScope::getDisplayOrder) diff --git a/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java b/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java index 3fee5f1..367bce3 100644 --- a/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java +++ b/backend/src/main/java/com/magistr/app/dto/RenderedLessonDto.java @@ -37,6 +37,79 @@ public record RenderedLessonDto( Integer lessonTypeAcademicHours, Integer consumedLessonTypeAcademicHoursBeforeLesson, Integer remainingLessonTypeAcademicHoursAfterLesson, - com.magistr.app.model.ScheduleParity ruleParity + com.magistr.app.model.ScheduleParity ruleParity, + Long scheduleOverrideId, + String overrideAction, + LocalDate originalLessonDate ) { + public RenderedLessonDto( + Long scheduleRuleId, + Long scheduleRuleSlotId, + LocalDate date, + Integer dayOfWeek, + String dayName, + Integer weekNumber, + ScheduleParity parity, + Long timeSlotId, + Integer timeSlotOrder, + LocalTime startTime, + LocalTime endTime, + Long subjectId, + String subjectName, + Long teacherId, + String teacherName, + Long classroomId, + String classroomName, + Long lessonTypeId, + String lessonTypeName, + String lessonFormat, + Long subgroupId, + String subgroupName, + List subgroupIds, + List subgroupNames, + List groupIds, + List groupNames, + String activityType, + Integer lessonTypeAcademicHours, + Integer consumedLessonTypeAcademicHoursBeforeLesson, + Integer remainingLessonTypeAcademicHoursAfterLesson, + com.magistr.app.model.ScheduleParity ruleParity + ) { + this( + scheduleRuleId, + scheduleRuleSlotId, + date, + dayOfWeek, + dayName, + weekNumber, + parity, + timeSlotId, + timeSlotOrder, + startTime, + endTime, + subjectId, + subjectName, + teacherId, + teacherName, + classroomId, + classroomName, + lessonTypeId, + lessonTypeName, + lessonFormat, + subgroupId, + subgroupName, + subgroupIds, + subgroupNames, + groupIds, + groupNames, + activityType, + lessonTypeAcademicHours, + consumedLessonTypeAcademicHoursBeforeLesson, + remainingLessonTypeAcademicHoursAfterLesson, + ruleParity, + null, + null, + null + ); + } } diff --git a/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideAvailabilityDto.java b/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideAvailabilityDto.java new file mode 100644 index 0000000..95825ea --- /dev/null +++ b/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideAvailabilityDto.java @@ -0,0 +1,12 @@ +package com.magistr.app.dto; + +import java.time.LocalDate; +import java.util.List; + +public record ScheduleOverrideAvailabilityDto( + Long semesterId, + LocalDate semesterStartDate, + LocalDate semesterEndDate, + List availableDates +) { +} diff --git a/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java b/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java index 73c0c05..aafe4e1 100644 --- a/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java +++ b/backend/src/main/java/com/magistr/app/dto/ScheduleOverrideDto.java @@ -2,11 +2,14 @@ package com.magistr.app.dto; import java.time.LocalDate; import java.time.Instant; +import java.time.LocalTime; +import java.util.List; public record ScheduleOverrideDto( Long id, Long baseRuleSlotId, LocalDate lessonDate, + LocalDate targetLessonDate, String action, Long newTimeSlotId, Long newClassroomId, @@ -14,6 +17,109 @@ public record ScheduleOverrideDto( String newLessonFormat, String comment, Long createdBy, - Instant createdAt + Instant createdAt, + Long semesterId, + LocalDate semesterStartDate, + LocalDate semesterEndDate, + Long sourceTimeSlotId, + Integer sourceTimeSlotOrder, + LocalTime sourceStartTime, + LocalTime sourceEndTime, + Long sourceTeacherId, + String sourceTeacherName, + Long sourceClassroomId, + String sourceClassroomName, + String sourceLessonFormat, + String subjectName, + String lessonTypeName, + List groupNames ) { + public ScheduleOverrideDto( + Long id, + Long baseRuleSlotId, + LocalDate lessonDate, + LocalDate targetLessonDate, + String action, + Long newTimeSlotId, + Long newClassroomId, + Long newTeacherId, + String newLessonFormat, + String comment, + Long createdBy, + Instant createdAt + ) { + this( + id, + baseRuleSlotId, + lessonDate, + targetLessonDate, + action, + newTimeSlotId, + newClassroomId, + newTeacherId, + newLessonFormat, + comment, + createdBy, + createdAt, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + List.of() + ); + } + + public ScheduleOverrideDto( + Long id, + Long baseRuleSlotId, + LocalDate lessonDate, + String action, + Long newTimeSlotId, + Long newClassroomId, + Long newTeacherId, + String newLessonFormat, + String comment, + Long createdBy, + Instant createdAt + ) { + this( + id, + baseRuleSlotId, + lessonDate, + null, + action, + newTimeSlotId, + newClassroomId, + newTeacherId, + newLessonFormat, + comment, + createdBy, + createdAt, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + List.of() + ); + } } diff --git a/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java b/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java index b914817..c965c4c 100644 --- a/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java +++ b/backend/src/main/java/com/magistr/app/model/ScheduleOverride.java @@ -20,6 +20,9 @@ public class ScheduleOverride { @Column(name = "lesson_date", nullable = false) private LocalDate lessonDate; + @Column(name = "target_lesson_date") + private LocalDate targetLessonDate; + @Column(nullable = false, length = 20) private String action; @@ -67,6 +70,14 @@ public class ScheduleOverride { this.lessonDate = lessonDate; } + public LocalDate getTargetLessonDate() { + return targetLessonDate; + } + + public void setTargetLessonDate(LocalDate targetLessonDate) { + this.targetLessonDate = targetLessonDate; + } + public String getAction() { return action; } diff --git a/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java b/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java index 4028ca2..0547467 100644 --- a/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/ScheduleOverrideRepository.java @@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.time.LocalDate; +import java.util.Collection; import java.util.List; import java.util.Optional; @@ -17,10 +18,13 @@ public interface ScheduleOverrideRepository extends JpaRepository findByLessonDateBetweenWithDetails( @Param("startDate") LocalDate startDate, @@ -29,8 +33,62 @@ public interface ScheduleOverrideRepository extends JpaRepository findByBaseRuleSlotIdAndLessonDate(Long baseRuleSlotId, LocalDate lessonDate); - @Query("select o.lessonDate from ScheduleOverride o where o.id = :id") - Optional findLessonDateById(@Param("id") Long id); + @Query(""" + select distinct o + from ScheduleOverride o + join fetch o.baseRuleSlot baseSlot + join fetch baseSlot.scheduleRule rule + join fetch rule.subject + left join fetch rule.groups + join fetch rule.semester + join fetch baseSlot.timeSlot + join fetch baseSlot.teacher + join fetch baseSlot.classroom + join fetch baseSlot.lessonType + left join fetch o.newTimeSlot + left join fetch o.newClassroom + left join fetch o.newTeacher + order by o.lessonDate, o.id + """) + List findAllWithRegistryDetails(); + + @Query(""" + select distinct o + from ScheduleOverride o + join fetch o.baseRuleSlot baseSlot + join fetch baseSlot.scheduleRule rule + join fetch rule.subject + left join fetch rule.groups + join fetch rule.semester + join fetch baseSlot.timeSlot + join fetch baseSlot.teacher + join fetch baseSlot.classroom + join fetch baseSlot.lessonType + left join fetch o.newTimeSlot + left join fetch o.newClassroom + left join fetch o.newTeacher + where o.lessonDate between :startDate and :endDate + or o.targetLessonDate between :startDate and :endDate + order by o.lessonDate, o.id + """) + List findForRegistry( + @Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate + ); + + @Query(""" + select o + from ScheduleOverride o + left join fetch o.baseRuleSlot baseSlot + left join fetch baseSlot.scheduleRule rule + left join fetch rule.semester + left join fetch o.newTimeSlot + left join fetch o.newClassroom + left join fetch o.newTeacher + where o.lessonDate in :dates + or o.targetLessonDate in :dates + """) + List findAffectingDatesWithDetails(@Param("dates") Collection dates); @Lock(LockModeType.PESSIMISTIC_WRITE) @Query("select o from ScheduleOverride o where o.id = :id") diff --git a/backend/src/main/java/com/magistr/app/service/EffectiveTimeSlotService.java b/backend/src/main/java/com/magistr/app/service/EffectiveTimeSlotService.java new file mode 100644 index 0000000..297215b --- /dev/null +++ b/backend/src/main/java/com/magistr/app/service/EffectiveTimeSlotService.java @@ -0,0 +1,76 @@ +package com.magistr.app.service; + +import com.magistr.app.model.TimeSlot; +import com.magistr.app.model.TimeSlotDateAssignment; +import com.magistr.app.model.TimeSlotScope; +import com.magistr.app.repository.TimeSlotDateAssignmentRepository; +import com.magistr.app.repository.TimeSlotRepository; +import com.magistr.app.repository.TimeSlotScopeRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Service +public class EffectiveTimeSlotService { + + private static final String APPLY_MODE_DEFAULT = "DEFAULT"; + private static final String APPLY_MODE_WEEKDAY = "WEEKDAY"; + + private final TimeSlotRepository timeSlotRepository; + private final TimeSlotScopeRepository timeSlotScopeRepository; + private final TimeSlotDateAssignmentRepository dateAssignmentRepository; + + public EffectiveTimeSlotService(TimeSlotRepository timeSlotRepository, + TimeSlotScopeRepository timeSlotScopeRepository, + TimeSlotDateAssignmentRepository dateAssignmentRepository) { + this.timeSlotRepository = timeSlotRepository; + this.timeSlotScopeRepository = timeSlotScopeRepository; + this.dateAssignmentRepository = dateAssignmentRepository; + } + + @Transactional(readOnly = true) + public List findEffective(LocalDate date) { + if (date == null) { + throw new IllegalArgumentException("Дата временной сетки обязательна"); + } + TimeSlotScope defaultScope = defaultScope(); + TimeSlotScope effectiveScope = effectiveScope(date, defaultScope); + List defaultSlots = timeSlotRepository + .findAllByTimeSlotScopeIdOrderByOrderNumberAsc(defaultScope.getId()); + if (Objects.equals(effectiveScope.getId(), defaultScope.getId())) { + return defaultSlots; + } + + Map slotsByOrder = new LinkedHashMap<>(); + defaultSlots.forEach(slot -> slotsByOrder.put(slot.getOrderNumber(), slot)); + timeSlotRepository.findAllByTimeSlotScopeIdOrderByOrderNumberAsc(effectiveScope.getId()) + .forEach(slot -> slotsByOrder.put(slot.getOrderNumber(), slot)); + return new ArrayList<>(slotsByOrder.values()); + } + + @Transactional(readOnly = true) + public boolean isEffectiveOnDate(Long timeSlotId, LocalDate date) { + return timeSlotId != null && findEffective(date).stream() + .anyMatch(slot -> Objects.equals(slot.getId(), timeSlotId)); + } + + private TimeSlotScope effectiveScope(LocalDate date, TimeSlotScope defaultScope) { + return dateAssignmentRepository.findByDate(date) + .map(TimeSlotDateAssignment::getTimeSlotScope) + .or(() -> timeSlotScopeRepository.findByApplyModeAndDayOfWeek( + APPLY_MODE_WEEKDAY, + date.getDayOfWeek().getValue())) + .orElse(defaultScope); + } + + private TimeSlotScope defaultScope() { + return timeSlotScopeRepository.findFirstByApplyModeOrderByDisplayOrderAsc(APPLY_MODE_DEFAULT) + .orElseThrow(() -> new IllegalStateException("Базовая сетка времени не настроена")); + } +} diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleOverrideService.java b/backend/src/main/java/com/magistr/app/service/ScheduleOverrideService.java index e9a2f21..320f396 100644 --- a/backend/src/main/java/com/magistr/app/service/ScheduleOverrideService.java +++ b/backend/src/main/java/com/magistr/app/service/ScheduleOverrideService.java @@ -2,6 +2,7 @@ package com.magistr.app.service; import com.magistr.app.config.auth.AuthContext; import com.magistr.app.dto.RenderedLessonDto; +import com.magistr.app.dto.ScheduleOverrideAvailabilityDto; import com.magistr.app.dto.ScheduleOverrideDto; import com.magistr.app.model.Classroom; import com.magistr.app.model.Role; @@ -17,9 +18,11 @@ import com.magistr.app.repository.TimeSlotRepository; import com.magistr.app.repository.UserRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.beans.factory.annotation.Autowired; import java.time.LocalDate; import java.time.LocalTime; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; @@ -31,7 +34,9 @@ import java.util.Locale; import java.util.Map; import java.util.NoSuchElementException; import java.util.Objects; +import java.util.Optional; import java.util.Set; +import java.util.TreeSet; import java.util.stream.Collectors; @Service @@ -49,7 +54,10 @@ public class ScheduleOverrideService { private final ScheduleQueryService scheduleQueryService; private final ScheduleGeneratorService scheduleGeneratorService; private final PostgreSqlAdvisoryLock advisoryLock; + private final AcademicDateService academicDateService; + private final EffectiveTimeSlotService effectiveTimeSlotService; + @Autowired public ScheduleOverrideService(ScheduleOverrideRepository scheduleOverrideRepository, ScheduleRuleSlotRepository scheduleRuleSlotRepository, TimeSlotRepository timeSlotRepository, @@ -58,7 +66,9 @@ public class ScheduleOverrideService { SubgroupRepository subgroupRepository, ScheduleQueryService scheduleQueryService, ScheduleGeneratorService scheduleGeneratorService, - PostgreSqlAdvisoryLock advisoryLock) { + PostgreSqlAdvisoryLock advisoryLock, + AcademicDateService academicDateService, + EffectiveTimeSlotService effectiveTimeSlotService) { this.scheduleOverrideRepository = scheduleOverrideRepository; this.scheduleRuleSlotRepository = scheduleRuleSlotRepository; this.timeSlotRepository = timeSlotRepository; @@ -68,42 +78,124 @@ public class ScheduleOverrideService { this.scheduleQueryService = scheduleQueryService; this.scheduleGeneratorService = scheduleGeneratorService; this.advisoryLock = advisoryLock; + this.academicDateService = academicDateService; + this.effectiveTimeSlotService = effectiveTimeSlotService; + } + + ScheduleOverrideService(ScheduleOverrideRepository scheduleOverrideRepository, + ScheduleRuleSlotRepository scheduleRuleSlotRepository, + TimeSlotRepository timeSlotRepository, + ClassroomRepository classroomRepository, + UserRepository userRepository, + SubgroupRepository subgroupRepository, + ScheduleQueryService scheduleQueryService, + ScheduleGeneratorService scheduleGeneratorService, + PostgreSqlAdvisoryLock advisoryLock) { + this( + scheduleOverrideRepository, + scheduleRuleSlotRepository, + timeSlotRepository, + classroomRepository, + userRepository, + subgroupRepository, + scheduleQueryService, + scheduleGeneratorService, + advisoryLock, + null, + null + ); + } + + @Transactional(readOnly = true) + public List getAll(LocalDate startDate, LocalDate endDate) { + if ((startDate == null) != (endDate == null)) { + throw new IllegalArgumentException("Дата начала и дата окончания должны быть указаны вместе"); + } + if (startDate != null) { + validateRange(startDate, endDate); + } + List overrides = startDate == null + ? scheduleOverrideRepository.findAllWithRegistryDetails() + : scheduleOverrideRepository.findForRegistry(startDate, endDate); + return overrides.stream() + .map(this::toDto) + .toList(); } @Transactional(readOnly = true) public List getAll() { - return scheduleOverrideRepository.findAll().stream() - .map(this::toDto) + return getAll(null, null); + } + + @Transactional(readOnly = true) + public ScheduleOverrideAvailabilityDto getAvailability(Long baseRuleSlotId, LocalDate lessonDate) { + if (baseRuleSlotId == null || lessonDate == null) { + throw new IllegalArgumentException("Базовый слот и исходная дата пары обязательны"); + } + ScheduleRuleSlot slot = scheduleRuleSlotRepository.findById(baseRuleSlotId) + .orElseThrow(() -> new IllegalArgumentException("Базовый слот расписания не найден")); + ensureSourceOccurrenceExists(baseRuleSlotId, lessonDate); + var rule = slot.getScheduleRule(); + if (rule == null || rule.getSemester() == null) { + throw new IllegalArgumentException("Для базового слота не найден семестр"); + } + var semester = rule.getSemester(); + if (lessonDate.isBefore(semester.getStartDate()) || lessonDate.isAfter(semester.getEndDate())) { + throw new IllegalArgumentException("Исходная дата пары находится вне семестра правила"); + } + if (academicDateService == null) { + throw new IllegalStateException("Сервис учебных дат не настроен"); + } + List groups = rule.getGroups().stream() + .sorted(Comparator.comparing(com.magistr.app.model.StudentGroup::getName)) .toList(); + var snapshot = academicDateService.createScheduleSnapshot( + groups, + List.of(semester), + semester.getEndDate() + ); + List availableDates = semester.getStartDate() + .datesUntil(semester.getEndDate().plusDays(1)) + .filter(date -> rule.isActiveOn(date)) + .filter(date -> rule.getSubject().isActiveOn(date)) + .filter(date -> groups.stream().allMatch(group -> group.isActiveOn(date) + && snapshot.isTheoryDay(group, semester, date))) + .toList(); + return new ScheduleOverrideAvailabilityDto( + semester.getId(), + semester.getStartDate(), + semester.getEndDate(), + availableDates + ); } @Transactional public ScheduleOverrideDto create(ScheduleOverrideDto request) { OverrideCommand command = validateAndNormalize(request); - advisoryLock.lockScheduleOverrideDate(command.lessonDate()); + lockDatesInStableOrder(command.lessonDate(), command.effectiveDate()); - ScheduleOverride current = scheduleOverrideRepository + scheduleOverrideRepository .findByBaseRuleSlotIdAndLessonDateForUpdate(command.baseRuleSlotId(), command.lessonDate()) - .orElse(null); - return validateAndPersist(current, command); + .ifPresent(existing -> { + throw new ScheduleConflictException( + "Для выбранной базовой пары и даты уже существует точечное изменение" + ); + }); + return validateAndPersist(null, command); } @Transactional public ScheduleOverrideDto update(Long id, ScheduleOverrideDto request) { OverrideCommand command = validateAndNormalize(request); advisoryLock.lockScheduleOverrideId(id); - - LocalDate observedOldDate = scheduleOverrideRepository.findLessonDateById(id) - .orElseThrow(() -> notFound(id)); - lockDatesInStableOrder(observedOldDate, command.lessonDate()); - ScheduleOverride current = scheduleOverrideRepository.findByIdForUpdate(id) .orElseThrow(() -> notFound(id)); - if (!Objects.equals(observedOldDate, current.getLessonDate())) { - throw new ScheduleConflictException( - "Точечное изменение расписания было изменено параллельно. Повторите запрос" - ); - } + lockDatesInStableOrder( + current.getLessonDate(), + effectiveDate(current), + command.lessonDate(), + command.effectiveDate() + ); scheduleOverrideRepository .findByBaseRuleSlotIdAndLessonDateForUpdate(command.baseRuleSlotId(), command.lessonDate()) @@ -119,24 +211,15 @@ public class ScheduleOverrideService { @Transactional public void delete(Long id) { advisoryLock.lockScheduleOverrideId(id); - LocalDate observedDate = scheduleOverrideRepository.findLessonDateById(id) - .orElseThrow(() -> notFound(id)); - advisoryLock.lockScheduleOverrideDate(observedDate); - ScheduleOverride current = scheduleOverrideRepository.findByIdForUpdate(id) .orElseThrow(() -> notFound(id)); - if (!Objects.equals(observedDate, current.getLessonDate())) { - throw new ScheduleConflictException( - "Точечное изменение расписания было изменено параллельно. Повторите запрос" - ); - } + lockDatesInStableOrder(current.getLessonDate(), effectiveDate(current)); scheduleOverrideRepository.delete(current); scheduleOverrideRepository.flush(); scheduleGeneratorService.clearCache(); } private ScheduleOverrideDto validateAndPersist(ScheduleOverride current, OverrideCommand command) { - ResolvedReferences references = resolveReferences(command); List baseDay = scheduleQueryService.buildBaseDayForAllGroups(command.lessonDate()); List sourceOccurrences = baseDay.stream() .filter(lesson -> Objects.equals(lesson.scheduleRuleSlotId(), command.baseRuleSlotId())) @@ -147,6 +230,8 @@ public class ScheduleOverrideService { "На выбранную дату базовая пара не формируется по правилам расписания" ); } + ResolvedReferences references = resolveReferences(command, sourceOccurrences); + validateTargetDate(command, references.baseRuleSlot(), sourceOccurrences); ScheduleOverride candidate = buildCandidate(command, references); if (!"CANCEL".equals(command.action())) { @@ -169,22 +254,34 @@ public class ScheduleOverrideService { List baseDay, List sourceOccurrences) { Long currentId = current == null ? null : current.getId(); - List effectiveOverrides = scheduleOverrideRepository - .findByLessonDateBetweenWithDetails(command.lessonDate(), command.lessonDate()) + Set affectedDates = new TreeSet<>(List.of(command.lessonDate(), command.effectiveDate())); + List storedOverrides = affectedDates.size() == 1 + ? scheduleOverrideRepository.findByLessonDateBetweenWithDetails( + command.lessonDate(), + command.lessonDate() + ) + : scheduleOverrideRepository.findAffectingDatesWithDetails(affectedDates); + List effectiveOverrides = Optional.ofNullable(storedOverrides) + .orElseGet(List::of) .stream() .filter(override -> currentId == null || !Objects.equals(override.getId(), currentId)) .filter(override -> !sameKey(override, command.baseRuleSlotId(), command.lessonDate())) .collect(Collectors.toCollection(ArrayList::new)); effectiveOverrides.add(candidate); - List effectiveDay = scheduleQueryService.buildEffectiveDayForAllGroups( - baseDay, - command.lessonDate(), - effectiveOverrides - ); - List candidateOccurrences = effectiveDay.stream() + List effectiveSchedule = Objects.equals(command.lessonDate(), command.effectiveDate()) + ? scheduleQueryService.buildEffectiveDayForAllGroups( + baseDay, + command.lessonDate(), + effectiveOverrides + ) + : scheduleQueryService.buildEffectiveDaysForAllGroups(affectedDates, effectiveOverrides); + List candidateOccurrences = effectiveSchedule.stream() .filter(lesson -> Objects.equals(lesson.scheduleRuleSlotId(), command.baseRuleSlotId())) - .filter(lesson -> Objects.equals(lesson.date(), command.lessonDate())) + .filter(lesson -> Objects.equals(lesson.date(), command.effectiveDate())) + .filter(lesson -> Objects.equals(lesson.originalLessonDate(), command.lessonDate()) + || (Objects.equals(command.lessonDate(), command.effectiveDate()) + && lesson.originalLessonDate() == null)) .toList(); if (candidateOccurrences.isEmpty()) { throw new IllegalArgumentException("Точечное изменение не формирует результирующую пару"); @@ -203,13 +300,22 @@ public class ScheduleOverrideService { ); } - List otherOccurrences = effectiveDay.stream() - .filter(lesson -> !Objects.equals(lesson.scheduleRuleSlotId(), command.baseRuleSlotId())) + List otherOccurrences = effectiveSchedule.stream() + .filter(lesson -> !isCandidateOccurrence(lesson, command)) + .filter(lesson -> Objects.equals(lesson.date(), command.effectiveDate())) .toList(); Map subgroupToGroup = loadSubgroupGroupMap(candidateOccurrences, otherOccurrences); validateResourceConflicts(candidateOccurrences, otherOccurrences, subgroupToGroup); } + private boolean isCandidateOccurrence(RenderedLessonDto lesson, OverrideCommand command) { + return Objects.equals(lesson.scheduleRuleSlotId(), command.baseRuleSlotId()) + && (Objects.equals(lesson.originalLessonDate(), command.lessonDate()) + || (Objects.equals(command.lessonDate(), command.effectiveDate()) + && lesson.originalLessonDate() == null)) + && Objects.equals(lesson.date(), command.effectiveDate()); + } + private void validateActionSpecificChange(String action, List sourceOccurrences, List candidateOccurrences) { @@ -222,7 +328,7 @@ public class ScheduleOverrideService { .collect(Collectors.toSet()); if (source.equals(candidate)) { throw new IllegalArgumentException( - "Перенос должен фактически менять время пары или аудиторию" + "Перенос должен фактически менять дату, время пары или аудиторию" ); } } @@ -331,7 +437,8 @@ public class ScheduleOverrideService { .collect(Collectors.toSet()); } - private ResolvedReferences resolveReferences(OverrideCommand command) { + private ResolvedReferences resolveReferences(OverrideCommand command, + List sourceOccurrences) { ScheduleRuleSlot baseRuleSlot = scheduleRuleSlotRepository.findById(command.baseRuleSlotId()) .orElseThrow(() -> new IllegalArgumentException("Базовый слот расписания не найден")); TimeSlot newTimeSlot = command.newTimeSlotId() == null @@ -347,22 +454,73 @@ public class ScheduleOverrideService { : userRepository.findById(command.newTeacherId()) .orElseThrow(() -> new IllegalArgumentException("Преподаватель не найден")); - if (newTeacher != null - && (newTeacher.getRole() != Role.TEACHER || !newTeacher.isActiveOn(command.lessonDate()))) { + if ("CANCEL".equals(command.action())) { + return new ResolvedReferences(baseRuleSlot, newTimeSlot, newClassroom, newTeacher); + } + + LocalDate effectiveDate = command.effectiveDate(); + User effectiveTeacher = newTeacher == null ? baseRuleSlot.getTeacher() : newTeacher; + Classroom effectiveClassroom = newClassroom == null ? baseRuleSlot.getClassroom() : newClassroom; + if (effectiveTeacher == null + || effectiveTeacher.getRole() != Role.TEACHER + || !effectiveTeacher.isActiveOn(effectiveDate)) { throw new IllegalArgumentException("Активный преподаватель с ролью TEACHER не найден"); } - if (newClassroom != null - && (!newClassroom.isActiveOn(command.lessonDate()) - || !Boolean.TRUE.equals(newClassroom.getIsAvailable()))) { + if (effectiveClassroom == null + || !effectiveClassroom.isActiveOn(effectiveDate) + || !Boolean.TRUE.equals(effectiveClassroom.getIsAvailable())) { throw new IllegalArgumentException("Активная и доступная аудитория не найдена"); } + if (newTimeSlot != null + && effectiveTimeSlotService != null + && !effectiveTimeSlotService.isEffectiveOnDate(newTimeSlot.getId(), effectiveDate)) { + throw new IllegalArgumentException("Выбранный временной слот не действует на целевую дату"); + } return new ResolvedReferences(baseRuleSlot, newTimeSlot, newClassroom, newTeacher); } + private void validateTargetDate(OverrideCommand command, + ScheduleRuleSlot baseRuleSlot, + List sourceOccurrences) { + if (command.targetLessonDate() == null) { + return; + } + if (academicDateService == null) { + throw new IllegalStateException("Сервис учебных дат не настроен"); + } + if (baseRuleSlot.getScheduleRule() == null + || baseRuleSlot.getScheduleRule().getSemester() == null) { + throw new IllegalArgumentException("Для базового слота не найден семестр"); + } + var rule = baseRuleSlot.getScheduleRule(); + var semester = rule.getSemester(); + LocalDate targetDate = command.targetLessonDate(); + if (targetDate.isBefore(semester.getStartDate()) || targetDate.isAfter(semester.getEndDate())) { + throw new IllegalArgumentException("Перенести занятие можно только в пределах того же семестра"); + } + if (!rule.isActiveOn(targetDate) || !rule.getSubject().isActiveOn(targetDate)) { + throw new IllegalArgumentException("Правило или дисциплина не действуют на целевую дату"); + } + Set affectedGroupIds = sourceOccurrences.stream() + .flatMap(lesson -> safeIds(lesson.groupIds()).stream()) + .collect(Collectors.toSet()); + List affectedGroups = rule.getGroups().stream() + .filter(group -> affectedGroupIds.contains(group.getId())) + .toList(); + if (affectedGroups.size() != affectedGroupIds.size() + || affectedGroups.stream().anyMatch(group -> !group.isActiveOn(targetDate) + || !academicDateService.isTheoryDay(group, semester, targetDate))) { + throw new IllegalArgumentException( + "Целевая дата должна быть учебной для всех групп исходного занятия" + ); + } + } + private ScheduleOverride buildCandidate(OverrideCommand command, ResolvedReferences references) { ScheduleOverride candidate = new ScheduleOverride(); candidate.setBaseRuleSlot(references.baseRuleSlot()); candidate.setLessonDate(command.lessonDate()); + candidate.setTargetLessonDate(command.targetLessonDate()); candidate.setAction(command.action()); candidate.setNewTimeSlot(references.newTimeSlot()); candidate.setNewClassroom(references.newClassroom()); @@ -374,6 +532,7 @@ public class ScheduleOverrideService { private void copyCandidate(ScheduleOverride source, ScheduleOverride target) { target.setBaseRuleSlot(source.getBaseRuleSlot()); target.setLessonDate(source.getLessonDate()); + target.setTargetLessonDate(source.getTargetLessonDate()); target.setAction(source.getAction()); target.setNewTimeSlot(source.getNewTimeSlot()); target.setNewClassroom(source.getNewClassroom()); @@ -397,21 +556,34 @@ public class ScheduleOverrideService { throw new IllegalArgumentException("Недопустимое действие изменения расписания"); } String lessonFormat = clean(request.newLessonFormat()); + LocalDate targetLessonDate = request.targetLessonDate(); if (lessonFormat != null && !LESSON_FORMATS.contains(lessonFormat)) { throw new IllegalArgumentException("Формат пары должен быть «Очно» или «Онлайн»"); } if ("CANCEL".equals(action) - && (request.newTimeSlotId() != null + && (targetLessonDate != null + || request.newTimeSlotId() != null || request.newClassroomId() != null || request.newTeacherId() != null || lessonFormat != null)) { throw new IllegalArgumentException("Для отмены пары новые параметры должны быть пустыми"); } + if (targetLessonDate != null && Objects.equals(targetLessonDate, request.lessonDate())) { + throw new IllegalArgumentException("Целевая дата должна отличаться от исходной даты пары"); + } + if (targetLessonDate != null && request.newTimeSlotId() == null) { + throw new IllegalArgumentException("Для переноса даты выберите временной слот целевого дня"); + } + if (targetLessonDate != null && !"MOVE".equals(action)) { + throw new IllegalArgumentException("Перенос даты должен использовать действие MOVE"); + } if ("MOVE".equals(action) - && request.newTimeSlotId() == null - && request.newClassroomId() == null) { - throw new IllegalArgumentException("Для переноса укажите новое время или аудиторию"); + && request.newTimeSlotId() == null) { + throw new IllegalArgumentException("Для переноса укажите новое время"); + } + if ("REPLACE".equals(action) && request.newTimeSlotId() != null) { + throw new IllegalArgumentException("Изменение времени должно использовать действие MOVE"); } if ("REPLACE".equals(action) && request.newTeacherId() == null @@ -424,6 +596,7 @@ public class ScheduleOverrideService { return new OverrideCommand( request.baseRuleSlotId(), request.lessonDate(), + targetLessonDate, action, request.newTimeSlotId(), request.newClassroomId(), @@ -433,8 +606,9 @@ public class ScheduleOverrideService { ); } - private void lockDatesInStableOrder(LocalDate first, LocalDate second) { - List.of(first, second).stream() + private void lockDatesInStableOrder(LocalDate... dates) { + java.util.Arrays.stream(dates) + .filter(Objects::nonNull) .distinct() .sorted(Comparator.naturalOrder()) .forEach(advisoryLock::lockScheduleOverrideDate); @@ -446,15 +620,55 @@ public class ScheduleOverrideService { && Objects.equals(override.getLessonDate(), lessonDate); } + private LocalDate effectiveDate(ScheduleOverride override) { + return override.getTargetLessonDate() == null + ? override.getLessonDate() + : override.getTargetLessonDate(); + } + + private void ensureSourceOccurrenceExists(Long baseRuleSlotId, LocalDate lessonDate) { + boolean exists = scheduleQueryService.buildBaseDayForAllGroups(lessonDate).stream() + .anyMatch(lesson -> Objects.equals(lesson.scheduleRuleSlotId(), baseRuleSlotId) + && Objects.equals(lesson.date(), lessonDate)); + if (!exists) { + throw new IllegalArgumentException( + "На выбранную дату базовая пара не формируется по правилам расписания" + ); + } + } + + private void validateRange(LocalDate startDate, LocalDate endDate) { + if (endDate.isBefore(startDate)) { + throw new IllegalArgumentException("Дата окончания не может быть раньше даты начала"); + } + if (ChronoUnit.DAYS.between(startDate, endDate) + 1 > 120) { + throw new IllegalArgumentException("Диапазон точечных изменений не может превышать 120 дней"); + } + } + private NoSuchElementException notFound(Long id) { return new NoSuchElementException("Точечное изменение расписания с идентификатором " + id + " не найдено"); } private ScheduleOverrideDto toDto(ScheduleOverride override) { + ScheduleRuleSlot baseSlot = override.getBaseRuleSlot(); + var rule = baseSlot == null ? null : baseSlot.getScheduleRule(); + var semester = rule == null ? null : rule.getSemester(); + TimeSlot sourceTimeSlot = baseSlot == null ? null : baseSlot.getTimeSlot(); + User sourceTeacher = baseSlot == null ? null : baseSlot.getTeacher(); + Classroom sourceClassroom = baseSlot == null ? null : baseSlot.getClassroom(); + List groupNames = rule == null || rule.getGroups() == null + ? List.of() + : rule.getGroups().stream() + .map(com.magistr.app.model.StudentGroup::getName) + .filter(Objects::nonNull) + .sorted() + .toList(); return new ScheduleOverrideDto( override.getId(), - override.getBaseRuleSlot().getId(), + baseSlot == null ? null : baseSlot.getId(), override.getLessonDate(), + override.getTargetLessonDate(), override.getAction(), override.getNewTimeSlot() == null ? null : override.getNewTimeSlot().getId(), override.getNewClassroom() == null ? null : override.getNewClassroom().getId(), @@ -462,7 +676,24 @@ public class ScheduleOverrideService { override.getNewLessonFormat(), override.getComment(), override.getCreatedBy(), - override.getCreatedAt() + override.getCreatedAt(), + semester == null ? null : semester.getId(), + semester == null ? null : semester.getStartDate(), + semester == null ? null : semester.getEndDate(), + sourceTimeSlot == null ? null : sourceTimeSlot.getId(), + sourceTimeSlot == null ? null : sourceTimeSlot.getOrderNumber(), + sourceTimeSlot == null ? null : sourceTimeSlot.getStartTime(), + sourceTimeSlot == null ? null : sourceTimeSlot.getEndTime(), + sourceTeacher == null ? null : sourceTeacher.getId(), + sourceTeacher == null ? null : ScheduleGeneratorService.displayUserName(sourceTeacher), + sourceClassroom == null ? null : sourceClassroom.getId(), + sourceClassroom == null ? null : sourceClassroom.getName(), + baseSlot == null ? null : baseSlot.getLessonFormat(), + rule == null || rule.getSubject() == null ? null : rule.getSubject().getName(), + baseSlot == null || baseSlot.getLessonType() == null + ? null + : baseSlot.getLessonType().getLessonType(), + groupNames ); } @@ -473,6 +704,7 @@ public class ScheduleOverrideService { private record OverrideCommand( Long baseRuleSlotId, LocalDate lessonDate, + LocalDate targetLessonDate, String action, Long newTimeSlotId, Long newClassroomId, @@ -480,6 +712,9 @@ public class ScheduleOverrideService { String newLessonFormat, String comment ) { + private LocalDate effectiveDate() { + return targetLessonDate == null ? lessonDate : targetLessonDate; + } } private record ResolvedReferences( @@ -491,6 +726,7 @@ public class ScheduleOverrideService { } private record EffectiveSourceTuple( + LocalDate date, Long timeSlotId, LocalTime startTime, LocalTime endTime, @@ -500,6 +736,7 @@ public class ScheduleOverrideService { ) { private static EffectiveSourceTuple from(RenderedLessonDto lesson) { return new EffectiveSourceTuple( + lesson.date(), lesson.timeSlotId(), lesson.startTime(), lesson.endTime(), @@ -511,12 +748,13 @@ public class ScheduleOverrideService { } private record MoveTuple( + LocalDate date, LocalTime startTime, LocalTime endTime, Long classroomId ) { private static MoveTuple from(RenderedLessonDto lesson) { - return new MoveTuple(lesson.startTime(), lesson.endTime(), lesson.classroomId()); + return new MoveTuple(lesson.date(), lesson.startTime(), lesson.endTime(), lesson.classroomId()); } } diff --git a/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java b/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java index c70689e..d23b63a 100644 --- a/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java +++ b/backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java @@ -5,6 +5,7 @@ import com.magistr.app.model.ScheduleOverride; import com.magistr.app.model.StudentGroup; import com.magistr.app.repository.GroupRepository; import com.magistr.app.repository.ScheduleOverrideRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDate; @@ -22,15 +23,26 @@ public class ScheduleQueryService { private final GroupRepository groupRepository; private final ScheduleOverrideRepository scheduleOverrideRepository; private final StudentGroupLifecycleService groupLifecycleService; + private final AcademicDateService academicDateService; + @Autowired public ScheduleQueryService(ScheduleGeneratorService scheduleGeneratorService, GroupRepository groupRepository, ScheduleOverrideRepository scheduleOverrideRepository, - StudentGroupLifecycleService groupLifecycleService) { + StudentGroupLifecycleService groupLifecycleService, + AcademicDateService academicDateService) { this.scheduleGeneratorService = scheduleGeneratorService; this.groupRepository = groupRepository; this.scheduleOverrideRepository = scheduleOverrideRepository; this.groupLifecycleService = groupLifecycleService; + this.academicDateService = academicDateService; + } + + ScheduleQueryService(ScheduleGeneratorService scheduleGeneratorService, + GroupRepository groupRepository, + ScheduleOverrideRepository scheduleOverrideRepository, + StudentGroupLifecycleService groupLifecycleService) { + this(scheduleGeneratorService, groupRepository, scheduleOverrideRepository, groupLifecycleService, null); } /** @@ -75,6 +87,31 @@ public class ScheduleQueryService { return deduplicate(applyOverrides(safeBaseDay, date, overrides)); } + /** + * Строит несколько эффективных дней с учётом входящих и исходящих переносов. + * Исходная пара достраивается даже тогда, когда её дата не входит в результирующий набор. + */ + public List buildEffectiveDaysForAllGroups( + Collection dates, + Collection overrides + ) { + Set requestedDates = Optional.ofNullable(dates) + .orElseGet(List::of) + .stream() + .filter(Objects::nonNull) + .collect(Collectors.toCollection(TreeSet::new)); + if (requestedDates.isEmpty()) { + return List.of(); + } + List baseLessons = requestedDates.stream() + .flatMap(date -> buildBaseDayForAllGroups(date).stream()) + .collect(Collectors.toCollection(ArrayList::new)); + addOverrideSourceOccurrences(baseLessons, overrides, null); + return deduplicate(applyOverrides(baseLessons, null, overrides).stream() + .filter(lesson -> requestedDates.contains(lesson.date())) + .toList()); + } + public List search(Long groupId, Long teacherId, Long classroomId, @@ -137,29 +174,26 @@ public class ScheduleQueryService { boolean enforceInteractiveGroupLimit) { validateRange(startDate, endDate); List generatedLessons; + List scopedGroups = null; boolean teacherOnlySearch = groupId == null && departmentId == null && teacherId != null; if (teacherOnlySearch) { generatedLessons = scheduleGeneratorService.buildScheduleForTeacher(teacherId, startDate, endDate); } else { - List groups = resolveGroups( + scopedGroups = resolveGroups( groupId, departmentId, startDate, endDate, enforceInteractiveGroupLimit ); - generatedLessons = scheduleGeneratorService.buildScheduleForGroups(groups, startDate, endDate); + generatedLessons = scheduleGeneratorService.buildScheduleForGroups(scopedGroups, startDate, endDate); } List overrideSnapshot = scheduleOverrideRepository .findByLessonDateBetweenWithDetails(startDate, endDate); - if (teacherOnlySearch) { - generatedLessons = addOverrideSourceOccurrencesForTeacher( - generatedLessons, - teacherId, - overrideSnapshot - ); - } + generatedLessons = new ArrayList<>(generatedLessons); + addOverrideSourceOccurrences(generatedLessons, overrideSnapshot, scopedGroups); List lessons = applyOverrides(generatedLessons, null, overrideSnapshot).stream() + .filter(lesson -> !lesson.date().isBefore(startDate) && !lesson.date().isAfter(endDate)) .filter(lesson -> teacherId == null || Objects.equals(lesson.teacherId(), teacherId)) .filter(lesson -> classroomId == null || Objects.equals(lesson.classroomId(), classroomId)) .filter(lesson -> subjectId == null || Objects.equals(lesson.subjectId(), subjectId)) @@ -170,10 +204,10 @@ public class ScheduleQueryService { return deduplicate(lessons); } - private List addOverrideSourceOccurrencesForTeacher( + private void addOverrideSourceOccurrences( List generatedLessons, - Long teacherId, - Collection overrideSnapshot + Collection overrideSnapshot, + List scopedGroups ) { Map> relevantSlotsByDate = Optional.ofNullable(overrideSnapshot) .orElseGet(List::of) @@ -182,8 +216,7 @@ public class ScheduleQueryService { .filter(override -> override.getLessonDate() != null) .filter(override -> override.getBaseRuleSlot() != null) .filter(override -> override.getBaseRuleSlot().getId() != null) - .filter(override -> override.getNewTeacher() != null) - .filter(override -> Objects.equals(override.getNewTeacher().getId(), teacherId)) + .filter(override -> !"CANCEL".equals(override.getAction())) .collect(Collectors.groupingBy( ScheduleOverride::getLessonDate, TreeMap::new, @@ -193,15 +226,27 @@ public class ScheduleQueryService { ) )); if (relevantSlotsByDate.isEmpty()) { - return generatedLessons; + return; } - List supplementedLessons = new ArrayList<>(generatedLessons); - relevantSlotsByDate.forEach((date, baseRuleSlotIds) -> buildBaseDayForAllGroups(date).stream() - .filter(lesson -> date.equals(lesson.date())) - .filter(lesson -> baseRuleSlotIds.contains(lesson.scheduleRuleSlotId())) - .forEach(supplementedLessons::add)); - return supplementedLessons; + relevantSlotsByDate.forEach((date, baseRuleSlotIds) -> { + Set missingBaseRuleSlotIds = baseRuleSlotIds.stream() + .filter(baseRuleSlotId -> generatedLessons.stream().noneMatch(lesson -> + date.equals(lesson.date()) + && Objects.equals(baseRuleSlotId, lesson.scheduleRuleSlotId()) + )) + .collect(Collectors.toCollection(LinkedHashSet::new)); + if (missingBaseRuleSlotIds.isEmpty()) { + return; + } + List sourceDay = scopedGroups == null + ? buildBaseDayForAllGroups(date) + : deduplicate(scheduleGeneratorService.buildScheduleForGroups(scopedGroups, date, date)); + sourceDay.stream() + .filter(lesson -> date.equals(lesson.date())) + .filter(lesson -> missingBaseRuleSlotIds.contains(lesson.scheduleRuleSlotId())) + .forEach(generatedLessons::add); + }); } private List applyOverrides(List lessons, @@ -235,6 +280,26 @@ public class ScheduleQueryService { if ("CANCEL".equals(override.getAction())) { return null; } + LocalDate effectiveDate = override.getTargetLessonDate() == null + ? lesson.date() + : override.getTargetLessonDate(); + Integer dayOfWeek = lesson.dayOfWeek(); + String dayName = lesson.dayName(); + Integer weekNumber = lesson.weekNumber(); + com.magistr.app.model.ScheduleParity parity = lesson.parity(); + if (!Objects.equals(effectiveDate, lesson.date())) { + if (academicDateService == null + || override.getBaseRuleSlot() == null + || override.getBaseRuleSlot().getScheduleRule() == null + || override.getBaseRuleSlot().getScheduleRule().getSemester() == null) { + throw new IllegalStateException("Невозможно пересчитать календарные параметры перенесённой пары"); + } + var semester = override.getBaseRuleSlot().getScheduleRule().getSemester(); + dayOfWeek = effectiveDate.getDayOfWeek().getValue(); + dayName = dayName(effectiveDate.getDayOfWeek()); + weekNumber = academicDateService.getWeekNumber(semester, effectiveDate); + parity = academicDateService.getParity(semester, effectiveDate); + } Long timeSlotId = lesson.timeSlotId(); Integer timeSlotOrder = lesson.timeSlotOrder(); java.time.LocalTime startTime = lesson.startTime(); @@ -255,11 +320,11 @@ public class ScheduleQueryService { return new RenderedLessonDto( lesson.scheduleRuleId(), lesson.scheduleRuleSlotId(), - lesson.date(), - lesson.dayOfWeek(), - lesson.dayName(), - lesson.weekNumber(), - lesson.parity(), + effectiveDate, + dayOfWeek, + dayName, + weekNumber, + parity, timeSlotId, timeSlotOrder, startTime, @@ -283,10 +348,25 @@ public class ScheduleQueryService { lesson.lessonTypeAcademicHours(), lesson.consumedLessonTypeAcademicHoursBeforeLesson(), lesson.remainingLessonTypeAcademicHoursAfterLesson(), - lesson.ruleParity() + lesson.ruleParity(), + override.getId(), + override.getAction(), + lesson.date() ); } + private String dayName(java.time.DayOfWeek dayOfWeek) { + return switch (dayOfWeek) { + case MONDAY -> "Понедельник"; + case TUESDAY -> "Вторник"; + case WEDNESDAY -> "Среда"; + case THURSDAY -> "Четверг"; + case FRIDAY -> "Пятница"; + case SATURDAY -> "Суббота"; + case SUNDAY -> "Воскресенье"; + }; + } + private String overrideKey(Long scheduleRuleSlotId, LocalDate date) { return scheduleRuleSlotId + ":" + date; } @@ -356,7 +436,9 @@ public class ScheduleQueryService { String.valueOf(lesson.timeSlotOrder()), String.valueOf(lesson.teacherId()), String.valueOf(lesson.subjectId()), - sortedSignature(lesson.subgroupIds()) + sortedSignature(lesson.subgroupIds()), + String.valueOf(lesson.scheduleOverrideId()), + String.valueOf(lesson.originalLessonDate()) ); } @@ -428,7 +510,10 @@ public class ScheduleQueryService { source.lessonTypeAcademicHours(), source.consumedLessonTypeAcademicHoursBeforeLesson(), source.remainingLessonTypeAcademicHoursAfterLesson(), - source.ruleParity() + source.ruleParity(), + source.scheduleOverrideId(), + source.overrideAction(), + source.originalLessonDate() ); } } diff --git a/backend/src/main/resources/db/migration/V1__init.sql b/backend/src/main/resources/db/migration/V1__init.sql index 175b09a..d040527 100755 --- a/backend/src/main/resources/db/migration/V1__init.sql +++ b/backend/src/main/resources/db/migration/V1__init.sql @@ -873,6 +873,7 @@ CREATE TABLE IF NOT EXISTS schedule_overrides ( id BIGSERIAL PRIMARY KEY, base_rule_slot_id BIGINT NOT NULL REFERENCES schedule_rule_slots(id), lesson_date DATE NOT NULL, + target_lesson_date DATE, action VARCHAR(20) NOT NULL, new_time_slot_id BIGINT REFERENCES time_slots(id), new_classroom_id BIGINT REFERENCES classrooms(id), @@ -888,6 +889,10 @@ CREATE TABLE IF NOT EXISTS schedule_overrides ( CREATE INDEX IF NOT EXISTS idx_schedule_overrides_date ON schedule_overrides(lesson_date); +CREATE INDEX IF NOT EXISTS idx_schedule_overrides_target_date + ON schedule_overrides(target_lesson_date) + WHERE target_lesson_date IS NOT NULL; + CREATE INDEX IF NOT EXISTS idx_schedule_overrides_new_teacher ON schedule_overrides(new_teacher_id); @@ -1121,6 +1126,8 @@ COMMENT ON TABLE teacher_department_assignments IS 'История принад COMMENT ON TABLE teacher_creation_requests IS 'Заявки кафедр на создание преподавателей'; COMMENT ON TABLE subject_comments IS 'Комментарии кафедр и администраторов к дисциплинам'; COMMENT ON TABLE schedule_overrides IS 'Точечные изменения конкретных сгенерированных пар'; +COMMENT ON COLUMN schedule_overrides.lesson_date IS 'Исходная дата занятия, сформированного базовым правилом'; +COMMENT ON COLUMN schedule_overrides.target_lesson_date IS 'Новая дата единственного занятия при действии MOVE'; COMMENT ON COLUMN schedule_rules.lecture_academic_hours IS 'Лимит академических часов лекций'; COMMENT ON COLUMN schedule_rules.laboratory_academic_hours IS 'Лимит академических часов лабораторных работ'; COMMENT ON COLUMN schedule_rules.practice_academic_hours IS 'Лимит академических часов практик'; @@ -1288,12 +1295,14 @@ DECLARE move_violations BIGINT; replace_violations BIGINT; format_violations BIGINT; + target_date_violations BIGINT; BEGIN SELECT count(*) INTO cancel_violations FROM schedule_overrides WHERE action = 'CANCEL' - AND (new_time_slot_id IS NOT NULL + AND (target_lesson_date IS NOT NULL + OR new_time_slot_id IS NOT NULL OR new_classroom_id IS NOT NULL OR new_teacher_id IS NOT NULL OR new_lesson_format IS NOT NULL); @@ -1302,16 +1311,16 @@ BEGIN INTO move_violations FROM schedule_overrides WHERE action = 'MOVE' - AND new_time_slot_id IS NULL - AND new_classroom_id IS NULL; + AND new_time_slot_id IS NULL; SELECT count(*) INTO replace_violations FROM schedule_overrides WHERE action = 'REPLACE' - AND new_teacher_id IS NULL - AND new_classroom_id IS NULL - AND new_lesson_format IS NULL; + AND (new_time_slot_id IS NOT NULL + OR (new_teacher_id IS NULL + AND new_classroom_id IS NULL + AND new_lesson_format IS NULL)); SELECT count(*) INTO format_violations @@ -1319,18 +1328,28 @@ BEGIN WHERE new_lesson_format IS NOT NULL AND new_lesson_format NOT IN ('Очно', 'Онлайн'); + SELECT count(*) + INTO target_date_violations + FROM schedule_overrides + WHERE target_lesson_date IS NOT NULL + AND (target_lesson_date = lesson_date + OR action <> 'MOVE' + OR new_time_slot_id IS NULL); + IF cancel_violations > 0 OR move_violations > 0 OR replace_violations > 0 - OR format_violations > 0 THEN + OR format_violations > 0 + OR target_date_violations > 0 THEN RAISE EXCEPTION USING ERRCODE = '23514', MESSAGE = format( - 'Невозможно создать baseline: невалидные точечные изменения CANCEL=%s, MOVE=%s, REPLACE=%s, формат=%s. Исправьте seed-данные V1 и повторите создание схемы.', + 'Невозможно создать baseline: невалидные точечные изменения CANCEL=%s, MOVE=%s, REPLACE=%s, формат=%s, целевая дата=%s. Исправьте seed-данные V1 и повторите создание схемы.', cancel_violations, move_violations, replace_violations, - format_violations + format_violations, + target_date_violations ); END IF; END $$; @@ -1340,7 +1359,8 @@ ALTER TABLE schedule_overrides CHECK ( action <> 'CANCEL' OR ( - new_time_slot_id IS NULL + target_lesson_date IS NULL + AND new_time_slot_id IS NULL AND new_classroom_id IS NULL AND new_teacher_id IS NULL AND new_lesson_format IS NULL @@ -1350,19 +1370,32 @@ ALTER TABLE schedule_overrides CHECK ( action <> 'MOVE' OR new_time_slot_id IS NOT NULL - OR new_classroom_id IS NOT NULL ) NOT VALID, ADD CONSTRAINT chk_schedule_overrides_replace_payload CHECK ( action <> 'REPLACE' - OR new_teacher_id IS NOT NULL - OR new_classroom_id IS NOT NULL - OR new_lesson_format IS NOT NULL + OR ( + new_time_slot_id IS NULL + AND ( + new_teacher_id IS NOT NULL + OR new_classroom_id IS NOT NULL + OR new_lesson_format IS NOT NULL + ) + ) ) NOT VALID, ADD CONSTRAINT chk_schedule_overrides_format CHECK ( new_lesson_format IS NULL OR new_lesson_format IN ('Очно', 'Онлайн') + ) NOT VALID, + ADD CONSTRAINT chk_schedule_overrides_target_date + CHECK ( + target_lesson_date IS NULL + OR ( + target_lesson_date <> lesson_date + AND action = 'MOVE' + AND new_time_slot_id IS NOT NULL + ) ) NOT VALID; ALTER TABLE schedule_overrides @@ -1377,6 +1410,9 @@ ALTER TABLE schedule_overrides ALTER TABLE schedule_overrides VALIDATE CONSTRAINT chk_schedule_overrides_format; +ALTER TABLE schedule_overrides + VALIDATE CONSTRAINT chk_schedule_overrides_target_date; + -- ========================================== -- Инварианты правил расписания -- ========================================== diff --git a/backend/src/test/java/com/magistr/app/controller/ScheduleControllerTest.java b/backend/src/test/java/com/magistr/app/controller/ScheduleControllerTest.java new file mode 100644 index 0000000..cba897e --- /dev/null +++ b/backend/src/test/java/com/magistr/app/controller/ScheduleControllerTest.java @@ -0,0 +1,55 @@ +package com.magistr.app.controller; + +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.Semester; +import com.magistr.app.model.SemesterType; +import com.magistr.app.repository.SemesterRepository; +import com.magistr.app.service.ScheduleQueryService; +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +class ScheduleControllerTest { + + @Test + void returnsSemestersForReadOnlyScheduleFilterInNewestFirstOrder() { + ScheduleQueryService scheduleQueryService = mock(ScheduleQueryService.class); + SemesterRepository semesterRepository = mock(SemesterRepository.class); + ScheduleController controller = new ScheduleController(scheduleQueryService, semesterRepository); + + Semester autumn = semester(1L, SemesterType.autumn, + LocalDate.of(2025, 9, 1), LocalDate.of(2026, 1, 31)); + Semester spring = semester(2L, SemesterType.spring, + LocalDate.of(2026, 2, 9), LocalDate.of(2026, 6, 30)); + when(semesterRepository.findAll()).thenReturn(List.of(autumn, spring)); + + var result = controller.getSemesters(); + + assertThat(result).extracting(item -> item.id()).containsExactly(2L, 1L); + assertThat(result.get(0).academicYearTitle()).isEqualTo("2025/2026"); + assertThat(result.get(0).semesterType()).isEqualTo(SemesterType.spring); + assertThat(result.get(0).startDate()).isEqualTo(LocalDate.of(2026, 2, 9)); + assertThat(result.get(0).endDate()).isEqualTo(LocalDate.of(2026, 6, 30)); + } + + private Semester semester(Long id, SemesterType type, LocalDate startDate, LocalDate endDate) { + AcademicYear academicYear = new AcademicYear(); + academicYear.setId(10L); + academicYear.setTitle("2025/2026"); + academicYear.setStartDate(LocalDate.of(2025, 9, 1)); + academicYear.setEndDate(LocalDate.of(2026, 8, 31)); + + Semester semester = new Semester(); + semester.setId(id); + semester.setAcademicYear(academicYear); + semester.setSemesterType(type); + semester.setStartDate(startDate); + semester.setEndDate(endDate); + return semester; + } +} diff --git a/backend/src/test/java/com/magistr/app/controller/ScheduleOverrideControllerTest.java b/backend/src/test/java/com/magistr/app/controller/ScheduleOverrideControllerTest.java index 13c169c..4e4be18 100644 --- a/backend/src/test/java/com/magistr/app/controller/ScheduleOverrideControllerTest.java +++ b/backend/src/test/java/com/magistr/app/controller/ScheduleOverrideControllerTest.java @@ -1,6 +1,7 @@ package com.magistr.app.controller; import com.magistr.app.dto.ScheduleOverrideDto; +import com.magistr.app.dto.ScheduleOverrideAvailabilityDto; import com.magistr.app.service.ScheduleConflictException; import com.magistr.app.service.ScheduleOverrideService; import org.junit.jupiter.api.BeforeEach; @@ -8,9 +9,14 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; +import java.time.LocalDate; +import java.util.List; + import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -18,6 +24,9 @@ import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standal class ScheduleOverrideControllerTest { + private static final LocalDate SOURCE_DATE = LocalDate.of(2026, 9, 1); + private static final LocalDate TARGET_DATE = LocalDate.of(2026, 9, 10); + private ScheduleOverrideService service; private MockMvc mockMvc; @@ -51,4 +60,43 @@ class ScheduleOverrideControllerTest { .andExpect(jsonPath("$.message") .value("Конфликт расписания: преподаватель уже занят в указанное время")); } + + @Test + void returnsRegistryBySourceOrTargetRangeWithTargetDate() throws Exception { + ScheduleOverrideDto override = new ScheduleOverrideDto( + 70L, 101L, SOURCE_DATE, TARGET_DATE, "MOVE", 2L, + null, null, null, "Перенос", 5L, null + ); + when(service.getAll(SOURCE_DATE, TARGET_DATE)).thenReturn(List.of(override)); + + mockMvc.perform(get("/api/edu-office/schedule/overrides") + .param("startDate", SOURCE_DATE.toString()) + .param("endDate", TARGET_DATE.toString())) + .andExpect(status().isOk()) + .andExpect(jsonPath("$[0].lessonDate[0]").value(2026)) + .andExpect(jsonPath("$[0].lessonDate[1]").value(9)) + .andExpect(jsonPath("$[0].lessonDate[2]").value(1)) + .andExpect(jsonPath("$[0].targetLessonDate[2]").value(10)); + + verify(service).getAll(SOURCE_DATE, TARGET_DATE); + } + + @Test + void returnsSemesterAvailabilityForSourceOccurrence() throws Exception { + when(service.getAvailability(101L, SOURCE_DATE)).thenReturn(new ScheduleOverrideAvailabilityDto( + 8L, + LocalDate.of(2026, 9, 1), + LocalDate.of(2027, 1, 31), + List.of(SOURCE_DATE, TARGET_DATE) + )); + + mockMvc.perform(get("/api/edu-office/schedule/overrides/availability") + .param("baseRuleSlotId", "101") + .param("lessonDate", SOURCE_DATE.toString())) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.semesterId").value(8)) + .andExpect(jsonPath("$.availableDates[1][0]").value(2026)) + .andExpect(jsonPath("$.availableDates[1][1]").value(9)) + .andExpect(jsonPath("$.availableDates[1][2]").value(10)); + } } diff --git a/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java index a6b305a..af3067e 100644 --- a/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/migration/ScheduleOverrideMigrationIntegrationTest.java @@ -44,14 +44,54 @@ class ScheduleOverrideMigrationIntegrationTest { SeedIds seedIds = loadSeedIds(connection); LocalDate validDate = LocalDate.of(2026, 3, 2); + assertThat(queryLong(connection, """ + SELECT count(*) + FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'schedule_overrides' + AND column_name = 'target_lesson_date' + """)) + .as("V1 должна создавать целевую дату переноса") + .isEqualTo(1L); + assertThat(queryLong(connection, """ + SELECT count(*) + FROM pg_indexes + WHERE schemaname = 'public' + AND tablename = 'schedule_overrides' + AND indexname = 'idx_schedule_overrides_target_date' + """)) + .as("V1 должна создавать индекс целевой даты") + .isEqualTo(1L); + insertOverride(connection, seedIds, validDate, "CANCEL", null, null, null); - insertOverride(connection, seedIds, validDate.plusDays(1), "MOVE", seedIds.classroomId(), null, null); + insertOverride( + connection, + seedIds, + validDate.plusDays(1), + null, + "MOVE", + seedIds.timeSlotId(), + seedIds.classroomId(), + null, + null + ); insertOverride(connection, seedIds, validDate.plusDays(2), "REPLACE", null, seedIds.teacherId(), null); insertOverride(connection, seedIds, validDate.plusDays(3), "REPLACE", null, null, "Онлайн"); + insertOverride( + connection, + seedIds, + validDate.plusDays(4), + validDate.plusDays(9), + "MOVE", + seedIds.timeSlotId(), + null, + null, + null + ); assertThat(queryLong(connection, "SELECT count(*) FROM schedule_overrides")) .as("Все допустимые варианты точечного изменения должны сохраниться") - .isEqualTo(4L); + .isEqualTo(5L); LocalDate invalidDate = LocalDate.of(2026, 4, 6); assertCheckViolation( @@ -94,6 +134,14 @@ class ScheduleOverrideMigrationIntegrationTest { "Смешанный", "chk_schedule_overrides_format" ); + assertTargetDateCheckViolation( + connection, + seedIds, + invalidDate.plusDays(4), + invalidDate.plusDays(4), + "MOVE", + seedIds.timeSlotId() + ); } } @@ -110,7 +158,8 @@ class ScheduleOverrideMigrationIntegrationTest { return new SeedIds( queryLong(connection, "SELECT id FROM schedule_rule_slots ORDER BY id LIMIT 1"), queryLong(connection, "SELECT id FROM classrooms ORDER BY id LIMIT 1"), - queryLong(connection, "SELECT id FROM users WHERE role = 'TEACHER' ORDER BY id LIMIT 1") + queryLong(connection, "SELECT id FROM users WHERE role = 'TEACHER' ORDER BY id LIMIT 1"), + queryLong(connection, "SELECT id FROM time_slots ORDER BY id LIMIT 1") ); } @@ -122,27 +171,79 @@ class ScheduleOverrideMigrationIntegrationTest { Long classroomId, Long teacherId, String lessonFormat + ) throws SQLException { + insertOverride( + connection, + seedIds, + lessonDate, + null, + action, + null, + classroomId, + teacherId, + lessonFormat + ); + } + + private void insertOverride( + Connection connection, + SeedIds seedIds, + LocalDate lessonDate, + LocalDate targetLessonDate, + String action, + Long timeSlotId, + Long classroomId, + Long teacherId, + String lessonFormat ) throws SQLException { try (PreparedStatement statement = connection.prepareStatement(""" INSERT INTO schedule_overrides ( base_rule_slot_id, lesson_date, + target_lesson_date, action, + new_time_slot_id, new_classroom_id, new_teacher_id, new_lesson_format - ) VALUES (?, ?, ?, ?, ?, ?) + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?) """)) { statement.setLong(1, seedIds.baseRuleSlotId()); statement.setDate(2, Date.valueOf(lessonDate)); - statement.setString(3, action); - setNullableLong(statement, 4, classroomId); - setNullableLong(statement, 5, teacherId); - statement.setString(6, lessonFormat); + statement.setObject(3, targetLessonDate == null ? null : Date.valueOf(targetLessonDate)); + statement.setString(4, action); + setNullableLong(statement, 5, timeSlotId); + setNullableLong(statement, 6, classroomId); + setNullableLong(statement, 7, teacherId); + statement.setString(8, lessonFormat); statement.executeUpdate(); } } + private void assertTargetDateCheckViolation(Connection connection, + SeedIds seedIds, + LocalDate lessonDate, + LocalDate targetLessonDate, + String action, + Long timeSlotId) { + Throwable failure = catchThrowable(() -> insertOverride( + connection, + seedIds, + lessonDate, + targetLessonDate, + action, + timeSlotId, + action.equals("MOVE") && timeSlotId == null ? seedIds.classroomId() : null, + action.equals("REPLACE") ? seedIds.teacherId() : null, + null + )); + + assertThat(failure).isInstanceOf(SQLException.class); + SQLException sqlFailure = (SQLException) failure; + assertThat(sqlFailure.getSQLState()).isEqualTo("23514"); + assertThat(sqlFailure.getMessage()).contains("chk_schedule_overrides_target_date"); + } + private void assertCheckViolation( Connection connection, SeedIds seedIds, @@ -197,6 +298,6 @@ class ScheduleOverrideMigrationIntegrationTest { } } - private record SeedIds(long baseRuleSlotId, long classroomId, long teacherId) { + private record SeedIds(long baseRuleSlotId, long classroomId, long teacherId, long timeSlotId) { } } diff --git a/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java b/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java index 6040310..3ad6711 100644 --- a/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java +++ b/backend/src/test/java/com/magistr/app/service/PostgreSqlAdvisoryLockIntegrationTest.java @@ -102,6 +102,70 @@ class PostgreSqlAdvisoryLockIntegrationTest { second.get(5, TimeUnit.SECONDS); } + @Test + void serializesConcurrentMovesToSameResourcesAndTargetDate() throws Exception { + jdbcTemplate.execute(""" + CREATE TABLE IF NOT EXISTS schedule_move_concurrency_probe ( + source_date DATE NOT NULL, + target_date DATE NOT NULL, + teacher_id BIGINT NOT NULL, + classroom_id BIGINT NOT NULL + ) + """); + jdbcTemplate.update("DELETE FROM schedule_move_concurrency_probe"); + + executor = Executors.newFixedThreadPool(2); + CountDownLatch ready = new CountDownLatch(2); + CountDownLatch start = new CountDownLatch(1); + Future first = executor.submit(() -> tryMove( + TEST_DATE.minusDays(7), TEST_DATE, 11L, 21L, ready, start + )); + Future second = executor.submit(() -> tryMove( + TEST_DATE.minusDays(14), TEST_DATE, 11L, 21L, ready, start + )); + + assertThat(ready.await(5, TimeUnit.SECONDS)).isTrue(); + start.countDown(); + + assertThat(java.util.List.of( + first.get(5, TimeUnit.SECONDS), + second.get(5, TimeUnit.SECONDS) + )).containsExactlyInAnyOrder(true, false); + assertThat(jdbcTemplate.queryForObject( + "SELECT count(*) FROM schedule_move_concurrency_probe", + Long.class + )).isEqualTo(1L); + } + + private boolean tryMove(LocalDate sourceDate, + LocalDate targetDate, + long teacherId, + long classroomId, + CountDownLatch ready, + CountDownLatch start) { + ready.countDown(); + await(start, "Конкурентные переносы не получили общий сигнал запуска"); + Boolean saved = transactionTemplate.execute(status -> { + advisoryLock.lockScheduleOverrideDate(targetDate); + Long conflicts = jdbcTemplate.queryForObject(""" + SELECT count(*) + FROM schedule_move_concurrency_probe + WHERE target_date = ? + AND (teacher_id = ? OR classroom_id = ?) + """, Long.class, targetDate, teacherId, classroomId); + if (conflicts != null && conflicts > 0) { + return false; + } + jdbcTemplate.update(""" + INSERT INTO schedule_move_concurrency_probe ( + source_date, target_date, teacher_id, classroom_id + ) VALUES (?, ?, ?, ?) + """, sourceDate, targetDate, teacherId, classroomId); + return true; + }); + return Boolean.TRUE.equals(saved); + } + private void awaitAdvisoryLockWait(int backendPid) { long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(5); do { diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleOverrideServiceTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleOverrideServiceTest.java index cdd8440..ca67b86 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleOverrideServiceTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleOverrideServiceTest.java @@ -1,12 +1,17 @@ package com.magistr.app.service; import com.magistr.app.dto.RenderedLessonDto; +import com.magistr.app.dto.ScheduleOverrideAvailabilityDto; import com.magistr.app.dto.ScheduleOverrideDto; import com.magistr.app.model.Classroom; import com.magistr.app.model.Role; import com.magistr.app.model.ScheduleOverride; import com.magistr.app.model.ScheduleParity; +import com.magistr.app.model.ScheduleRule; import com.magistr.app.model.ScheduleRuleSlot; +import com.magistr.app.model.Semester; +import com.magistr.app.model.StudentGroup; +import com.magistr.app.model.Subject; import com.magistr.app.model.TimeSlot; import com.magistr.app.model.User; import com.magistr.app.repository.ClassroomRepository; @@ -30,6 +35,7 @@ import java.time.LocalTime; import java.util.Collection; import java.util.List; import java.util.Optional; +import java.util.Set; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -45,6 +51,7 @@ import static org.mockito.Mockito.when; class ScheduleOverrideServiceTest { private static final LocalDate DATE = LocalDate.of(2026, 9, 1); + private static final LocalDate TARGET_DATE = LocalDate.of(2026, 9, 10); private static final Long BASE_SLOT_ID = 101L; private static final Long OTHER_SLOT_ID = 202L; private static final Long SOURCE_TIME_SLOT_ID = 1L; @@ -76,6 +83,10 @@ class ScheduleOverrideServiceTest { private ScheduleGeneratorService scheduleGeneratorService; @Mock private PostgreSqlAdvisoryLock advisoryLock; + @Mock + private AcademicDateService academicDateService; + @Mock + private EffectiveTimeSlotService effectiveTimeSlotService; private ScheduleOverrideService service; private ScheduleRuleSlot baseSlot; @@ -96,6 +107,10 @@ class ScheduleOverrideServiceTest { newClassroom = classroom(NEW_CLASSROOM_ID, "Б-202"); sourceTeacher = teacher(SOURCE_TEACHER_ID, "Исходный преподаватель"); newTeacher = teacher(NEW_TEACHER_ID, "Новый преподаватель"); + baseSlot.setTimeSlot(sourceTimeSlot); + baseSlot.setTeacher(sourceTeacher); + baseSlot.setClassroom(sourceClassroom); + baseSlot.setLessonFormat("Очно"); sourceLesson = lesson( BASE_SLOT_ID, SOURCE_TIME_SLOT_ID, @@ -117,7 +132,9 @@ class ScheduleOverrideServiceTest { subgroupRepository, scheduleQueryService, scheduleGeneratorService, - advisoryLock + advisoryLock, + academicDateService, + effectiveTimeSlotService ); when(scheduleRuleSlotRepository.findById(BASE_SLOT_ID)).thenReturn(Optional.of(baseSlot)); @@ -133,6 +150,7 @@ class ScheduleOverrideServiceTest { when(scheduleOverrideRepository.saveAndFlush(any(ScheduleOverride.class))) .thenAnswer(invocation -> invocation.getArgument(0)); when(scheduleQueryService.buildBaseDayForAllGroups(DATE)).thenReturn(List.of(sourceLesson)); + when(effectiveTimeSlotService.isEffectiveOnDate(any(Long.class), any(LocalDate.class))).thenReturn(true); when(subgroupRepository.findGroupReferencesByIdIn(anyList())).thenAnswer(invocation -> { List subgroupIds = invocation.getArgument(0); return subgroupIds.stream() @@ -148,6 +166,47 @@ class ScheduleOverrideServiceTest { .hasMessage("Передайте данные изменения расписания"); } + @Test + void registryRangeReturnsOverrideWhoseTargetDateIsInsidePeriod() { + ScheduleOverride moved = override(720L, baseSlot, "MOVE", newTimeSlot); + moved.setTargetLessonDate(TARGET_DATE); + when(scheduleOverrideRepository.findForRegistry(TARGET_DATE, TARGET_DATE)).thenReturn(List.of(moved)); + + List result = service.getAll(TARGET_DATE, TARGET_DATE); + + assertThat(result).singleElement().satisfies(item -> { + assertThat(item.lessonDate()).isEqualTo(DATE); + assertThat(item.targetLessonDate()).isEqualTo(TARGET_DATE); + }); + verify(scheduleOverrideRepository).findForRegistry(TARGET_DATE, TARGET_DATE); + } + + @Test + void availabilityContainsOnlyStudyDatesOfSourceSemester() { + Semester semester = configureRuleForTarget(); + StudentGroup group = baseSlot.getScheduleRule().getGroups().iterator().next(); + AcademicDateService.ScheduleSnapshot snapshot = org.mockito.Mockito.mock( + AcademicDateService.ScheduleSnapshot.class + ); + when(academicDateService.createScheduleSnapshot( + any(Collection.class), + any(Collection.class), + eq(semester.getEndDate()) + )).thenReturn(snapshot); + when(snapshot.isTheoryDay(eq(group), eq(semester), any(LocalDate.class))) + .thenAnswer(invocation -> { + LocalDate date = invocation.getArgument(2); + return date.equals(DATE) || date.equals(TARGET_DATE); + }); + + ScheduleOverrideAvailabilityDto result = service.getAvailability(BASE_SLOT_ID, DATE); + + assertThat(result.semesterId()).isEqualTo(semester.getId()); + assertThat(result.semesterStartDate()).isEqualTo(semester.getStartDate()); + assertThat(result.semesterEndDate()).isEqualTo(semester.getEndDate()); + assertThat(result.availableDates()).containsExactly(DATE, TARGET_DATE); + } + @Test void rejectsMissingRequiredRequestReferences() { assertThatThrownBy(() -> service.create(request(null, DATE, "CANCEL", null, null, null, null))) @@ -203,7 +262,7 @@ class ScheduleOverrideServiceTest { BASE_SLOT_ID, DATE, "MOVE", null, null, NEW_TEACHER_ID, null ))) .isInstanceOf(IllegalArgumentException.class) - .hasMessage("Для переноса укажите новое время или аудиторию"); + .hasMessage("Для переноса укажите новое время"); assertThatThrownBy(() -> service.create(request( BASE_SLOT_ID, DATE, "REPLACE", null, null, null, null @@ -289,10 +348,10 @@ class ScheduleOverrideServiceTest { stubEffectiveDay(sourceLesson); assertThatThrownBy(() -> service.create(request( - BASE_SLOT_ID, DATE, "MOVE", null, SOURCE_CLASSROOM_ID, null, null + BASE_SLOT_ID, DATE, "MOVE", SOURCE_TIME_SLOT_ID, SOURCE_CLASSROOM_ID, null, null ))) .isInstanceOf(IllegalArgumentException.class) - .hasMessage("Перенос должен фактически менять время пары или аудиторию"); + .hasMessage("Перенос должен фактически менять дату, время пары или аудиторию"); } @Test @@ -315,7 +374,7 @@ class ScheduleOverrideServiceTest { BASE_SLOT_ID, DATE, "MOVE", 3L, null, null, null ))) .isInstanceOf(IllegalArgumentException.class) - .hasMessage("Перенос должен фактически менять время пары или аудиторию"); + .hasMessage("Перенос должен фактически менять дату, время пары или аудиторию"); } @Test @@ -440,7 +499,6 @@ class ScheduleOverrideServiceTest { @Test void updateExcludesItselfAndDoesNotMutateStoredEntityOnConflict() { ScheduleOverride stored = override(500L, baseSlot, "CANCEL", null); - when(scheduleOverrideRepository.findLessonDateById(500L)).thenReturn(Optional.of(DATE)); when(scheduleOverrideRepository.findByIdForUpdate(500L)).thenReturn(Optional.of(stored)); when(scheduleOverrideRepository.findByBaseRuleSlotIdAndLessonDateForUpdate(BASE_SLOT_ID, DATE)) .thenReturn(Optional.of(stored)); @@ -470,7 +528,6 @@ class ScheduleOverrideServiceTest { @Test void idempotentUpdateExcludesStoredOverrideFromConflictCheck() { ScheduleOverride stored = override(501L, baseSlot, "MOVE", newTimeSlot); - when(scheduleOverrideRepository.findLessonDateById(501L)).thenReturn(Optional.of(DATE)); when(scheduleOverrideRepository.findByIdForUpdate(501L)).thenReturn(Optional.of(stored)); when(scheduleOverrideRepository.findByBaseRuleSlotIdAndLessonDateForUpdate(BASE_SLOT_ID, DATE)) .thenReturn(Optional.of(stored)); @@ -489,6 +546,262 @@ class ScheduleOverrideServiceTest { verify(scheduleOverrideRepository).saveAndFlush(stored); } + @Test + void acceptsCombinedMoveToStudyDateInSameSemester() { + Semester semester = configureRuleForTarget(); + when(academicDateService.isTheoryDay(any(StudentGroup.class), eq(semester), eq(TARGET_DATE))) + .thenReturn(true); + when(scheduleOverrideRepository.findAffectingDatesWithDetails(any(Collection.class))).thenReturn(List.of()); + when(scheduleQueryService.buildEffectiveDaysForAllGroups(any(Collection.class), any(Collection.class))) + .thenReturn(List.of(relocatedLesson( + BASE_SLOT_ID, + NEW_TIME_SLOT_ID, + NEW_TEACHER_ID, + NEW_CLASSROOM_ID, + "Онлайн" + ))); + + ScheduleOverrideDto saved = service.create(targetRequest( + TARGET_DATE, + "MOVE", + NEW_TIME_SLOT_ID, + NEW_CLASSROOM_ID, + NEW_TEACHER_ID, + "Онлайн" + )); + + assertThat(saved.targetLessonDate()).isEqualTo(TARGET_DATE); + assertThat(saved.action()).isEqualTo("MOVE"); + assertThat(saved.newTimeSlotId()).isEqualTo(NEW_TIME_SLOT_ID); + assertThat(saved.newTeacherId()).isEqualTo(NEW_TEACHER_ID); + assertThat(saved.newClassroomId()).isEqualTo(NEW_CLASSROOM_ID); + assertThat(saved.newLessonFormat()).isEqualTo("Онлайн"); + verify(advisoryLock).lockScheduleOverrideDate(DATE); + verify(advisoryLock).lockScheduleOverrideDate(TARGET_DATE); + } + + @Test + void rejectsTargetDateOutsideSourceSemester() { + configureRuleForTarget(); + LocalDate outsideSemester = LocalDate.of(2027, 2, 1); + + assertThatThrownBy(() -> service.create(targetRequest( + outsideSemester, + "MOVE", + NEW_TIME_SLOT_ID, + null, + null, + null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Перенести занятие можно только в пределах того же семестра"); + } + + @Test + void rejectsTargetDateThatIsNotStudyDayForEveryGroup() { + Semester semester = configureRuleForTarget(); + when(academicDateService.isTheoryDay(any(StudentGroup.class), eq(semester), eq(TARGET_DATE))) + .thenReturn(false); + + assertThatThrownBy(() -> service.create(targetRequest( + TARGET_DATE, + "MOVE", + NEW_TIME_SLOT_ID, + null, + null, + null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Целевая дата должна быть учебной для всех групп исходного занятия"); + } + + @Test + void rejectsTimeSlotThatIsNotEffectiveOnTargetDate() { + configureRuleForTarget(); + when(effectiveTimeSlotService.isEffectiveOnDate(NEW_TIME_SLOT_ID, TARGET_DATE)).thenReturn(false); + + assertThatThrownBy(() -> service.create(targetRequest( + TARGET_DATE, + "MOVE", + NEW_TIME_SLOT_ID, + null, + null, + null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Выбранный временной слот не действует на целевую дату"); + } + + @Test + void rejectsResourceThatIsInactiveOnTargetDate() { + configureRuleForTarget(); + sourceTeacher.setActiveTo(DATE); + + assertThatThrownBy(() -> service.create(targetRequest( + TARGET_DATE, + "MOVE", + NEW_TIME_SLOT_ID, + null, + null, + null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Активный преподаватель с ролью TEACHER не найден"); + } + + @Test + void rejectsResourceConflictInEffectiveTargetDay() { + Semester semester = configureRuleForTarget(); + when(academicDateService.isTheoryDay(any(StudentGroup.class), eq(semester), eq(TARGET_DATE))) + .thenReturn(true); + when(scheduleOverrideRepository.findAffectingDatesWithDetails(any(Collection.class))).thenReturn(List.of()); + when(scheduleQueryService.buildEffectiveDaysForAllGroups(any(Collection.class), any(Collection.class))) + .thenReturn(List.of( + relocatedLesson( + BASE_SLOT_ID, + NEW_TIME_SLOT_ID, + SOURCE_TEACHER_ID, + SOURCE_CLASSROOM_ID, + "Очно" + ), + relocatedLesson( + OTHER_SLOT_ID, + NEW_TIME_SLOT_ID, + SOURCE_TEACHER_ID, + NEW_CLASSROOM_ID, + "Очно" + ) + )); + + assertThatThrownBy(() -> service.create(targetRequest( + TARGET_DATE, + "MOVE", + NEW_TIME_SLOT_ID, + null, + null, + null + ))) + .isInstanceOf(ScheduleConflictException.class) + .hasMessage("Конфликт расписания: преподаватель уже занят в указанное время"); + } + + @Test + void rejectsTargetDateWithReplaceAction() { + assertThatThrownBy(() -> service.create(targetRequest( + TARGET_DATE, + "REPLACE", + NEW_TIME_SLOT_ID, + NEW_CLASSROOM_ID, + null, + null + ))) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Перенос даты должен использовать действие MOVE"); + } + + @Test + void deleteMovedOverrideLocksBothDatesAndReturnsRuleAfterCacheRefresh() { + ScheduleOverride stored = override(710L, baseSlot, "MOVE", newTimeSlot); + stored.setTargetLessonDate(TARGET_DATE); + when(scheduleOverrideRepository.findByIdForUpdate(710L)).thenReturn(Optional.of(stored)); + + service.delete(710L); + + verify(advisoryLock).lockScheduleOverrideDate(DATE); + verify(advisoryLock).lockScheduleOverrideDate(TARGET_DATE); + verify(scheduleOverrideRepository).delete(stored); + verify(scheduleOverrideRepository).flush(); + verify(scheduleGeneratorService).clearCache(); + } + + private Semester configureRuleForTarget() { + Semester semester = new Semester(); + semester.setId(81L); + semester.setStartDate(LocalDate.of(2026, 9, 1)); + semester.setEndDate(LocalDate.of(2027, 1, 31)); + + Subject subject = new Subject(); + subject.setId(501L); + subject.setName("Тестовая дисциплина"); + + StudentGroup group = new StudentGroup(); + group.setId(GROUP_ID); + group.setName("Группа 31"); + + ScheduleRule rule = new ScheduleRule(); + rule.setId(900L); + rule.setSemester(semester); + rule.setSubject(subject); + rule.setGroups(Set.of(group)); + baseSlot.setScheduleRule(rule); + return semester; + } + + private ScheduleOverrideDto targetRequest(LocalDate targetDate, + String action, + Long newTimeSlotId, + Long newClassroomId, + Long newTeacherId, + String format) { + return new ScheduleOverrideDto( + null, + BASE_SLOT_ID, + DATE, + targetDate, + action, + newTimeSlotId, + newClassroomId, + newTeacherId, + format, + "Перенос конкретного занятия", + null, + null + ); + } + + private RenderedLessonDto relocatedLesson(Long ruleSlotId, + Long timeSlotId, + Long teacherId, + Long classroomId, + String format) { + return new RenderedLessonDto( + 900L, + ruleSlotId, + TARGET_DATE, + 4, + "Четверг", + 2, + ScheduleParity.EVEN, + timeSlotId, + 2, + LocalTime.of(10, 40), + LocalTime.of(12, 10), + 501L, + "Тестовая дисциплина", + teacherId, + "Тестовый преподаватель", + classroomId, + "Тестовая аудитория", + 601L, + "Лекция", + format, + null, + null, + List.of(), + List.of(), + List.of(GROUP_ID), + List.of("Группа 31"), + "Лекция", + 2, + 0, + 0, + ScheduleParity.BOTH, + null, + "MOVE", + DATE + ); + } + private void stubEffectiveDay(RenderedLessonDto... lessons) { when(scheduleQueryService.buildEffectiveDayForAllGroups( eq(List.of(sourceLesson)), diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceOverrideTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceOverrideTest.java index b414e49..6e99f6f 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceOverrideTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceOverrideTest.java @@ -5,23 +5,32 @@ import com.magistr.app.model.Classroom; import com.magistr.app.model.Role; import com.magistr.app.model.ScheduleOverride; import com.magistr.app.model.ScheduleParity; +import com.magistr.app.model.ScheduleRule; import com.magistr.app.model.ScheduleRuleSlot; +import com.magistr.app.model.Semester; +import com.magistr.app.model.StudentGroup; import com.magistr.app.model.TimeSlot; import com.magistr.app.model.User; import com.magistr.app.repository.GroupRepository; import com.magistr.app.repository.ScheduleOverrideRepository; import org.junit.jupiter.api.Test; +import org.springframework.test.util.ReflectionTestUtils; import java.time.LocalDate; import java.time.LocalTime; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; class ScheduleQueryServiceOverrideTest { private static final LocalDate DATE = LocalDate.of(2026, 9, 1); + private static final LocalDate TARGET_DATE = LocalDate.of(2026, 9, 10); @Test void appliesAllReplacementFieldsToProvidedDaySnapshot() { @@ -95,6 +104,74 @@ class ScheduleQueryServiceOverrideTest { assertThat(result).singleElement().extracting(RenderedLessonDto::scheduleRuleSlotId).isEqualTo(101L); } + @Test + void movesOccurrenceToTargetDateAndRecalculatesCalendarFields() { + AcademicDateService academicDateService = mock(AcademicDateService.class); + ScheduleQueryService service = service(academicDateService); + ScheduleOverride override = relocationOverride(); + when(academicDateService.getWeekNumber(any(Semester.class), eq(TARGET_DATE))).thenReturn(2); + when(academicDateService.getParity(any(Semester.class), eq(TARGET_DATE))).thenReturn(ScheduleParity.EVEN); + + List result = service.buildEffectiveDayForAllGroups( + List.of(lesson()), + DATE, + List.of(override) + ); + + assertThat(result).singleElement().satisfies(moved -> { + assertThat(moved.date()).isEqualTo(TARGET_DATE); + assertThat(moved.dayOfWeek()).isEqualTo(4); + assertThat(moved.dayName()).isEqualTo("Четверг"); + assertThat(moved.weekNumber()).isEqualTo(2); + assertThat(moved.parity()).isEqualTo(ScheduleParity.EVEN); + assertThat(moved.timeSlotId()).isEqualTo(2L); + assertThat(moved.scheduleOverrideId()).isEqualTo(700L); + assertThat(moved.overrideAction()).isEqualTo("MOVE"); + assertThat(moved.originalLessonDate()).isEqualTo(DATE); + assertThat(moved.lessonTypeAcademicHours()).isEqualTo(2); + }); + } + + @Test + void searchIncludesIncomingMoveWhenOnlyTargetDateIsRequested() { + ScheduleGeneratorService generator = mock(ScheduleGeneratorService.class); + GroupRepository groupRepository = mock(GroupRepository.class); + ScheduleOverrideRepository overrideRepository = mock(ScheduleOverrideRepository.class); + StudentGroupLifecycleService lifecycleService = mock(StudentGroupLifecycleService.class); + AcademicDateService academicDateService = mock(AcademicDateService.class); + ScheduleQueryService service = new ScheduleQueryService( + generator, + groupRepository, + overrideRepository, + lifecycleService, + academicDateService + ); + StudentGroup group = new StudentGroup(); + group.setId(31L); + group.setName("Группа 31"); + ScheduleOverride override = relocationOverride(); + + when(groupRepository.findAll()).thenReturn(List.of(group)); + when(lifecycleService.mayHaveScheduleInRange(eq(group), any(LocalDate.class), any(LocalDate.class))) + .thenReturn(true); + when(generator.buildScheduleForGroups(anyList(), eq(TARGET_DATE), eq(TARGET_DATE))).thenReturn(List.of()); + when(generator.buildScheduleForGroups(anyList(), eq(DATE), eq(DATE))).thenReturn(List.of(lesson())); + when(overrideRepository.findByLessonDateBetweenWithDetails(TARGET_DATE, TARGET_DATE)) + .thenReturn(List.of(override)); + when(academicDateService.getWeekNumber(any(Semester.class), eq(TARGET_DATE))).thenReturn(2); + when(academicDateService.getParity(any(Semester.class), eq(TARGET_DATE))).thenReturn(ScheduleParity.EVEN); + + List result = service.search( + null, null, null, null, null, null, null, null, TARGET_DATE, TARGET_DATE + ); + + assertThat(result).singleElement().satisfies(moved -> { + assertThat(moved.date()).isEqualTo(TARGET_DATE); + assertThat(moved.originalLessonDate()).isEqualTo(DATE); + assertThat(moved.scheduleRuleSlotId()).isEqualTo(101L); + }); + } + private ScheduleQueryService service() { return new ScheduleQueryService( mock(ScheduleGeneratorService.class), @@ -104,6 +181,37 @@ class ScheduleQueryServiceOverrideTest { ); } + private ScheduleQueryService service(AcademicDateService academicDateService) { + return new ScheduleQueryService( + mock(ScheduleGeneratorService.class), + mock(GroupRepository.class), + mock(ScheduleOverrideRepository.class), + mock(StudentGroupLifecycleService.class), + academicDateService + ); + } + + private ScheduleOverride relocationOverride() { + ScheduleOverride override = override("MOVE"); + ReflectionTestUtils.setField(override, "id", 700L); + override.setTargetLessonDate(TARGET_DATE); + TimeSlot targetTime = new TimeSlot(); + targetTime.setId(2L); + targetTime.setOrderNumber(2); + targetTime.setStartTime(LocalTime.of(10, 40)); + targetTime.setEndTime(LocalTime.of(12, 10)); + override.setNewTimeSlot(targetTime); + + Semester semester = new Semester(); + semester.setId(80L); + semester.setStartDate(LocalDate.of(2026, 9, 1)); + semester.setEndDate(LocalDate.of(2027, 1, 31)); + ScheduleRule rule = new ScheduleRule(); + rule.setSemester(semester); + override.getBaseRuleSlot().setScheduleRule(rule); + return override; + } + private ScheduleOverride override(String action) { ScheduleRuleSlot baseSlot = new ScheduleRuleSlot(); baseSlot.setId(101L); diff --git a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java index 6eff294..e608e42 100644 --- a/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java +++ b/backend/src/test/java/com/magistr/app/service/ScheduleQueryServiceTeacherOverrideTest.java @@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -115,7 +116,7 @@ class ScheduleQueryServiceTeacherOverrideTest { } @Test - @DisplayName("Совпавшая базовая и достроенная пара остаётся в результате один раз") + @DisplayName("Уже загруженная базовая пара не достраивается повторно") void duplicateSourceOccurrenceIsRemovedAfterApplyingSnapshot() { RenderedLessonDto existingLesson = lesson(101L, REPLACEMENT_TEACHER_ID, 1); when(generatorService.buildScheduleForTeacher(REPLACEMENT_TEACHER_ID, DATE, DATE)) @@ -129,8 +130,8 @@ class ScheduleQueryServiceTeacherOverrideTest { assertThat(result).singleElement().satisfies(lesson -> assertThat(lesson.scheduleRuleSlotId()).isEqualTo(101L)); verify(overrideRepository).findByLessonDateBetweenWithDetails(DATE, DATE); - verify(groupRepository).findAll(); - verifyBaseDayBatch(); + verify(groupRepository, never()).findAll(); + verify(generatorService, never()).buildScheduleForGroups(any(), eq(DATE), eq(DATE)); } @Test diff --git a/docs/API.md b/docs/API.md index edbb1f1..66ff3b3 100644 --- a/docs/API.md +++ b/docs/API.md @@ -416,6 +416,25 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 ] ``` +### `GET /api/schedule/semesters` + +Доступный только для чтения список семестров для фильтров просмотра расписания. Доступен всем ролям, +которые могут просматривать расписание, включая `DEPARTMENT` и `SCHEDULE_VIEWER`. +Семестры возвращаются от новых к старым. + +```json +[ + { + "id": 2, + "academicYearId": 1, + "academicYearTitle": "2025/2026", + "semesterType": "spring", + "startDate": "2026-02-09", + "endDate": "2026-06-30" + } +] +``` + ### `GET /api/admin/time-slots` Список временных слотов занятий. Слот принадлежит конкретной сетке времени: базовой, автоматической субботней или ручной. @@ -737,45 +756,82 @@ GET /api/schedule/search?classroomId=1&startDate=2026-05-20&endDate=2026-05-27 ``` Ответ совпадает со структурой `RenderedLessonDto` из `GET /api/schedule`. +Для занятия, к которому применено разовое изменение, дополнительно заполнены: + +- `scheduleOverrideId` — идентификатор изменения; +- `overrideAction` — `MOVE` или `REPLACE` (`CANCEL` в выдачу не попадает); +- `originalLessonDate` — исходная дата занятия из базового правила. + +Перенос удаляет занятие из исходного дня и добавляет его в целевой. Поиск учитывает +изменение, если в запрошенный диапазон попала исходная **или** целевая дата, поэтому +входящий перенос находится даже запросом только по целевому диапазону. Для целевой даты +пересчитываются день недели, номер недели и чётность; учёт академических часов остаётся +привязан к исходному занятию. ### Точечные изменения расписания учебного отдела | Метод | URL | Назначение | |-------|-----|------------| -| `GET` | `/api/edu-office/schedule/overrides` | Список точечных изменений | +| `GET` | `/api/edu-office/schedule/overrides?startDate=&endDate=` | Список изменений; диапазон проверяется по исходной или целевой дате | +| `GET` | `/api/edu-office/schedule/overrides/availability?baseRuleSlotId=&lessonDate=` | Границы семестра и допустимые учебные даты для конкретного занятия | | `POST` | `/api/edu-office/schedule/overrides` | Создать перенос, отмену или замену | | `PUT` | `/api/edu-office/schedule/overrides/{id}` | Обновить изменение | -| `DELETE` | `/api/edu-office/schedule/overrides/{id}` | Удалить изменение | +| `DELETE` | `/api/edu-office/schedule/overrides/{id}` | Удалить изменение и вернуть актуальный вариант из правила | + +`startDate` и `endDate` у списка передаются только парой, включительно; максимальный +диапазон — 120 дней. Ответ реестра содержит исходные дату, время, преподавателя, +аудиторию, формат, дисциплину, тип занятия, группы и границы семестра, поэтому отменённую +или перенесённую пару можно открыть без присутствия в текущей выдаче расписания. ```json { "baseRuleSlotId": 31, "lessonDate": "2026-05-21", - "action": "REPLACE", + "targetLessonDate": "2026-05-27", + "action": "MOVE", + "newTimeSlotId": 4, "newClassroomId": 2, "newTeacherId": 5, - "comment": "Замена аудитории и преподавателя" + "newLessonFormat": "Онлайн", + "comment": "Перенос конкретного занятия" } ``` +`lessonDate` всегда обозначает исходное занятие из правила. `targetLessonDate` передаётся +только при переносе на другой день и не заменяет идентификатор исходной пары +`baseRuleSlotId + lessonDate`. + Правила payload: -- `CANCEL` отменяет конкретную пару; поля `newTimeSlotId`, `newClassroomId`, - `newTeacherId` и `newLessonFormat` должны отсутствовать; -- `MOVE` требует новый временной слот или аудиторию; преподавателя и формат можно изменить - в том же запросе; -- `REPLACE` требует нового преподавателя, аудиторию или формат; временной слот можно - изменить в том же запросе; +- `CANCEL` отменяет конкретную пару; `targetLessonDate` и все поля `new*` должны отсутствовать; +- `MOVE` требует новый временной слот; при переносе даты слот выбирается из эффективной + сетки целевого дня, а преподавателя, аудиторию и формат можно изменить тем же запросом; +- `REPLACE` используется только без изменения даты и времени и требует нового + преподавателя, аудиторию или формат; - формат принимает только `Очно` или `Онлайн`; - `MOVE` и `REPLACE` должны фактически менять основные параметры действия. Другой ID временного слота с тем же интервалом не считается переносом. До сохранения backend строит базовую пару на `lessonDate` по тем же правилам, что и обычное расписание: семестр, календарный график, чётность, активность сущностей и остаток часов. -Если пара не формируется или нарушена матрица действия, API возвращает `400` с русским -сообщением. Если результирующее время пересекается с занятым преподавателем, аудиторией, -группой или той же подгруппой, API возвращает `409 Conflict`; соседние интервалы и разные -подгруппы одной группы не конфликтуют. +При переносе даты backend дополнительно проверяет тот же семестр, действие правила и +дисциплины, lifecycle итоговых ресурсов, учебный календарь всех затронутых групп и +принадлежность времени эффективной сетке целевого дня. Если пара не формируется или +нарушена матрица действия, API возвращает `400` с русским сообщением. Если результирующее +время пересекается с занятым преподавателем, аудиторией, группой или той же подгруппой, +API возвращает `409 Conflict`; соседние интервалы и разные подгруппы одной группы не +конфликтуют. + +Пример ответа availability: + +```json +{ + "semesterId": 3, + "semesterStartDate": "2026-02-09", + "semesterEndDate": "2026-06-30", + "availableDates": ["2026-05-21", "2026-05-22", "2026-05-25"] +} +``` ## Загруженность diff --git a/docs/BUSINESS_LOGIC.md b/docs/BUSINESS_LOGIC.md index c9d9232..57765b5 100644 --- a/docs/BUSINESS_LOGIC.md +++ b/docs/BUSINESS_LOGIC.md @@ -263,30 +263,44 @@ Bearer-токен проверяется на backend. Frontend-скрытие Учебный отдел может создать изменение конкретной пары: - `CANCEL` — отменить пару; -- `MOVE` — перенести пару на другой фактический интервал или в другую аудиторию; -- `REPLACE` — заменить преподавателя, аудиторию или формат. +- `MOVE` — перенести пару на другую учебную дату того же семестра или другой фактический интервал; +- `REPLACE` — без изменения даты и времени заменить преподавателя, аудиторию или формат. -`CANCEL` не принимает новые ресурсы. Для `MOVE` обязателен новый временной слот или -аудитория, для `REPLACE` — преподаватель, аудитория или формат. Дополнительные изменения -можно объединять в одном payload, но основное действие должно фактически менять свою -часть пары. Формат ограничен значениями `Очно` и `Онлайн`. +`CANCEL` не принимает целевую дату и новые ресурсы. Для `MOVE` обязателен новый временной +слот, для `REPLACE` — преподаватель, аудитория или формат. Перенос даты требует явно +выбранного слота эффективной сетки целевого дня. Дополнительные изменения преподавателя, +аудитории и формата можно объединить с `MOVE`, но основное действие должно фактически +менять свою часть пары. Формат ограничен значениями `Очно` и `Онлайн`; дисциплина и тип +занятия не изменяются. Изменения не переписывают базовое правило, а накладываются поверх сгенерированного -расписания на конкретную дату. Перед записью `ScheduleOverrideService`: +расписания. Исходная пара всегда идентифицируется как `baseRuleSlotId + lessonDate`, а +`targetLessonDate` хранит только новую дату единственного занятия. Перед записью +`ScheduleOverrideService`: -1. захватывает transaction advisory lock PostgreSQL для tenant-БД и даты; +1. захватывает transaction advisory lock PostgreSQL для исходных и целевых дат в стабильном порядке; 2. строит базовый день для всех групп без интерактивного лимита широкого поиска; 3. доказывает существование исходной пары с учётом семестра, календарного графика, чётности, недели начала, лимита часов и lifecycle; -4. применяет сохранённые overrides и кандидат общей логикой `ScheduleQueryService`; -5. проверяет полуоткрытые временные интервалы `[start, end)` и итоговые ресурсы; -6. сохраняет изменение только при отсутствии конфликта. +4. для новой даты проверяет границы того же семестра, активность правила и дисциплины, + учебный день всех затронутых групп и эффективную сетку времени; +5. проверяет lifecycle итоговых преподавателя и аудитории на целевую дату; +6. применяет сохранённые overrides и кандидат общей логикой `ScheduleQueryService`; +7. проверяет полуоткрытые временные интервалы `[start, end)` и итоговые ресурсы целевого дня; +8. сохраняет изменение только при отсутствии конфликта. + +В поиске `MOVE` удаляет исходное вхождение и добавляет занятие в целевой день, включая +случай, когда в запрос попала только целевая дата. День недели, номер недели и чётность +вычисляются заново по семестру, а расход академических часов остаётся у исходной пары. +`CANCEL` скрывает занятие. Удаление override возвращает текущий вариант, который снова +формируется базовым правилом. Совпадение преподавателя или аудитории в пересекающееся время всегда является конфликтом. Для общей учебной группы занятие целой группы конфликтует с любой её подгруппой; разные подгруппы одной группы могут идти параллельно при свободных преподавателях и аудиториях. Конфликт возвращается как `409 Conflict` с русским сообщением. Блокировка PostgreSQL общая -для backend-pod, поэтому два конкурентных изменения одной даты проверяются последовательно. +для backend-pod, поэтому два конкурентных переноса с разных исходных дат на одну целевую +дату и одинаковые ресурсы проверяются последовательно. --- diff --git a/docs/DATABASE.md b/docs/DATABASE.md index 6815389..a898570 100644 --- a/docs/DATABASE.md +++ b/docs/DATABASE.md @@ -326,6 +326,7 @@ erDiagram BIGSERIAL id PK BIGINT base_rule_slot_id FK DATE lesson_date + DATE target_lesson_date VARCHAR action BIGINT new_time_slot_id FK BIGINT new_classroom_id FK @@ -873,7 +874,8 @@ V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр |---------|-----|----------| | `id` | BIGSERIAL PK | ID изменения | | `base_rule_slot_id` | BIGINT FK → schedule_rule_slots | Базовый слот правила | -| `lesson_date` | DATE | Дата конкретной пары | +| `lesson_date` | DATE | Исходная дата конкретной пары из базового правила | +| `target_lesson_date` | DATE NULL | Новая дата единственного занятия при `MOVE` | | `action` | VARCHAR(20) | `MOVE`, `CANCEL`, `REPLACE` | | `new_time_slot_id` | BIGINT FK → time_slots | Новый временной слот | | `new_classroom_id` | BIGINT FK → classrooms | Новая аудитория | @@ -887,12 +889,19 @@ V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр одной и той же пары. Базовая схема V1 добавляет структурные инварианты: - `CANCEL` не содержит новых ресурсов; -- `MOVE` содержит новый временной слот или аудиторию; -- `REPLACE` содержит нового преподавателя, аудиторию или формат; +- `MOVE` содержит новый временной слот; +- `REPLACE` не содержит нового времени и содержит нового преподавателя, аудиторию или формат; - `new_lesson_format` равен `Очно`, `Онлайн` либо `NULL`. +- `target_lesson_date` отличается от `lesson_date`, разрешена только для `MOVE` и требует + `new_time_slot_id`. -Фактическое существование пары, реальность изменения и ресурсные конфликты зависят от -календаря конкретной даты и проверяются транзакционным сервисом, а не SQL CHECK. +Частичный индекс `idx_schedule_overrides_target_date` ускоряет выборку входящих переносов, +а индекс исходной даты `idx_schedule_overrides_date` обслуживает исходящие изменения и +отмены. Диапазонный реестр и поиск используют обе даты. + +Фактическое существование пары, тот же семестр, учебный календарь затронутых групп, +lifecycle ресурсов, эффективная сетка целевого дня, реальность изменения и ресурсные +конфликты проверяются транзакционным сервисом, а не SQL CHECK. --- @@ -910,7 +919,7 @@ V1 добавляет `uq_schedule_rule_slots_exact_payload`: в одном пр | Файл | Описание | |------|----------| -| `V1__init.sql` | Полная baseline-схема: справочники, роли, refresh-сессии JWT, PostgreSQL rate limit и аудит входа, lifecycle-поля, история кафедр, календарные графики, динамическое расписание, точечные изменения, seed, CHECK/UNIQUE/GiST-ограничения, конкурентно безопасные триггеры и комментарии | +| `V1__init.sql` | Полная baseline-схема: справочники, роли, refresh-сессии JWT, PostgreSQL rate limit и аудит входа, lifecycle-поля, история кафедр, календарные графики, динамическое расписание, точечные изменения с переносом даты, seed, CHECK/UNIQUE/GiST-ограничения, конкурентно безопасные триггеры и комментарии | ### Этап разработки diff --git a/docs/FRONTEND.md b/docs/FRONTEND.md index a56fc3c..6f12fed 100644 --- a/docs/FRONTEND.md +++ b/docs/FRONTEND.md @@ -28,6 +28,8 @@ frontend/ ├── tests/ │ ├── auth-session.test.mjs # Login/refresh/reload/logout и single-flight refresh │ ├── dashboard-conflicts.test.mjs # Регрессии дат и состояний проверки конфликтов +│ ├── schedule-overrides.test.mjs # Действия, роли, недельный выбор и подбор времени разовой правки +│ ├── schedule-view-semesters.test.mjs # Выбор семестра и расчёт двухнедельного диапазона просмотра │ └── security-policy.test.mjs # Web Storage, XSS, пароли, язык, CSP и Dockerfile ├── index.html # 🔐 Страница авторизации (общая) ├── script.js # Логика авторизации @@ -59,7 +61,8 @@ frontend/ │ │ ├── subjects.js # Управление дисциплинами │ │ ├── university-structure.js # Кафедры, специальности и профили обучения │ │ ├── department-workspace.js # Кабинет кафедры в общей панели -│ │ ├── schedule-view.js # Read-only просмотр расписаний в матрицах +│ │ ├── schedule-view.js # Просмотр расписаний и запуск разовой правки из карточки +│ │ ├── schedule-override-panel.js # Боковая панель и реестр разовых изменений │ │ ├── schedule.js # Конструктор правил расписания │ │ ├── academic-calendar.js # Календарные учебные графики │ │ └── auditorium-workload.js # Загруженность аудиторий, преподавателей и кафедр @@ -152,7 +155,7 @@ frontend/ | `subjects` | Дисциплины | `/api/subjects` | | `university-structure` | Кафедры, специальности и профили обучения; профили доступны отдельной внутренней вкладкой и через кнопку специальности | `/api/departments`, `/api/specialties`, `/api/specialties/{id}/profiles` | | `department-workspace` | Кабинет кафедры: дисциплины, импорт, комментарии, преподаватели, привязка преподавателей, заявки на новых преподавателей и нагрузка | `/api/department/*`, `/api/department/teacher-requests`, `/api/workload/teachers` | -| `schedule-view` | Read-only просмотр расписаний: по одной выбранной дате строится двухнедельный диапазон, найденные расписания выбираются в переключателе, а на экране отображается одна активная совмещённая таблица чётной/нечётной недели | `/api/schedule/search` | +| `schedule-view` | Просмотр расписаний: семестр выбирается в дополнительных фильтрах, для учебного периода строится двухнедельный диапазон, найденные расписания выбираются в переключателе, а `ADMIN` и `EDUCATION_OFFICE` редактируют конкретное занятие в боковой панели без изменения правила | `/api/schedule/semesters`, `/api/schedule/search`, `/api/edu-office/schedule/overrides`, `/api/admin/time-slots/effective` | | `schedule` | Конструктор правил динамического расписания с выезжающей визуальной матрицей групп по дням и времени | `/api/admin/schedule-rules`, `/api/admin/time-slots`, `/api/admin/calendar/years`, `/api/lesson-types`, `/api/subgroups` | | `academic-calendar` | Учебные годы, семестры, создание календарных графиков, Excel-подобный редактор дневной сетки и привязка дисциплин к семестрам графика | `/api/admin/calendar`, `/api/admin/academic-calendars`, `/api/admin/academic-calendars/{id}/subjects`, `/api/admin/calendar/activity-types`, `/api/specialties`, `/api/specialties/{id}/profiles`, `/api/education-forms`, `/api/subjects` | | `auditorium-workload` | Динамическая загруженность аудиторий, преподавателей и кафедр: сводная матрица по дате или совмещённая таблица выбранной сущности по чётной/нечётной неделе | `/api/classrooms`, `/api/users/teachers`, `/api/departments`, `/api/admin/time-slots`, `/api/equipments`, `/api/groups`, `/api/schedule`, `/api/admin/calendar/years` | @@ -169,7 +172,9 @@ frontend/ - Вкладка `department-workspace` в блоке преподавателей объединяет данные `/api/department/teachers` и `/api/workload/teachers`: каждый преподаватель показывается одной карточкой с должностью и нагрузкой за выбранный период, преподаватели без занятий получают нулевую нагрузку, а преподаватели из расписания добавляются без дублей. Если дата начала периода выбрана позже даты окончания, поле окончания очищается, а расчёт нагрузки ждёт корректный период. - Вкладка `department-workspace` позволяет кафедре добавить существующего активного преподавателя на свою кафедру через `/api/department/teachers/{teacherId}/assignments`, отправить заявку на нового преподавателя через `/api/department/teacher-requests` и видеть статусы собственных заявок в таблице. - Компоновка `department-workspace` использует собственные CSS-сетки `department-workspace-filter-grid` и `department-workspace-actions-grid`: фильтры периода отделены от сеток расписания, загрузка дисциплин занимает широкую колонку, формы преподавателей выравниваются справа, а списки и таблицы идут полноширинными блоками ниже. -- Вкладка `schedule-view` показывает найденные занятия в режиме одной активной таблицы. Пользователь выбирает, что смотреть: группу, преподавателя, аудиторию или кафедру; frontend запрашивает двухнедельный диапазон от понедельника выбранной даты и собирает найденные расписания в переключатель результатов. На странице не выводится стек таблиц: виден один выбранный результат, а остальные доступны через чипы и кнопки предыдущего/следующего расписания; чипы результатов переносятся и отделены от счётчика стабильным отступом. Для режима кафедры и роли `DEPARTMENT` расписание ограничивается кафедрой пользователя; преподавательские и студенческие отдельные страницы пока остаются самостоятельными. Таблица строится как строки пар и столбцы дней недели. Нечётная неделя отображается в верхней половине ячейки, чётная — в нижней, а одинаковые занятия в обе недели схлопываются в цельную ячейку. Бейдж диапазона недель скрывается для занятий на весь семестр, а для занятий до конца семестра показывает только неделю начала в формате `(с 5 нед.)`. На мобильной ширине вместо широкой недельной матрицы показывается один день активного расписания с переключателем дней. +- Вкладка `schedule-view` показывает найденные занятия в режиме одной активной таблицы. Пользователь выбирает, что смотреть: группу, преподавателя, аудиторию или кафедру; в дополнительных фильтрах доступен семестр из справочника `/api/schedule/semesters`, предназначенного только для чтения. Для текущего семестра сохраняется текущая двухнедельная точка просмотра, а при выборе другого семестра диапазон начинается с понедельника его первой недели. Frontend запрашивает две недели и собирает найденные расписания в переключатель результатов. На странице не выводится стек таблиц: виден один выбранный результат, а остальные доступны через чипы и кнопки предыдущего/следующего расписания; чипы результатов переносятся и отделены от счётчика стабильным отступом. Для режима кафедры и роли `DEPARTMENT` расписание ограничивается кафедрой пользователя; преподавательские и студенческие отдельные страницы пока остаются самостоятельными. Таблица строится как строки пар и столбцы дней недели. Нечётная неделя отображается в верхней половине ячейки, чётная — в нижней, а одинаковые занятия в обе недели схлопываются в цельную ячейку. Бейдж диапазона недель скрывается для занятий на весь семестр, а для занятий до конца семестра показывает только неделю начала в формате `(с 5 нед.)`. На мобильной ширине вместо широкой недельной матрицы показывается один день активного расписания с переключателем дней. +- Для `ADMIN` и `EDUCATION_OFFICE` карточка занятия содержит кнопку `Изменить`, а уже изменённая пара — индикатор разовой правки. Справа открывается полупрозрачная боковая панель с размытием содержимого под ней; внешний затемнённый слой также размывает страницу, а на мобильном устройстве панель занимает весь экран. Режим `Редактирование` сравнивает `Было по правилу / Станет`, позволяет изменить дату, эффективный временной слот, преподавателя, аудиторию, формат и комментарий, отменить занятие или удалить override через `Вернуть по правилу`. Селект аудитории получает записи из `/api/classrooms`, но показывает только поле `name`, без корпуса и этажа. По умолчанию выводятся семь дней исходной недели; кнопка `Выбрать другую дату` раскрывает календарь всего семестра, где неучебные даты отключены. После смены даты загружается эффективная сетка дня: сначала выбирается тот же ID слота, затем совпадающий интервал, иначе требуется ручной выбор. Дата или время формируют `MOVE`, а только преподаватель, аудитория или формат — `REPLACE`. +- Режим `Изменения за период` загружает overrides, у которых в двухнедельный диапазон попала исходная или целевая дата. Поэтому в реестре остаются отменённые занятия и входящие/исходящие переносы, которых нет на исходном месте в таблице. После сохранения, отмены или возврата расписание и реестр обновляются без смены выбранного периода. Для `DEPARTMENT` и `SCHEDULE_VIEWER` вкладка остаётся полностью read-only: кнопка, панель и запросы управляющего API не создаются. - Вкладка `auditorium-workload` стала общей вкладкой `Загруженность`: в поле «Что смотреть» выбираются аудитории, преподаватели или кафедры. Сводная матрица по выбранной дате использует одинаковую структуру: строки — выбранный тип сущности, столбцы — эффективные временные слоты дня из `/api/admin/time-slots/effective`, занятость собирается из динамического расписания `/api/schedule` по группам. Кафедральная матрица группирует занятия по кафедре преподавателя. Для аудиторий доступны фильтры корпуса, вместимости и оборудования. В поле «Отображение» можно выбрать конкретную аудиторию, преподавателя или кафедру; тогда сводная матрица заменяется одной таблицей по дням недели и времени для двухнедельного периода от выбранной даты. Таблица выбранной сущности растягивается до нижней части экрана. Ячейка делится вертикально только если верхняя и нижняя недели отличаются: нечётная неделя отображается сверху, чётная — снизу. Если состояние или занятие одинаковое, ячейка остаётся цельной. Чётность берётся из расписания, а для свободных дней рассчитывается по семестрам из `/api/admin/calendar/years`. - Вкладка `university-structure` содержит внутренние разделы `Кафедры`, `Специальности` и `Профили`, оформленные тем же визуальным паттерном вкладок, что и `academic-calendar`: администратор создаёт профили как из общего списка, так и через кнопку `Профили` у конкретной специальности. - Вкладка `schedule` не обращается к старым `lessons` API. Создание и редактирование расписания выполняется через правила `/api/admin/schedule-rules`, где каждое правило содержит группы, отдельные часы и недели начала для лекций, лабораторных и практик, а также набор базовых слотов. Группы выбираются через выпадающий мультиселект. Поле подгруппы появляется только при выборе лабораторной работы; для лекций и практик оно не отображается. Если в правиле выбрана одна группа, селект подгруппы содержит пункт `Вся группа`; если выбрано несколько групп, лабораторный слот показывает мультиселект подгрупп, чтобы выбрать разные подгруппы разных групп. Типы занятий в слоте сортируются в порядке: лекция, лабораторная работа, практика. Список слотов отображается без внутреннего вертикального скролла: при добавлении строк форма расширяется вниз, а кнопка сохранения остаётся отдельным блоком под слотами. Из календарной системы здесь используется список семестров для выбора периода действия правила. Справа доступна сворачиваемая визуальная матрица: пользователь выбирает учебный год, семестр и группы, после чего матрица строится только по правилам выбранного семестра. Столбцы — выбранные в фильтре группы, строки — только день и время, где есть активные пары, ячейки показывают дисциплину, диапазон недель, тип, формат, преподавателя, аудиторию и подгруппы. Период недель не показывается для занятия на весь семестр; если занятие идёт до конца семестра не с первой недели, выводится только неделя начала в формате `(с 5 нед.)`, а ограниченный диапазон — как `(с 1 по 3 нед.)`. Если нечётная и чётная недели отличаются, ячейка делится на две половины; одинаковые занятия схлопываются в цельную ячейку. Кнопка с тремя точками в правой части карточки пары открывает контекстное меню: можно открыть полное правило в форме, изменить только день и базовую пару выбранного слота через компактную модалку или удалить правило целиком. В списке правил действия отображаются едиными кнопками одинакового размера с отступами между ними. @@ -282,7 +287,7 @@ if (!session || !AUTHORIZED_ROLES.includes(session.role)) { - расширенный поиск `/api/schedule/search` по дате в периоде, преподавателю, аудитории и кафедре; - конструктор расписания через `/api/admin/schedule-rules`; -- создание точечного изменения пары через `/api/edu-office/schedule/overrides` на уровне API; +- разовая правка конкретного занятия через боковую панель: перенос даты/времени, замена ресурсов, отмена и возврат по правилу; - матричный просмотр загруженности аудиторий, преподавателей и кафедр через общую вкладку `Загруженность`; - аудитории, оборудование, календарный график и загруженность. @@ -298,7 +303,7 @@ if (!session || !AUTHORIZED_ROLES.includes(session.role)) { ### Просмотр расписаний (`/admin/#schedule-view`) -Роль `SCHEDULE_VIEWER` видит только read-only вкладку просмотра расписаний. Доступны фильтры по дате в периоде, группе, преподавателю, аудитории, кафедре, дисциплине, типу занятия, чётности и разрезу таблиц. Найденные занятия отображаются отдельными совмещёнными таблицами чётной/нечётной недели с парами по строкам и днями недели по столбцам. +Роль `SCHEDULE_VIEWER` видит только доступную для чтения вкладку просмотра расписаний. Доступны фильтры по семестру, дате в периоде, группе, преподавателю, аудитории, кафедре, дисциплине, типу занятия, чётности и разрезу таблиц. Найденные занятия отображаются отдельными совмещёнными таблицами чётной/нечётной недели с парами по строкам и днями недели по столбцам. ### Преподаватель (`/teacher/`) diff --git a/frontend/admin/css/auditorium-workload.css b/frontend/admin/css/auditorium-workload.css index 677c985..6378149 100644 --- a/frontend/admin/css/auditorium-workload.css +++ b/frontend/admin/css/auditorium-workload.css @@ -630,7 +630,7 @@ } .schedule-view-extra-grid { - grid-template-columns: repeat(3, minmax(180px, 1fr)); + grid-template-columns: repeat(4, minmax(180px, 1fr)); margin-top: 0.9rem; } @@ -780,6 +780,438 @@ margin-top: 0.1rem; } +.schedule-view-lesson-title { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 0.5rem; +} + +.schedule-override-badge { + display: inline-flex; + width: fit-content; + margin: 0.35rem 0; + padding: 0.18rem 0.45rem; + border: 1px solid color-mix(in srgb, var(--accent) 50%, transparent); + border-radius: 999px; + background: color-mix(in srgb, var(--accent) 12%, transparent); + color: var(--accent); + font-size: 0.68rem; + font-weight: 700; +} + +.schedule-override-edit { + width: 100%; + margin-top: 0.55rem; + padding: 0.42rem 0.6rem; + border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--bg-card-border)); + border-radius: var(--radius-sm); + background: color-mix(in srgb, var(--accent) 10%, var(--bg-input)); + color: var(--text-primary); + font: inherit; + font-size: 0.75rem; + font-weight: 700; + cursor: pointer; +} + +.schedule-override-edit:hover { + border-color: var(--accent); + background: color-mix(in srgb, var(--accent) 18%, var(--bg-input)); +} + +.schedule-override-count { + display: inline-grid; + min-width: 1.5rem; + height: 1.5rem; + margin-left: 0.4rem; + place-items: center; + border-radius: 999px; + background: color-mix(in srgb, var(--accent) 18%, transparent); + font-size: 0.72rem; +} + +body.schedule-override-open { + overflow: hidden; +} + +.schedule-override-drawer { + position: fixed; + inset: 0; + z-index: 1200; + display: grid; + grid-template-columns: 1fr minmax(520px, 680px); +} + +.schedule-override-drawer[hidden] { + display: none; +} + +.schedule-override-backdrop { + border: 0; + background: rgba(4, 10, 24, 0.68); + cursor: default; + -webkit-backdrop-filter: blur(7px); + backdrop-filter: blur(7px); +} + +.schedule-override-panel { + min-width: 0; + height: 100vh; + display: grid; + grid-template-rows: auto auto minmax(0, 1fr); + border-left: 1px solid var(--bg-card-border); + background: color-mix(in srgb, var(--bg-card) 88%, transparent); + box-shadow: -24px 0 64px rgba(0, 0, 0, 0.28); + -webkit-backdrop-filter: blur(24px) saturate(135%); + backdrop-filter: blur(24px) saturate(135%); + animation: schedule-override-enter 0.22s ease-out; +} + +@keyframes schedule-override-enter { + from { transform: translateX(30px); opacity: 0; } + to { transform: translateX(0); opacity: 1; } +} + +.schedule-override-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 1rem; + padding: 1.35rem 1.5rem 1rem; +} + +.schedule-override-header h2 { + margin: 0.18rem 0 0; +} + +.schedule-override-eyebrow { + color: var(--accent); + font-size: 0.72rem; + font-weight: 800; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.schedule-override-tabs { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.35rem; + margin: 0 1.5rem; + padding: 0.3rem; + border: 1px solid var(--bg-card-border); + border-radius: var(--radius-sm); + background: var(--bg-input); +} + +.schedule-override-tab { + min-height: 38px; + border: 0; + border-radius: calc(var(--radius-sm) - 3px); + background: transparent; + color: var(--text-secondary); + font: inherit; + font-size: 0.82rem; + font-weight: 700; + cursor: pointer; +} + +.schedule-override-tab.active { + background: color-mix(in srgb, var(--accent) 16%, var(--bg-card)); + color: var(--text-primary); + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent); +} + +.schedule-override-body { + min-height: 0; + padding: 1.25rem 1.5rem 1.5rem; + overflow-y: auto; +} + +.schedule-override-empty { + display: grid; + min-height: 180px; + padding: 1.25rem; + place-items: center; + border: 1px dashed var(--bg-card-border); + border-radius: var(--radius-sm); + background: var(--bg-input); + color: var(--text-secondary); + text-align: center; +} + +.schedule-override-comparison { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.75rem; + margin-bottom: 1.2rem; +} + +.schedule-override-comparison article { + min-width: 0; + padding: 0.9rem; + border: 1px solid var(--bg-card-border); + border-radius: var(--radius-sm); + background: var(--bg-input); +} + +.schedule-override-comparison .schedule-override-after { + border-color: color-mix(in srgb, var(--accent) 55%, var(--bg-card-border)); + background: color-mix(in srgb, var(--accent) 8%, var(--bg-input)); +} + +.schedule-override-comparison span, +.schedule-override-comparison strong, +.schedule-override-comparison p { + display: block; +} + +.schedule-override-comparison span { + margin-bottom: 0.4rem; + color: var(--text-secondary); + font-size: 0.72rem; + font-weight: 700; + text-transform: uppercase; +} + +.schedule-override-comparison strong { + font-size: 0.88rem; +} + +.schedule-override-comparison p { + margin: 0.42rem 0 0; + color: var(--text-secondary); + font-size: 0.76rem; + line-height: 1.45; +} + +.schedule-override-fieldset { + min-width: 0; + margin: 0 0 1.2rem; + padding: 0; + border: 0; +} + +.schedule-override-fieldset legend { + margin-bottom: 0.55rem; + color: var(--text-secondary); + font-size: 0.85rem; + font-weight: 600; +} + +.schedule-override-week { + display: grid; + grid-template-columns: repeat(7, minmax(0, 1fr)); + gap: 0.35rem; +} + +.schedule-override-date { + min-width: 0; + min-height: 58px; + padding: 0.38rem 0.2rem; + border: 1px solid var(--bg-card-border); + border-radius: var(--radius-sm); + background: var(--bg-input); + color: var(--text-primary); + font: inherit; + cursor: pointer; +} + +.schedule-override-date span, +.schedule-override-date strong { + display: block; +} + +.schedule-override-date span { + color: var(--text-secondary); + font-size: 0.68rem; +} + +.schedule-override-date strong { + margin-top: 0.2rem; + font-size: 0.77rem; +} + +.schedule-override-date.active, +.schedule-override-calendar-day.active { + border-color: var(--accent); + background: color-mix(in srgb, var(--accent) 18%, var(--bg-input)); + box-shadow: inset 0 0 0 1px var(--accent); +} + +.schedule-override-date:disabled, +.schedule-override-calendar-day:disabled { + opacity: 0.32; + cursor: not-allowed; +} + +.schedule-override-calendar-toggle { + width: 100%; + margin-top: 0.6rem; +} + +.schedule-override-calendar { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.65rem; + max-height: 390px; + margin-top: 0.65rem; + padding: 0.65rem; + border: 1px solid var(--bg-card-border); + border-radius: var(--radius-sm); + background: var(--bg-input); + overflow-y: auto; +} + +.schedule-override-calendar[hidden] { + display: none; +} + +.schedule-override-month { + padding: 0.55rem; + border: 1px solid var(--bg-card-border); + border-radius: var(--radius-sm); + background: var(--bg-card); +} + +.schedule-override-month h4 { + margin: 0 0 0.55rem; + font-size: 0.8rem; + text-align: center; +} + +.schedule-override-calendar-grid { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 0.18rem; +} + +.schedule-override-calendar-grid > strong { + padding: 0.2rem 0; + color: var(--text-secondary); + font-size: 0.6rem; + text-align: center; +} + +.schedule-override-calendar-day, +.schedule-override-calendar-blank { + min-width: 0; + aspect-ratio: 1; +} + +.schedule-override-calendar-day { + border: 1px solid transparent; + border-radius: 6px; + background: transparent; + color: var(--text-primary); + font: inherit; + font-size: 0.7rem; + cursor: pointer; +} + +.schedule-override-calendar-day:not(:disabled):hover { + border-color: var(--accent); +} + +.schedule-override-fields { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.85rem; +} + +.schedule-override-fields select, +#schedule-override-comment { + width: 100%; +} + +#schedule-override-comment { + resize: vertical; +} + +.schedule-override-actions { + display: flex; + flex-wrap: wrap; + gap: 0.55rem; + margin-top: 1rem; + padding-top: 1rem; + border-top: 1px solid var(--bg-card-border); +} + +.schedule-override-registry-heading { + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + margin-bottom: 0.9rem; +} + +.schedule-override-registry-heading h3 { + margin: 0 0 0.25rem; +} + +.schedule-override-registry { + display: grid; + gap: 0.7rem; +} + +.schedule-override-registry-item { + padding: 1rem; + border: 1px solid var(--bg-card-border); + border-radius: var(--radius-sm); + background: var(--bg-input); +} + +.schedule-override-registry-topline { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.75rem; +} + +.schedule-override-registry-topline time { + color: var(--text-secondary); + font-size: 0.76rem; +} + +.schedule-override-action { + display: inline-flex; + padding: 0.2rem 0.48rem; + border-radius: 999px; + background: color-mix(in srgb, var(--accent) 14%, transparent); + color: var(--accent); + font-size: 0.68rem; + font-weight: 800; +} + +.schedule-override-action.action-cancel { + background: color-mix(in srgb, var(--danger, #ef4444) 13%, transparent); + color: var(--danger, #ef4444); +} + +.schedule-override-registry-item h4 { + margin: 0.65rem 0 0.25rem; +} + +.schedule-override-registry-item p, +.schedule-override-registry-item blockquote { + color: var(--text-secondary); + font-size: 0.78rem; + line-height: 1.5; +} + +.schedule-override-registry-item p { + margin: 0; +} + +.schedule-override-registry-item blockquote { + margin: 0.65rem 0; + padding-left: 0.7rem; + border-left: 2px solid var(--accent); +} + +.schedule-override-registry-item .btn { + margin-top: 0.75rem; +} + .schedule-view-state { min-height: 100%; border: 1px solid var(--bg-card-border); @@ -944,4 +1376,46 @@ .schedule-view-day-tabs { justify-content: flex-start; } + + .schedule-override-drawer { + display: block; + } + + .schedule-override-drawer[hidden] { + display: none; + } + + .schedule-override-backdrop { + display: none; + } + + .schedule-override-panel { + width: 100%; + border-left: 0; + } + + .schedule-override-header, + .schedule-override-body { + padding-right: 1rem; + padding-left: 1rem; + } + + .schedule-override-tabs { + margin-right: 1rem; + margin-left: 1rem; + } + + .schedule-override-comparison, + .schedule-override-fields, + .schedule-override-calendar { + grid-template-columns: 1fr; + } + + .schedule-override-week { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .schedule-override-actions .btn { + width: 100%; + } } diff --git a/frontend/admin/js/views/schedule-override-panel.js b/frontend/admin/js/views/schedule-override-panel.js new file mode 100644 index 0000000..a54c34c --- /dev/null +++ b/frontend/admin/js/views/schedule-override-panel.js @@ -0,0 +1,611 @@ +import { api } from '../api.js'; +import { escapeHtml, hideAlert, showAlert } from '../utils.js'; + +const EDIT_ROLES = new Set(['ADMIN', 'EDUCATION_OFFICE']); +const ACTION_LABELS = { + MOVE: 'Перенос', + REPLACE: 'Замена', + CANCEL: 'Отмена' +}; +const DAY_LABELS = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс']; +const MONTH_LABELS = [ + 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', + 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' +]; + +export function canEditScheduleOverrides(role) { + return EDIT_ROLES.has(role); +} + +export function overrideActionForChanges(changes) { + if (changes.dateChanged || changes.timeChanged) return 'MOVE'; + if (changes.teacherChanged || changes.classroomChanged || changes.formatChanged) return 'REPLACE'; + return null; +} + +export function weekDates(value) { + const selected = parseIsoDate(value); + const day = selected.getDay() || 7; + const monday = addDays(selected, 1 - day); + return Array.from({ length: 7 }, (_, index) => toIsoDate(addDays(monday, index))); +} + +export function pickMatchingTimeSlot(slots, preferredId, startTime, endTime) { + const safeSlots = Array.isArray(slots) ? slots : []; + const byId = preferredId == null + ? null + : safeSlots.find(slot => String(slot.id) === String(preferredId)); + if (byId) return byId; + const normalizedStart = trimTime(startTime); + const normalizedEnd = trimTime(endTime); + if (!normalizedStart || !normalizedEnd) return null; + return safeSlots.find(slot => trimTime(slot.startTime) === normalizedStart + && trimTime(slot.endTime) === normalizedEnd) || null; +} + +export function createScheduleOverridePanel({ role, dictionaries, getRange, onChanged }) { + if (!canEditScheduleOverrides(role)) { + return { + setRegistry() {}, + openLesson() {}, + openRegistry() {} + }; + } + + const drawer = document.getElementById('schedule-override-drawer'); + const form = document.getElementById('schedule-override-form'); + const empty = document.getElementById('schedule-override-empty'); + const registryButton = document.getElementById('schedule-view-overrides-open'); + const registryCount = document.getElementById('schedule-view-overrides-count'); + const registry = document.getElementById('schedule-override-registry'); + const registryPeriod = document.getElementById('schedule-override-registry-period'); + const calendar = document.getElementById('schedule-override-calendar'); + const calendarToggle = document.getElementById('schedule-override-calendar-toggle'); + const week = document.getElementById('schedule-override-week'); + const timeSelect = document.getElementById('schedule-override-time'); + const teacherSelect = document.getElementById('schedule-override-teacher'); + const classroomSelect = document.getElementById('schedule-override-classroom'); + const formatSelect = document.getElementById('schedule-override-format'); + const commentInput = document.getElementById('schedule-override-comment'); + const restoreButton = document.getElementById('schedule-override-restore'); + const cancelButton = document.getElementById('schedule-override-cancel'); + const saveButton = document.getElementById('schedule-override-save'); + + const state = { + overrides: [], + selectedLesson: null, + selectedOverride: null, + source: null, + availability: null, + targetDate: null, + timeSlots: [], + busy: false + }; + + registryButton.hidden = false; + fillReferenceSelects(); + bindEvents(); + renderRegistry(); + + return { setRegistry, openLesson, openRegistry }; + + function bindEvents() { + drawer.querySelectorAll('[data-override-close]').forEach(button => { + button.addEventListener('click', close); + }); + drawer.querySelectorAll('[data-override-tab]').forEach(button => { + button.addEventListener('click', () => activateTab(button.dataset.overrideTab)); + }); + registryButton.addEventListener('click', openRegistry); + calendarToggle.addEventListener('click', () => { + calendar.hidden = !calendar.hidden; + calendarToggle.textContent = calendar.hidden ? 'Выбрать другую дату' : 'Скрыть календарь семестра'; + }); + week.addEventListener('click', selectDateFromButton); + calendar.addEventListener('click', selectDateFromButton); + registry.addEventListener('click', event => { + const button = event.target.closest('[data-override-registry-id]'); + if (!button) return; + const item = state.overrides.find(override => String(override.id) === button.dataset.overrideRegistryId); + if (item) openOverride(item); + }); + [timeSelect, teacherSelect, classroomSelect, formatSelect].forEach(select => { + select.addEventListener('change', updateComparison); + }); + form.addEventListener('submit', save); + cancelButton.addEventListener('click', cancelLesson); + restoreButton.addEventListener('click', restoreRule); + document.addEventListener('keydown', event => { + if (event.key === 'Escape' && !drawer.hidden) close(); + }); + } + + function setRegistry(overrides, range) { + state.overrides = Array.isArray(overrides) ? overrides : []; + registryCount.textContent = String(state.overrides.length); + const activeRange = range || getRange?.(); + registryPeriod.textContent = activeRange + ? `${formatDate(activeRange.startDate)} — ${formatDate(activeRange.endDate)}` + : 'Период не выбран'; + renderRegistry(); + } + + async function openLesson(lesson) { + if (!lesson?.scheduleRuleSlotId) return; + const originalDate = lesson.originalLessonDate || lesson.date; + const existing = state.overrides.find(override => + String(override.baseRuleSlotId) === String(lesson.scheduleRuleSlotId) + && override.lessonDate === originalDate + ) || null; + await prepareEditor(lesson, existing); + } + + async function openOverride(override) { + const syntheticLesson = { + scheduleRuleSlotId: override.baseRuleSlotId, + date: override.targetLessonDate || override.lessonDate, + originalLessonDate: override.lessonDate, + scheduleOverrideId: override.id, + subjectName: override.subjectName, + lessonTypeName: override.lessonTypeName, + groupNames: override.groupNames, + timeSlotId: override.newTimeSlotId || override.sourceTimeSlotId, + timeSlotOrder: override.sourceTimeSlotOrder, + startTime: override.sourceStartTime, + endTime: override.sourceEndTime, + teacherId: override.newTeacherId || override.sourceTeacherId, + teacherName: teacherName(override.newTeacherId) || override.sourceTeacherName, + classroomId: override.newClassroomId || override.sourceClassroomId, + classroomName: classroomName(override.newClassroomId) || override.sourceClassroomName, + lessonFormat: override.newLessonFormat || override.sourceLessonFormat + }; + await prepareEditor(syntheticLesson, override); + } + + function openRegistry() { + open(); + activateTab('registry'); + renderRegistry(); + } + + async function prepareEditor(lesson, existing) { + open(); + activateTab('edit'); + form.hidden = true; + empty.hidden = false; + empty.textContent = 'Загрузка доступных дат и времени...'; + hideAlert('schedule-override-alert'); + + state.selectedLesson = lesson; + state.selectedOverride = existing; + state.source = sourceFrom(lesson, existing); + state.targetDate = existing?.targetLessonDate || state.source.lessonDate; + + try { + state.availability = await api.get( + `/api/edu-office/schedule/overrides/availability?baseRuleSlotId=${encodeURIComponent(state.source.baseRuleSlotId)}` + + `&lessonDate=${encodeURIComponent(state.source.lessonDate)}` + ); + renderDateChoices(); + await loadTimeSlots(initialTimePreference(existing)); + setEditorValues(existing); + renderSource(); + updateComparison(); + restoreButton.hidden = !existing; + form.hidden = false; + empty.hidden = true; + } catch (error) { + empty.textContent = error.message || 'Не удалось загрузить данные занятия'; + } + } + + function sourceFrom(lesson, existing) { + return { + baseRuleSlotId: lesson.scheduleRuleSlotId, + lessonDate: lesson.originalLessonDate || existing?.lessonDate || lesson.date, + subjectName: existing?.subjectName || lesson.subjectName || 'Без дисциплины', + lessonTypeName: existing?.lessonTypeName || lesson.lessonTypeName || 'Тип не указан', + groupNames: existing?.groupNames?.length ? existing.groupNames : (lesson.groupNames || []), + timeSlotId: existing?.sourceTimeSlotId || lesson.timeSlotId, + timeSlotOrder: existing?.sourceTimeSlotOrder || lesson.timeSlotOrder, + startTime: existing?.sourceStartTime || lesson.startTime, + endTime: existing?.sourceEndTime || lesson.endTime, + teacherId: existing?.sourceTeacherId || lesson.teacherId, + teacherName: existing?.sourceTeacherName || lesson.teacherName, + classroomId: existing?.sourceClassroomId || lesson.classroomId, + classroomName: existing?.sourceClassroomName || lesson.classroomName, + lessonFormat: existing?.sourceLessonFormat || lesson.lessonFormat || 'Очно' + }; + } + + function initialTimePreference(existing) { + return { + id: existing?.newTimeSlotId || state.source.timeSlotId, + startTime: existing?.newTimeSlotId ? null : state.source.startTime, + endTime: existing?.newTimeSlotId ? null : state.source.endTime + }; + } + + function fillReferenceSelects() { + teacherSelect.innerHTML = (dictionaries.teachers || []).map(teacher => + `` + ).join(''); + classroomSelect.innerHTML = (dictionaries.classrooms || []).map(classroom => + `` + ).join(''); + } + + function setEditorValues(existing) { + const effectiveTeacherId = existing?.newTeacherId || state.source.teacherId || ''; + const effectiveClassroomId = existing?.newClassroomId || state.source.classroomId || ''; + ensureSelectOption( + teacherSelect, + effectiveTeacherId, + teacherName(effectiveTeacherId) || state.source.teacherName || `Преподаватель ${effectiveTeacherId}` + ); + ensureSelectOption( + classroomSelect, + effectiveClassroomId, + classroomName(effectiveClassroomId) || state.source.classroomName || `Аудитория ${effectiveClassroomId}` + ); + teacherSelect.value = String(effectiveTeacherId); + classroomSelect.value = String(effectiveClassroomId); + formatSelect.value = existing?.newLessonFormat || state.source.lessonFormat || 'Очно'; + commentInput.value = existing?.comment || ''; + } + + async function selectDateFromButton(event) { + const button = event.target.closest('[data-override-date]'); + if (!button || button.disabled || button.dataset.overrideDate === state.targetDate) return; + state.targetDate = button.dataset.overrideDate; + renderDateChoices(); + await loadTimeSlots({ + id: state.source.timeSlotId, + startTime: state.source.startTime, + endTime: state.source.endTime + }); + updateComparison(); + } + + function renderDateChoices() { + const available = new Set(state.availability?.availableDates || []); + week.innerHTML = weekDates(state.source.lessonDate).map((date, index) => dateButton(date, DAY_LABELS[index], available)).join(''); + calendar.innerHTML = renderSemesterCalendar( + state.availability.semesterStartDate, + state.availability.semesterEndDate, + available, + state.targetDate + ); + } + + function dateButton(date, label, available) { + const selected = date === state.targetDate ? ' active' : ''; + const disabled = available.has(date) ? '' : ' disabled'; + return ` + + `; + } + + async function loadTimeSlots(preference) { + timeSelect.disabled = true; + timeSelect.innerHTML = ''; + state.timeSlots = await api.get( + `/api/admin/time-slots/effective?date=${encodeURIComponent(state.targetDate)}` + ); + const selected = pickMatchingTimeSlot( + state.timeSlots, + preference?.id, + preference?.startTime, + preference?.endTime + ); + timeSelect.innerHTML = '' + state.timeSlots.map(slot => + `` + ).join(''); + timeSelect.value = selected ? String(selected.id) : ''; + timeSelect.disabled = false; + } + + function renderSource() { + document.getElementById('schedule-override-before-title').textContent = + `${state.source.subjectName} · ${state.source.lessonTypeName}`; + document.getElementById('schedule-override-before-meta').textContent = [ + formatDate(state.source.lessonDate), + intervalLabel(state.source.startTime, state.source.endTime), + state.source.teacherName, + state.source.classroomName, + state.source.lessonFormat, + state.source.groupNames.join(', ') + ].filter(Boolean).join(' · '); + } + + function updateComparison() { + if (!state.source) return; + const selectedTime = state.timeSlots.find(slot => String(slot.id) === timeSelect.value); + document.getElementById('schedule-override-after-title').textContent = + `${state.source.subjectName} · ${state.source.lessonTypeName}`; + document.getElementById('schedule-override-after-meta').textContent = [ + formatDate(state.targetDate), + selectedTime ? intervalLabel(selectedTime.startTime, selectedTime.endTime) : 'Время не выбрано', + teacherName(teacherSelect.value), + classroomName(classroomSelect.value), + formatSelect.value, + state.source.groupNames.join(', ') + ].filter(Boolean).join(' · '); + } + + async function save(event) { + event.preventDefault(); + if (state.busy) return; + hideAlert('schedule-override-alert'); + const payload = buildPayload(); + if (!payload) return; + await mutate(async () => { + if (state.selectedOverride) { + await api.put(`/api/edu-office/schedule/overrides/${state.selectedOverride.id}`, payload); + } else { + await api.post('/api/edu-office/schedule/overrides', payload); + } + }); + } + + function buildPayload() { + if (!timeSelect.value) { + showAlert('schedule-override-alert', 'Выберите время занятия для выбранной даты', 'error'); + return null; + } + const dateChanged = state.targetDate !== state.source.lessonDate; + const timeChanged = String(timeSelect.value) !== String(state.source.timeSlotId); + const teacherChanged = String(teacherSelect.value) !== String(state.source.teacherId); + const classroomChanged = String(classroomSelect.value) !== String(state.source.classroomId); + const formatChanged = formatSelect.value !== state.source.lessonFormat; + const action = overrideActionForChanges({ + dateChanged, + timeChanged, + teacherChanged, + classroomChanged, + formatChanged + }); + if (!action) { + showAlert( + 'schedule-override-alert', + state.selectedOverride + ? 'Параметры совпадают с правилом. Используйте «Вернуть по правилу»' + : 'Измените дату, время, преподавателя, аудиторию или формат', + 'error' + ); + return null; + } + return { + baseRuleSlotId: state.source.baseRuleSlotId, + lessonDate: state.source.lessonDate, + targetLessonDate: dateChanged ? state.targetDate : null, + action, + newTimeSlotId: (dateChanged || timeChanged) ? Number(timeSelect.value) : null, + newTeacherId: teacherChanged ? Number(teacherSelect.value) : null, + newClassroomId: classroomChanged ? Number(classroomSelect.value) : null, + newLessonFormat: formatChanged ? formatSelect.value : null, + comment: commentInput.value.trim() || null + }; + } + + async function cancelLesson() { + if (state.busy || !state.source) return; + const payload = { + baseRuleSlotId: state.source.baseRuleSlotId, + lessonDate: state.source.lessonDate, + targetLessonDate: null, + action: 'CANCEL', + newTimeSlotId: null, + newTeacherId: null, + newClassroomId: null, + newLessonFormat: null, + comment: commentInput.value.trim() || null + }; + await mutate(async () => { + if (state.selectedOverride) { + await api.put(`/api/edu-office/schedule/overrides/${state.selectedOverride.id}`, payload); + } else { + await api.post('/api/edu-office/schedule/overrides', payload); + } + }); + } + + async function restoreRule() { + if (state.busy || !state.selectedOverride) return; + await mutate(() => api.delete(`/api/edu-office/schedule/overrides/${state.selectedOverride.id}`)); + } + + async function mutate(operation) { + setBusy(true); + hideAlert('schedule-override-alert'); + try { + await operation(); + await onChanged?.(); + state.selectedLesson = null; + state.selectedOverride = null; + state.source = null; + form.hidden = true; + empty.hidden = false; + empty.textContent = 'Выберите занятие в расписании или откройте его из реестра изменений.'; + openRegistry(); + } catch (error) { + showAlert('schedule-override-alert', error.message || 'Не удалось сохранить разовое изменение', 'error'); + } finally { + setBusy(false); + } + } + + function setBusy(busy) { + state.busy = busy; + saveButton.disabled = busy; + cancelButton.disabled = busy; + restoreButton.disabled = busy; + saveButton.textContent = busy ? 'Сохранение...' : 'Сохранить'; + } + + function renderRegistry() { + if (!registry) return; + if (!state.overrides.length) { + registry.innerHTML = '
За выбранный период разовых изменений нет.
'; + return; + } + registry.innerHTML = state.overrides.map(override => { + const target = override.targetLessonDate + ? ` → ${formatDate(override.targetLessonDate)}` + : ''; + const result = override.action === 'CANCEL' + ? 'Занятие отменено' + : [ + override.newTimeSlotId ? `слот ${override.newTimeSlotId}` : null, + teacherName(override.newTeacherId), + classroomName(override.newClassroomId), + override.newLessonFormat + ].filter(Boolean).join(' · '); + return ` +
+
+ ${escapeHtml(ACTION_LABELS[override.action] || override.action)} + +
+

${escapeHtml(override.subjectName || 'Занятие')}

+

${escapeHtml([ + override.lessonTypeName, + (override.groupNames || []).join(', '), + result || 'Параметры изменены' + ].filter(Boolean).join(' · '))}

+ ${override.comment ? `
${escapeHtml(override.comment)}
` : ''} + +
+ `; + }).join(''); + } + + function activateTab(tab) { + drawer.querySelectorAll('[data-override-tab]').forEach(button => { + button.classList.toggle('active', button.dataset.overrideTab === tab); + }); + drawer.querySelectorAll('[data-override-section]').forEach(section => { + section.hidden = section.dataset.overrideSection !== tab; + }); + } + + function open() { + drawer.hidden = false; + drawer.setAttribute('aria-hidden', 'false'); + document.body.classList.add('schedule-override-open'); + } + + function close() { + drawer.hidden = true; + drawer.setAttribute('aria-hidden', 'true'); + document.body.classList.remove('schedule-override-open'); + } + + function teacherName(id) { + if (id == null || id === '') return ''; + const teacher = (dictionaries.teachers || []).find(item => String(item.id) === String(id)); + return teacher?.fullName || teacher?.username || ''; + } + + function classroomName(id) { + if (id == null || id === '') return ''; + const classroom = (dictionaries.classrooms || []).find(item => String(item.id) === String(id)); + return classroom ? classroomOptionLabel(classroom) : ''; + } +} + +function renderSemesterCalendar(startDate, endDate, available, selectedDate) { + if (!startDate || !endDate) return ''; + const start = parseIsoDate(startDate); + const end = parseIsoDate(endDate); + const months = []; + for (let cursor = new Date(start.getFullYear(), start.getMonth(), 1); + cursor <= end; + cursor = new Date(cursor.getFullYear(), cursor.getMonth() + 1, 1)) { + months.push(renderMonth(cursor, startDate, endDate, available, selectedDate)); + } + return months.join(''); +} + +function renderMonth(month, semesterStart, semesterEnd, available, selectedDate) { + const year = month.getFullYear(); + const monthIndex = month.getMonth(); + const firstDay = new Date(year, monthIndex, 1).getDay() || 7; + const dayCount = new Date(year, monthIndex + 1, 0).getDate(); + const blanks = Array.from({ length: firstDay - 1 }, () => '').join(''); + const days = Array.from({ length: dayCount }, (_, index) => { + const date = toIsoDate(new Date(year, monthIndex, index + 1)); + const enabled = date >= semesterStart && date <= semesterEnd && available.has(date); + const active = date === selectedDate ? ' active' : ''; + return ``; + }).join(''); + return ` +
+

${MONTH_LABELS[monthIndex]} ${year}

+
+ ${DAY_LABELS.map(label => `${label}`).join('')} + ${blanks}${days} +
+
+ `; +} + +function timeSlotLabel(slot) { + const order = slot.orderNumber ? `${slot.orderNumber} пара · ` : ''; + return `${order}${intervalLabel(slot.startTime, slot.endTime)}`; +} + +function intervalLabel(start, end) { + return `${trimTime(start)}–${trimTime(end)}`; +} + +export function classroomOptionLabel(room) { + return room?.name || ''; +} + +function ensureSelectOption(select, value, label) { + if (value == null || value === '') return; + const exists = Array.from(select.options).some(option => String(option.value) === String(value)); + if (exists) return; + const option = document.createElement('option'); + option.value = String(value); + option.textContent = label; + select.append(option); +} + +function formatDate(value) { + if (!value) return '—'; + const [year, month, day] = String(value).split('-'); + return `${day}.${month}.${year}`; +} + +function formatDateShort(value) { + const [, month, day] = String(value).split('-'); + return `${day}.${month}`; +} + +function trimTime(value) { + return String(value || '').slice(0, 5); +} + +function parseIsoDate(value) { + const [year, month, day] = String(value).split('-').map(Number); + return new Date(year, month - 1, day); +} + +function addDays(date, days) { + const next = new Date(date); + next.setDate(next.getDate() + days); + return next; +} + +function toIsoDate(date) { + return [ + date.getFullYear(), + String(date.getMonth() + 1).padStart(2, '0'), + String(date.getDate()).padStart(2, '0') + ].join('-'); +} diff --git a/frontend/admin/js/views/schedule-view.js b/frontend/admin/js/views/schedule-view.js index 6ed0708..500b58f 100644 --- a/frontend/admin/js/views/schedule-view.js +++ b/frontend/admin/js/views/schedule-view.js @@ -1,5 +1,6 @@ import { api, getSession } from '../api.js'; import { escapeHtml, showAlert, hideAlert } from '../utils.js'; +import { canEditScheduleOverrides, createScheduleOverridePanel } from './schedule-override-panel.js'; const ROLE_DEPARTMENT = 'DEPARTMENT'; const TARGET_GROUPS = 'groups'; @@ -59,6 +60,7 @@ export async function initScheduleView() { const tables = document.getElementById('schedule-view-tables'); const entityFields = Array.from(document.querySelectorAll('[data-schedule-view-target-field]')); const departmentSelect = document.getElementById('schedule-view-department'); + const semesterSelect = document.getElementById('schedule-view-semester'); const state = { dictionaries: { @@ -71,8 +73,11 @@ export async function initScheduleView() { activeSectionIndex: 0, mobileDay: 1, range: null, - totalLessons: 0 + totalLessons: 0, + lessons: [], + overrides: [] }; + let overridePanel = createEmptyOverridePanel(); const mobileMedia = window.matchMedia(MOBILE_QUERY); setDefaultDate(dateInput); @@ -97,8 +102,22 @@ export async function initScheduleView() { updatePeriodLabel(); resetResults('Нажмите «Показать», чтобы обновить расписание'); }); + semesterSelect?.addEventListener('change', () => { + synchronizeDateWithSemester(); + updatePeriodLabel(); + resetResults('Нажмите «Показать», чтобы обновить расписание'); + }); resultPreviousButton?.addEventListener('click', () => moveResult(-1)); resultNextButton?.addEventListener('click', () => moveResult(1)); + tables?.addEventListener('click', event => { + const button = event.target.closest('[data-schedule-override-edit]'); + if (!button) return; + const lesson = state.lessons.find(item => + String(item.scheduleRuleSlotId) === button.dataset.baseRuleSlotId + && (item.originalLessonDate || item.date) === button.dataset.lessonDate + ); + if (lesson) overridePanel.openLesson(lesson); + }); if (typeof mobileMedia.addEventListener === 'function') { mobileMedia.addEventListener('change', renderActiveSection); } else if (typeof mobileMedia.addListener === 'function') { @@ -107,6 +126,13 @@ export async function initScheduleView() { try { state.dictionaries = await loadDictionaries(role, userDepartmentId); + selectCurrentSemester(); + overridePanel = createScheduleOverridePanel({ + role, + dictionaries: state.dictionaries, + getRange: () => state.range, + onChanged: loadData + }); configureDepartmentAccess(); updateEntityFieldVisibility(); await loadData(); @@ -192,7 +218,7 @@ export async function initScheduleView() { } const target = activeTarget(); - const range = twoWeekRange(dateInput.value); + const range = scheduleRangeForSemester(dateInput.value, selectedSemester()); const previousKey = state.sections[state.activeSectionIndex]?.key; state.range = range; updatePeriodLabel(range); @@ -213,7 +239,14 @@ export async function initScheduleView() { addOptional(params, 'parity', valueOf('schedule-view-parity')); try { - const lessons = await api.get(`/api/schedule/search?${params}`); + const [lessons, overrides] = await Promise.all([ + api.get(`/api/schedule/search?${params}`), + canEditScheduleOverrides(role) + ? api.get(`/api/edu-office/schedule/overrides?startDate=${range.startDate}&endDate=${range.endDate}`) + : Promise.resolve([]) + ]); + state.overrides = overrides; + overridePanel.setRegistry(overrides, range); renderLessons(lessons, range, target, previousKey); } catch (error) { const message = error.message || 'Ошибка загрузки расписания'; @@ -245,6 +278,7 @@ export async function initScheduleView() { } function renderLessons(lessons, range, target, previousKey) { + state.lessons = lessons; state.totalLessons = lessons.length; if (!lessons.length) { state.sections = []; @@ -581,6 +615,9 @@ export async function initScheduleView() { lesson.classroomId || lesson.classroomName || '', lesson.lessonTypeId || lesson.lessonTypeName || '', lesson.lessonFormat || '', + lesson.scheduleOverrideId || '', + lesson.overrideAction || '', + lesson.originalLessonDate || '', valueListSignature(lesson.groupIds, lesson.groupNames), valueListSignature(lesson.subgroupIds, lesson.subgroupNames) ].join(':'); @@ -672,19 +709,36 @@ export async function initScheduleView() { const weeksText = getLessonWeeksText(lesson); const weeksBadge = weeksText ? `${escapeHtml(weeksText)}` : ''; + const sourceDate = lesson.originalLessonDate || lesson.date; + const overrideBadge = lesson.scheduleOverrideId + ? 'Разовая правка' + : ''; + const editButton = canEditScheduleOverrides(role) && lesson.scheduleRuleSlotId && sourceDate + ? ` + + ` + : ''; return `
-
+
${escapeHtml(lesson.subjectName || 'Без дисциплины')} ${weeksBadge}
+ ${overrideBadge}
${escapeHtml((lesson.groupNames || []).join(', ') || 'Группа не указана')}
${subgroupText ? `
${escapeHtml(subgroupText)}
` : ''}
${escapeHtml(lesson.teacherName || 'Преподаватель не указан')}
${escapeHtml(lesson.classroomName || 'Аудитория не указана')}
${meta ? `
${escapeHtml(meta)}
` : ''} ${lesson.scheduleRuleSlotId ? `
ID слота: ${escapeHtml(lesson.scheduleRuleSlotId)}
` : ''} + ${editButton}
`; } @@ -699,6 +753,7 @@ export async function initScheduleView() { state.activeSectionIndex = 0; state.mobileDay = 1; state.totalLessons = 0; + state.lessons = []; renderResultNavigation(); tableTitle.textContent = 'Расписание'; tableCaption.textContent = message; @@ -714,7 +769,36 @@ export async function initScheduleView() { periodLabel.textContent = 'Период не выбран'; return; } - periodLabel.textContent = periodCaption(range || twoWeekRange(dateInput.value)); + periodLabel.textContent = periodCaption( + range || scheduleRangeForSemester(dateInput.value, selectedSemester()), + selectedSemester() + ); + } + + function selectedSemester() { + const semesterId = semesterSelect?.value; + if (!semesterId) return null; + return (state.dictionaries.semesters || []) + .find(semester => String(semester.id) === String(semesterId)) || null; + } + + function selectCurrentSemester() { + if (!semesterSelect) return; + const currentSemester = findSemesterForDate(state.dictionaries.semesters, dateInput.value); + semesterSelect.value = currentSemester ? String(currentSemester.id) : ''; + synchronizeDateWithSemester(); + updatePeriodLabel(); + } + + function synchronizeDateWithSemester() { + const semester = selectedSemester(); + if (!semester) { + dateInput.value = toIsoDate(new Date()); + return; + } + if (!dateWithinSemester(dateInput.value, semester)) { + dateInput.value = semester.startDate; + } } function groupNameById(id) { @@ -727,15 +811,23 @@ export async function initScheduleView() { } } +function createEmptyOverridePanel() { + return { + setRegistry() {}, + openLesson() {}, + openRegistry() {} + }; +} + async function loadDictionaries(role, userDepartmentId) { - const [groups, teachers, classrooms, departments, subjects, lessonTypes, academicYears] = await Promise.all([ + const [groups, teachers, classrooms, departments, subjects, lessonTypes, semesters] = await Promise.all([ api.get('/api/groups'), api.get('/api/users/teachers'), api.get('/api/classrooms'), api.get('/api/departments'), api.get('/api/subjects'), api.get('/api/lesson-types'), - api.get('/api/admin/calendar/years').catch(() => []) + api.get('/api/schedule/semesters') ]); const visibleGroups = role === ROLE_DEPARTMENT && userDepartmentId @@ -748,13 +840,14 @@ async function loadDictionaries(role, userDepartmentId) { fillSelect('schedule-view-department', departments, item => item.id, item => item.departmentName, 'Все кафедры'); fillSelect('schedule-view-subject', subjects, item => item.id, item => item.name, 'Все дисциплины'); fillSelect('schedule-view-lesson-type', lessonTypes, item => item.id, item => item.name, 'Все типы'); + fillSelect('schedule-view-semester', semesters, item => item.id, semesterOptionLabel, 'По текущей дате'); return { groups, teachers, classrooms, departments, - semesters: (academicYears || []).flatMap(year => year.semesters || []) + semesters: semesters || [] }; } @@ -975,8 +1068,43 @@ function mobileDayCaption(datesByParity) { return 'Нечётная / Чётная'; } -function periodCaption(range) { - return 'Учебное расписание'; +function periodCaption(range, semester = null) { + if (!range) return 'Учебное расписание'; + const rangeLabel = `${formatDate(range.startDate)} — ${formatDate(range.endDate)}`; + return semester ? `${semesterOptionLabel(semester)} · ${rangeLabel}` : rangeLabel; +} + +export function semesterOptionLabel(semester) { + const type = String(semester?.semesterType || '').toLowerCase(); + const typeLabel = type === 'autumn' + ? 'Осенний семестр' + : (type === 'spring' ? 'Весенний семестр' : 'Семестр'); + const academicYear = semester?.academicYearTitle || 'Учебный год'; + const dates = semester?.startDate && semester?.endDate + ? ` · ${formatDate(semester.startDate)} — ${formatDate(semester.endDate)}` + : ''; + return `${academicYear} · ${typeLabel}${dates}`; +} + +export function findSemesterForDate(semesters, date) { + return (semesters || []).find(semester => dateWithinSemester(date, semester)) || null; +} + +export function scheduleRangeForSemester(selectedDate, semester) { + const anchorDate = semester && !dateWithinSemester(selectedDate, semester) + ? semester.startDate + : selectedDate; + return twoWeekRange(anchorDate); +} + +function dateWithinSemester(date, semester) { + return Boolean( + date + && semester?.startDate + && semester?.endDate + && date >= semester.startDate + && date <= semester.endDate + ); } function lessonSlotKey(lesson) { diff --git a/frontend/admin/views/schedule-view.html b/frontend/admin/views/schedule-view.html index 46b9744..374117e 100644 --- a/frontend/admin/views/schedule-view.html +++ b/frontend/admin/views/schedule-view.html @@ -47,12 +47,18 @@
- +
Дополнительные фильтры
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ + + +
+ + + +
+ + + + +
+ +
diff --git a/frontend/tests/schedule-overrides.test.mjs b/frontend/tests/schedule-overrides.test.mjs new file mode 100644 index 0000000..ea5480e --- /dev/null +++ b/frontend/tests/schedule-overrides.test.mjs @@ -0,0 +1,64 @@ +import assert from 'node:assert/strict'; +import { readFile } from 'node:fs/promises'; +import test from 'node:test'; + +import { + canEditScheduleOverrides, + classroomOptionLabel, + overrideActionForChanges, + pickMatchingTimeSlot, + weekDates +} from '../admin/js/views/schedule-override-panel.js'; + +test('редактировать разовые изменения могут только администратор и учебный отдел', () => { + assert.equal(canEditScheduleOverrides('ADMIN'), true); + assert.equal(canEditScheduleOverrides('EDUCATION_OFFICE'), true); + assert.equal(canEditScheduleOverrides('DEPARTMENT'), false); + assert.equal(canEditScheduleOverrides('SCHEDULE_VIEWER'), false); +}); + +test('дата или время формируют MOVE, а замена ресурсов формирует REPLACE', () => { + assert.equal(overrideActionForChanges({ dateChanged: true }), 'MOVE'); + assert.equal(overrideActionForChanges({ timeChanged: true, teacherChanged: true }), 'MOVE'); + assert.equal(overrideActionForChanges({ classroomChanged: true }), 'REPLACE'); + assert.equal(overrideActionForChanges({ teacherChanged: true, formatChanged: true }), 'REPLACE'); + assert.equal(overrideActionForChanges({}), null); +}); + +test('недельный выбор всегда показывает понедельник-воскресенье исходной недели', () => { + assert.deepEqual(weekDates('2026-09-03'), [ + '2026-08-31', + '2026-09-01', + '2026-09-02', + '2026-09-03', + '2026-09-04', + '2026-09-05', + '2026-09-06' + ]); +}); + +test('время выбирается сначала по ID, затем по совпадающему интервалу', () => { + const slots = [ + { id: 10, startTime: '09:00:00', endTime: '10:30:00' }, + { id: 20, startTime: '10:40:00', endTime: '12:10:00' } + ]; + + assert.equal(pickMatchingTimeSlot(slots, 20, '09:00', '10:30').id, 20); + assert.equal(pickMatchingTimeSlot(slots, 99, '09:00', '10:30').id, 10); + assert.equal(pickMatchingTimeSlot(slots, 99, '12:20', '13:50'), null); +}); + +test('в селекте боковой панели аудитория показывается только своим названием', () => { + assert.equal(classroomOptionLabel({ + name: '101', + building: 'Главный корпус', + floor: 1 + }), '101'); +}); + +test('боковая панель и слой под ней применяют backdrop blur', async () => { + const css = await readFile(new URL('../admin/css/auditorium-workload.css', import.meta.url), 'utf8'); + + assert.match(css, /\.schedule-override-backdrop\s*\{[^}]*backdrop-filter:\s*blur\(7px\)/s); + assert.match(css, /\.schedule-override-panel\s*\{[^}]*background:\s*color-mix\(in srgb, var\(--bg-card\) 88%, transparent\)[^}]*backdrop-filter:\s*blur\(24px\)/s); +}); diff --git a/frontend/tests/schedule-view-semesters.test.mjs b/frontend/tests/schedule-view-semesters.test.mjs new file mode 100644 index 0000000..6634822 --- /dev/null +++ b/frontend/tests/schedule-view-semesters.test.mjs @@ -0,0 +1,53 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; + +import { + findSemesterForDate, + scheduleRangeForSemester, + semesterOptionLabel +} from '../admin/js/views/schedule-view.js'; + +const autumnSemester = { + id: 11, + academicYearTitle: '2025/2026', + semesterType: 'autumn', + startDate: '2025-09-01', + endDate: '2026-01-31' +}; + +const springSemester = { + id: 12, + academicYearTitle: '2025/2026', + semesterType: 'spring', + startDate: '2026-02-09', + endDate: '2026-06-30' +}; + +test('семестр определяется по выбранной дате включительно с границами', () => { + const semesters = [autumnSemester, springSemester]; + + assert.equal(findSemesterForDate(semesters, '2025-09-01')?.id, 11); + assert.equal(findSemesterForDate(semesters, '2026-06-30')?.id, 12); + assert.equal(findSemesterForDate(semesters, '2026-07-01'), null); +}); + +test('при выборе другого семестра диапазон начинается с его первой учебной недели', () => { + assert.deepEqual(scheduleRangeForSemester('2026-07-21', autumnSemester), { + startDate: '2025-09-01', + endDate: '2025-09-14' + }); +}); + +test('внутри выбранного семестра сохраняется текущая двухнедельная точка просмотра', () => { + assert.deepEqual(scheduleRangeForSemester('2026-03-18', springSemester), { + startDate: '2026-03-16', + endDate: '2026-03-29' + }); +}); + +test('название семестра содержит учебный год, тип и границы', () => { + assert.equal( + semesterOptionLabel(springSemester), + '2025/2026 · Весенний семестр · 09.02.2026 — 30.06.2026' + ); +}); diff --git a/graphify-out/.graphify_learning.json b/graphify-out/.graphify_learning.json index ac73e7b..2fa3308 100644 --- a/graphify-out/.graphify_learning.json +++ b/graphify-out/.graphify_learning.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-07-12T21:52:36.954007+00:00", + "generated_at": "2026-07-21T20:46:50.611104+00:00", "nodes": { "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor": { "code_fingerprint": "70b01b3fa22e058ee997250c52cc0affee54ab37aa5f8cc7eb74411487f1bbbf", @@ -22,7 +22,7 @@ "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" } ], - "score": 2.75167804, + "score": 2.237417033, "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "status": "preferred", "uses": 3 @@ -38,7 +38,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.977626859, + "score": 0.794918212, "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "status": "tentative", "uses": 1 @@ -54,11 +54,27 @@ "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" } ], - "score": 0.822552197, + "score": 0.668825448, "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "status": "tentative", "uses": 1 }, + "backend_src_main_java_com_magistr_app_config_datainitializer_datainitializer": { + "code_fingerprint": "", + "label": "DataInitializer", + "last": "2026-07-12T22:20:21.382611+00:00", + "provenance": [ + { + "date": "2026-07-12T22:20:21.382611+00:00", + "outcome": "useful", + "q": "Как безопасно обновлять tenant DataSource без потери рабочего подключения?" + } + ], + "score": 0.813472031, + "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", + "status": "tentative", + "uses": 1 + }, "backend_src_main_java_com_magistr_app_config_tenant_configmapupdater_configmapupdater": { "code_fingerprint": "", "label": "ConfigMapUpdater", @@ -70,45 +86,81 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 0.951498983, + "score": 0.773673374, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "status": "tentative", "uses": 1 }, - "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher": { - "code_fingerprint": "83dcf36dd5d7c969fa4d454909cc245145949738b462f569eb1367663e33492d", - "label": "TenantConfigWatcher", - "last": "2026-07-10T18:14:03.213067+00:00", + "backend_src_main_java_com_magistr_app_config_tenant_tenantconfig_tenantconfig": { + "code_fingerprint": "22d2e92c23a81959e7c20ad48ff92fdea8fb2bc37b0dda0dfd33d86eb0267e85", + "label": "TenantConfig", + "last": "2026-07-12T22:09:47.294749+00:00", "provenance": [ + { + "date": "2026-07-12T22:09:47.294749+00:00", + "outcome": "useful", + "q": "Как безопасно заменить tenant DataSource без потери рабочего подключения?" + } + ], + "score": 0.813334106, + "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", + "status": "tentative", + "uses": 1 + }, + "backend_src_main_java_com_magistr_app_config_tenant_tenantconfigwatcher_tenantconfigwatcher": { + "code_fingerprint": "875d6a84e8dc1b8ada56a152aa08c9bfb54792851692909044ffe1477c2e78c8", + "label": "TenantConfigWatcher", + "last": "2026-07-12T22:20:21.382611+00:00", + "provenance": [ + { + "date": "2026-07-12T22:20:21.382611+00:00", + "outcome": "useful", + "q": "Как безопасно обновлять tenant DataSource без потери рабочего подключения?" + }, + { + "date": "2026-07-12T22:09:47.294749+00:00", + "outcome": "useful", + "q": "Как безопасно заменить tenant DataSource без потери рабочего подключения?" + }, { "date": "2026-07-10T18:14:03.213067+00:00", "outcome": "useful", "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 0.951498983, + "score": 2.400479511, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", - "status": "tentative", - "uses": 1 + "status": "preferred", + "uses": 3 }, "backend_src_main_java_com_magistr_app_config_tenant_tenantroutingdatasource_tenantroutingdatasource": { - "code_fingerprint": "2efea217f4236134681ee86d870bd0d5ffcd653e312637e115b50768ada975f0", + "code_fingerprint": "4dbf5864ca471e92d143acb834ed61b9eb23e2cf2ebc3ab9ab0757eb2439e727", "label": "TenantRoutingDataSource", - "last": "2026-07-11T22:22:23.259230+00:00", + "last": "2026-07-12T22:20:21.382611+00:00", "provenance": [ + { + "date": "2026-07-12T22:20:21.382611+00:00", + "outcome": "useful", + "q": "Как безопасно обновлять tenant DataSource без потери рабочего подключения?" + }, + { + "date": "2026-07-12T22:09:47.294749+00:00", + "outcome": "useful", + "q": "Как безопасно заменить tenant DataSource без потери рабочего подключения?" + }, { "date": "2026-07-11T22:22:23.259230+00:00", "outcome": "useful", "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.977626859, + "score": 2.421724349, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", - "status": "tentative", - "uses": 1 + "status": "preferred", + "uses": 3 }, "backend_src_main_java_com_magistr_app_controller_databasecontroller": { - "code_fingerprint": "d4e6c182c5a40917feb56354fde6f6c9764d95fd79dc72d4bc760b1fd2d24cdc", + "code_fingerprint": "e888a1e23f2d0ae6993fc2d767f6a4ef026c935ff2300d7d0c91bb805c22017f", "label": "DatabaseController.java", "last": "2026-07-11T22:22:23.259230+00:00", "provenance": [ @@ -118,13 +170,34 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.977626859, + "score": 0.794918212, "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "status": "tentative", "uses": 1 }, + "backend_src_main_java_com_magistr_app_controller_databasecontroller_databasecontroller": { + "code_fingerprint": "e888a1e23f2d0ae6993fc2d767f6a4ef026c935ff2300d7d0c91bb805c22017f", + "label": "DatabaseController", + "last": "2026-07-12T22:20:21.382611+00:00", + "provenance": [ + { + "date": "2026-07-12T22:20:21.382611+00:00", + "outcome": "useful", + "q": "Как безопасно обновлять tenant DataSource без потери рабочего подключения?" + }, + { + "date": "2026-07-12T22:09:47.294749+00:00", + "outcome": "useful", + "q": "Как безопасно заменить tenant DataSource без потери рабочего подключения?" + } + ], + "score": 1.626806137, + "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", + "status": "preferred", + "uses": 2 + }, "backend_src_main_java_com_magistr_app_controller_globalexceptionhandler_globalexceptionhandler": { - "code_fingerprint": "3fc674c29337df18a9494ada4a6a150b522f6f5fc1f044d003c33eb4272e380d", + "code_fingerprint": "a637ea110ec1c5fef0c0a1d88cccbc54d56b3b6ca66a6c1d3659871bd5ff7f4e", "label": "GlobalExceptionHandler", "last": "2026-07-10T18:14:03.213067+00:00", "provenance": [ @@ -134,29 +207,34 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 0.951498983, + "score": 0.773673374, "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "status": "tentative", "uses": 1 }, "backend_src_main_java_com_magistr_app_controller_schedulecontroller": { - "code_fingerprint": "74f022a62ea5440fb0c4c66b86df005e5e77f7f1fda8a4b718d95bd55104ca13", + "code_fingerprint": "40af5947a24d994d92566c135abe5080eec04f5f266b40e04abfa3c5fac18a84", "label": "ScheduleController.java", - "last": "2026-07-11T22:22:23.259230+00:00", + "last": "2026-07-21T19:52:13.631700+00:00", "provenance": [ + { + "date": "2026-07-21T19:52:13.631700+00:00", + "outcome": "useful", + "q": "в дополнительные фильры просмотра расписаний нужно добавить выбор семестра" + }, { "date": "2026-07-11T22:22:23.259230+00:00", "outcome": "useful", "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.977626859, + "score": 1.794042273, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", - "status": "tentative", - "uses": 1 + "status": "preferred", + "uses": 2 }, "backend_src_main_java_com_magistr_app_controller_scheduleoverridecontroller_scheduleoverridecontroller": { - "code_fingerprint": "b9f25c272cab98280e15616873c10e65380ba04b5f3dc4cbfa50f2c16b5429f1", + "code_fingerprint": "91be9aa1507e774d0168c858ad5cde838f8d6650e2169fae81cc1d551cbc5ff9", "label": "ScheduleOverrideController", "last": "2026-07-12T14:52:07.844079+00:00", "provenance": [ @@ -166,7 +244,7 @@ "q": "Как безопасно валидировать и сохранять точечные изменения расписания?" } ], - "score": 0.993275993, + "score": 0.807642679, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "status": "tentative", "uses": 1 @@ -187,7 +265,7 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 1.951435101, + "score": 1.586731467, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "status": "preferred", "uses": 2 @@ -208,7 +286,7 @@ "q": "Корректны ли inferred-связи вокруг ScheduleRule?" } ], - "score": 1.823406413, + "score": 1.482630056, "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "status": "preferred", "uses": 2 @@ -224,13 +302,29 @@ "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" } ], - "score": 0.999936118, + "score": 0.813058094, "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "status": "tentative", "uses": 1 }, + "backend_src_main_java_com_magistr_app_model_semester_semester": { + "code_fingerprint": "52546b552fff16ab841a63ea80fb806f6cc32edc0615ec53b3c002543d692f24", + "label": "Semester", + "last": "2026-07-21T19:52:13.631700+00:00", + "provenance": [ + { + "date": "2026-07-21T19:52:13.631700+00:00", + "outcome": "useful", + "q": "в дополнительные фильры просмотра расписаний нужно добавить выбор семестра" + } + ], + "score": 0.999124061, + "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "status": "tentative", + "uses": 1 + }, "backend_src_main_java_com_magistr_app_repository_semesterrepository_semesterrepository": { - "code_fingerprint": "8a39b28d2b7d0d2ca60b188a5c9b97c71187b5845dd8bdc85206f117b9d4984b", + "code_fingerprint": "2b869d2e676e50879b467e36cdc45982b68b323942c51de567c347fe9bf1fd10", "label": "SemesterRepository", "last": "2026-07-12T21:48:38.060218+00:00", "provenance": [ @@ -240,26 +334,31 @@ "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" } ], - "score": 0.999936118, + "score": 0.813058094, "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "status": "tentative", "uses": 1 }, "backend_src_main_java_com_magistr_app_service_schedulequeryservice_schedulequeryservice": { - "code_fingerprint": "47d0183b1249d194c9825046e0942a1867ad5c781ed90f376b975095e8807f68", + "code_fingerprint": "96b20e57f1e9d75f8f148a809e40d5ad98038423922f21c1f2c080bca6f76926", "label": "ScheduleQueryService", - "last": "2026-07-12T14:52:07.844079+00:00", + "last": "2026-07-21T19:52:13.631700+00:00", "provenance": [ + { + "date": "2026-07-21T19:52:13.631700+00:00", + "outcome": "useful", + "q": "в дополнительные фильры просмотра расписаний нужно добавить выбор семестра" + }, { "date": "2026-07-12T14:52:07.844079+00:00", "outcome": "useful", "q": "Как безопасно валидировать и сохранять точечные изменения расписания?" } ], - "score": 0.993275993, + "score": 1.80676674, "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", - "status": "tentative", - "uses": 1 + "status": "preferred", + "uses": 2 }, "backend_src_test_java_com_magistr_app_model_scheduleruletest_scheduleruletest": { "code_fingerprint": "73cb9594bd5dc29ba9d9bde11e860d2c182b205b36062df87a8a8783611ffe79", @@ -272,13 +371,13 @@ "q": "Корректны ли inferred-связи вокруг ScheduleRule?" } ], - "score": 0.823470295, + "score": 0.669571962, "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "status": "tentative", "uses": 1 }, "compose_backend_service": { - "code_fingerprint": "a175ccc6d907386f120574edb6296a6af416da683b869c7da71f60835f2daaa6", + "code_fingerprint": "944ed05aa3bb66491e0622baa9659fc2db3115c79076325ebe243aeb84ca09f9", "label": "Backend-сервис Docker Compose", "last": "2026-07-11T22:22:23.259230+00:00", "provenance": [ @@ -288,7 +387,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.977626859, + "score": 0.794918212, "source_file": "compose.yaml", "status": "tentative", "uses": 1 diff --git a/graphify-out/memory/query_20260721_195213_в_дополнительные_фильры_просмотра_расписаний_нужно.md b/graphify-out/memory/query_20260721_195213_в_дополнительные_фильры_просмотра_расписаний_нужно.md new file mode 100644 index 0000000..e4db140 --- /dev/null +++ b/graphify-out/memory/query_20260721_195213_в_дополнительные_фильры_просмотра_расписаний_нужно.md @@ -0,0 +1,24 @@ +--- +type: "query" +date: "2026-07-21T19:52:13.631700+00:00" +question: "в дополнительные фильры просмотра расписаний нужно добавить выбор семестра" +contributor: "graphify" +outcome: "useful" +source_nodes: ["Semester", "ScheduleController.java", "ScheduleQueryService"] +--- + +# Q: в дополнительные фильры просмотра расписаний нужно добавить выбор семестра + +## Answer + +Expanded from original query via graph vocab: schedule, semester, search, view, frontend, period, academic, calendar, admin. Дополнительные фильтры находятся в schedule-view; список семестров предоставлен через доступный ролям просмотра endpoint ScheduleController, а frontend переводит выбранный семестр в двухнедельный диапазон без запроса всего семестра. + +## Outcome + +- Signal: useful + +## Source Nodes + +- Semester +- ScheduleController.java +- ScheduleQueryService \ No newline at end of file diff --git a/graphify-out/memory/query_20260721_204948_почему_в_выборе_аудитории_показаны_корпус_и_этаж.md b/graphify-out/memory/query_20260721_204948_почему_в_выборе_аудитории_показаны_корпус_и_этаж.md new file mode 100644 index 0000000..b790382 --- /dev/null +++ b/graphify-out/memory/query_20260721_204948_почему_в_выборе_аудитории_показаны_корпус_и_этаж.md @@ -0,0 +1,23 @@ +--- +type: "explain" +date: "2026-07-21T20:49:48.084227+00:00" +question: "Почему в выборе аудитории показаны корпус и этаж?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["Classroom", "ClassroomController.java"] +--- + +# Q: Почему в выборе аудитории показаны корпус и этаж? + +## Answer + +Expanded from graph vocab: classroom, room, building, floor, name. Source inspection confirmed that Classroom has nullable building and floor fields, V1 creates matching columns, and ClassroomResponse returns them. The side panel loads rooms from /api/classrooms; its label formatter was the component that appended building and floor. The formatter now displays only Classroom.name. + +## Outcome + +- Signal: useful + +## Source Nodes + +- Classroom +- ClassroomController.java \ No newline at end of file diff --git a/graphify-out/reflections/LESSONS.md b/graphify-out/reflections/LESSONS.md index a1af700..4a9c60b 100644 --- a/graphify-out/reflections/LESSONS.md +++ b/graphify-out/reflections/LESSONS.md @@ -1,34 +1,38 @@ # Lessons -_Auto-generated by `graphify reflect` from 7 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ +_Auto-generated by `graphify reflect` from 10 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ ## Summary -- 6 useful · 1 dead ends · 0 corrected · 0 unmarked +- 9 useful · 1 dead ends · 0 corrected · 0 unmarked ## Lessons **Preferred sources** — corroborated by ≥2 useful results; start here. +- `TenantRoutingDataSource` (3× useful) +- `TenantConfigWatcher` (3× useful) - `AuthorizationInterceptor` (3× useful) +- `ScheduleQueryService` (2× useful) +- `ScheduleController.java` (2× useful) +- `DatabaseController` (2× useful) - `ScheduleGeneratorService` (2× useful) - `ScheduleRuleAdminController` (2× useful) - `ScheduleRule` (2× useful) **Tentative** — useful in fewer than 2 results; verify before relying. +- `Semester` (1× useful) +- `DataInitializer` (1× useful) +- `TenantConfig` (1× useful) - `ScheduleRuleSlot` (1× useful) - `SemesterRepository` (1× useful) - `ScheduleOverrideController` (1× useful) -- `ScheduleQueryService` (1× useful) - `Backend-сервис Docker Compose` (1× useful) - `DatabaseController.java` (1× useful) - `JwtTokenService` (1× useful) -- `ScheduleController.java` (1× useful) -- `TenantRoutingDataSource` (1× useful) - `ConfigMapUpdater` (1× useful) - `GlobalExceptionHandler` (1× useful) -- `TenantConfigWatcher` (1× useful) - `ScheduleRuleTest` (1× useful) - `RequireRoles` (1× useful) From 60c8aa31ac2efe2e36f28f879da4c0c0173afb01 Mon Sep 17 00:00:00 2001 From: Zuev Date: Mon, 27 Jul 2026 00:31:05 +0300 Subject: [PATCH 11/14] =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- graphify-out/.graphify_learning.json | 76 +++++++++++++------ ...поменять_название_сервиса__придумай_что_то_к.md | 26 +++++++ graphify-out/reflections/LESSONS.md | 6 +- 3 files changed, 84 insertions(+), 24 deletions(-) create mode 100644 graphify-out/memory/query_20260722_210957_хотим_поменять_название_сервиса__придумай_что_то_к.md diff --git a/graphify-out/.graphify_learning.json b/graphify-out/.graphify_learning.json index 2fa3308..96c0d00 100644 --- a/graphify-out/.graphify_learning.json +++ b/graphify-out/.graphify_learning.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-07-21T20:46:50.611104+00:00", + "generated_at": "2026-07-22T21:09:28.978295+00:00", "nodes": { "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor": { "code_fingerprint": "70b01b3fa22e058ee997250c52cc0affee54ab37aa5f8cc7eb74411487f1bbbf", @@ -22,7 +22,7 @@ "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" } ], - "score": 2.237417033, + "score": 2.185520319, "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "status": "preferred", "uses": 3 @@ -38,7 +38,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.794918212, + "score": 0.776480146, "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "status": "tentative", "uses": 1 @@ -54,7 +54,7 @@ "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" } ], - "score": 0.668825448, + "score": 0.653312094, "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "status": "tentative", "uses": 1 @@ -70,7 +70,7 @@ "q": "Как безопасно обновлять tenant DataSource без потери рабочего подключения?" } ], - "score": 0.813472031, + "score": 0.794603611, "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "status": "tentative", "uses": 1 @@ -86,7 +86,7 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 0.773673374, + "score": 0.75572808, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "status": "tentative", "uses": 1 @@ -102,7 +102,7 @@ "q": "Как безопасно заменить tenant DataSource без потери рабочего подключения?" } ], - "score": 0.813334106, + "score": 0.794468884, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "status": "tentative", "uses": 1 @@ -128,7 +128,7 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 2.400479511, + "score": 2.344800575, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "status": "preferred", "uses": 3 @@ -154,11 +154,27 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 2.421724349, + "score": 2.365552641, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "status": "preferred", "uses": 3 }, + "backend_src_main_java_com_magistr_app_controller_classroomcontroller": { + "code_fingerprint": "a768ef91dfe89f82197f53d85b348187a340c3dc8043bf009fa2f08418fabcba", + "label": "ClassroomController.java", + "last": "2026-07-21T20:49:48.084227+00:00", + "provenance": [ + { + "date": "2026-07-21T20:49:48.084227+00:00", + "outcome": "useful", + "q": "Почему в выборе аудитории показаны корпус и этаж?" + } + ], + "score": 0.976851438, + "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", + "status": "tentative", + "uses": 1 + }, "backend_src_main_java_com_magistr_app_controller_databasecontroller": { "code_fingerprint": "e888a1e23f2d0ae6993fc2d767f6a4ef026c935ff2300d7d0c91bb805c22017f", "label": "DatabaseController.java", @@ -170,7 +186,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.794918212, + "score": 0.776480146, "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "status": "tentative", "uses": 1 @@ -191,7 +207,7 @@ "q": "Как безопасно заменить tenant DataSource без потери рабочего подключения?" } ], - "score": 1.626806137, + "score": 1.589072495, "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "status": "preferred", "uses": 2 @@ -207,7 +223,7 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 0.773673374, + "score": 0.75572808, "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "status": "tentative", "uses": 1 @@ -228,7 +244,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 1.794042273, + "score": 1.752429602, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "status": "preferred", "uses": 2 @@ -244,7 +260,7 @@ "q": "Как безопасно валидировать и сохранять точечные изменения расписания?" } ], - "score": 0.807642679, + "score": 0.78890947, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "status": "tentative", "uses": 1 @@ -265,11 +281,27 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 1.586731467, + "score": 1.549927354, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "status": "preferred", "uses": 2 }, + "backend_src_main_java_com_magistr_app_model_classroom_classroom": { + "code_fingerprint": "5614d83b8b7e20fd2b76271b28a8ef11ffc137808ec2d7ed7cd23e42e0ab93ec", + "label": "Classroom", + "last": "2026-07-21T20:49:48.084227+00:00", + "provenance": [ + { + "date": "2026-07-21T20:49:48.084227+00:00", + "outcome": "useful", + "q": "Почему в выборе аудитории показаны корпус и этаж?" + } + ], + "score": 0.976851438, + "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", + "status": "tentative", + "uses": 1 + }, "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule": { "code_fingerprint": "692d61c1bfd5b46f5865174dde8cf2d962d2ccd124b5e4320e2ba8535bb29605", "label": "ScheduleRule", @@ -286,7 +318,7 @@ "q": "Корректны ли inferred-связи вокруг ScheduleRule?" } ], - "score": 1.482630056, + "score": 1.448240567, "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "status": "preferred", "uses": 2 @@ -302,7 +334,7 @@ "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" } ], - "score": 0.813058094, + "score": 0.794199275, "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "status": "tentative", "uses": 1 @@ -318,7 +350,7 @@ "q": "в дополнительные фильры просмотра расписаний нужно добавить выбор семестра" } ], - "score": 0.999124061, + "score": 0.975949456, "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", "status": "tentative", "uses": 1 @@ -334,7 +366,7 @@ "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" } ], - "score": 0.813058094, + "score": 0.794199275, "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "status": "tentative", "uses": 1 @@ -355,7 +387,7 @@ "q": "Как безопасно валидировать и сохранять точечные изменения расписания?" } ], - "score": 1.80676674, + "score": 1.764858926, "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "status": "preferred", "uses": 2 @@ -371,7 +403,7 @@ "q": "Корректны ли inferred-связи вокруг ScheduleRule?" } ], - "score": 0.669571962, + "score": 0.654041293, "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "status": "tentative", "uses": 1 @@ -387,7 +419,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.794918212, + "score": 0.776480146, "source_file": "compose.yaml", "status": "tentative", "uses": 1 diff --git a/graphify-out/memory/query_20260722_210957_хотим_поменять_название_сервиса__придумай_что_то_к.md b/graphify-out/memory/query_20260722_210957_хотим_поменять_название_сервиса__придумай_что_то_к.md new file mode 100644 index 0000000..ddb757b --- /dev/null +++ b/graphify-out/memory/query_20260722_210957_хотим_поменять_название_сервиса__придумай_что_то_к.md @@ -0,0 +1,26 @@ +--- +type: "query" +date: "2026-07-22T21:09:57.015227+00:00" +question: "хотим поменять название сервиса, придумай что-то короткое одним словом подходящее по смыслу" +contributor: "graphify" +outcome: "useful" +source_nodes: ["ScheduleGeneratorService", "AcademicCalendar", "Semester", "Department", "StudentGroup"] +--- + +# Q: хотим поменять название сервиса, придумай что-то короткое одним словом подходящее по смыслу + +## Answer + +Expanded from original query via vocab: [schedule, calendar, lesson, university, student, teacher, department, semester, slot, расписание]. Рекомендация: Такт. Короткое однословное имя, передающее согласованный ритм учебного процесса и расписания. Альтернативы: Пара, Сетка, Лад, Поток, Свод. + +## Outcome + +- Signal: useful + +## Source Nodes + +- ScheduleGeneratorService +- AcademicCalendar +- Semester +- Department +- StudentGroup \ No newline at end of file diff --git a/graphify-out/reflections/LESSONS.md b/graphify-out/reflections/LESSONS.md index 4a9c60b..c9f756e 100644 --- a/graphify-out/reflections/LESSONS.md +++ b/graphify-out/reflections/LESSONS.md @@ -1,10 +1,10 @@ # Lessons -_Auto-generated by `graphify reflect` from 10 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ +_Auto-generated by `graphify reflect` from 11 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ ## Summary -- 9 useful · 1 dead ends · 0 corrected · 0 unmarked +- 10 useful · 1 dead ends · 0 corrected · 0 unmarked ## Lessons @@ -22,6 +22,8 @@ _Auto-generated by `graphify reflect` from 10 session memories in graphify-out/m **Tentative** — useful in fewer than 2 results; verify before relying. +- `Classroom` (1× useful) +- `ClassroomController.java` (1× useful) - `Semester` (1× useful) - `DataInitializer` (1× useful) - `TenantConfig` (1× useful) From 7e29c53ce92055d2be61aa5f5b24f4830a4bd2d0 Mon Sep 17 00:00:00 2001 From: dipatrik10 Date: Mon, 27 Jul 2026 00:33:16 +0300 Subject: [PATCH 12/14] =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B8=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 37 --- .../service/AcademicCalendarGridService.java | 3 +- ...lign_academic_calendar_weeks_to_monday.sql | 23 ++ ...darWeekNumberMigrationIntegrationTest.java | 218 ++++++++++++++++++ .../AcademicCalendarGridServiceTest.java | 45 +++- docs/ACADEMIC_CALENDAR.md | 2 +- docs/API.md | 7 +- docs/BUSINESS_LOGIC.md | 5 +- docs/DATABASE.md | 11 +- docs/FRONTEND.md | 10 +- frontend/admin/css/components.css | 4 +- frontend/admin/js/date-input.js | 180 +++++++++++++++ .../admin/js/views/academic-calendar-grid.js | 39 ++++ .../admin/js/views/academic-calendar-title.js | 21 ++ frontend/admin/js/views/academic-calendar.js | 160 ++++++++++--- frontend/admin/js/views/groups.js | 12 +- frontend/admin/views/academic-calendar.html | 16 +- .../tests/academic-calendar-grid.test.mjs | 29 +++ .../tests/academic-calendar-title.test.mjs | 31 +++ .../tests/academic-calendar-tooltip.test.mjs | 37 +++ frontend/tests/date-input.test.mjs | 91 ++++++++ 21 files changed, 890 insertions(+), 91 deletions(-) delete mode 100644 .env.example create mode 100644 backend/src/main/resources/db/migration/V2__align_academic_calendar_weeks_to_monday.sql create mode 100644 backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberMigrationIntegrationTest.java create mode 100644 frontend/admin/js/date-input.js create mode 100644 frontend/admin/js/views/academic-calendar-grid.js create mode 100644 frontend/admin/js/views/academic-calendar-title.js create mode 100644 frontend/tests/academic-calendar-grid.test.mjs create mode 100644 frontend/tests/academic-calendar-title.test.mjs create mode 100644 frontend/tests/academic-calendar-tooltip.test.mjs create mode 100644 frontend/tests/date-input.test.mjs diff --git a/.env.example b/.env.example deleted file mode 100644 index 24fdebd..0000000 --- a/.env.example +++ /dev/null @@ -1,37 +0,0 @@ -# Скопируйте файл в .env и замените пустые значения локальными секретами. -POSTGRES_USER=myuser -POSTGRES_PASSWORD=supersecretpassword#<---- -POSTGRES_DB=app_db - -# Сгенерировать: openssl rand -base64 48 -JWT_SECRET=#<---- -JWT_ACCESS_TOKEN_TTL=15m -JWT_REFRESH_TOKEN_TTL=7d -JWT_REFRESH_COOKIE_NAME=magistr_refresh -JWT_REFRESH_COOKIE_SECURE=false -JWT_REFRESH_CLEANUP_ENABLED=true -JWT_REFRESH_CLEANUP_RETENTION=30d -JWT_REFRESH_CLEANUP_BATCH_SIZE=500 -JWT_REFRESH_CLEANUP_MAX_BATCHES=20 -JWT_REFRESH_CLEANUP_INTERVAL_MS=3600000 -JWT_REFRESH_CLEANUP_INITIAL_DELAY_MS=60000 - -# Защита входа. Указывайте только адреса/сети фактических reverse proxy. -LOGIN_RATE_MAX_FAILURES=5 -LOGIN_RATE_ATTEMPT_WINDOW=15m -LOGIN_RATE_BASE_BLOCK_DURATION=1m -LOGIN_RATE_MAX_BLOCK_DURATION=15m -LOGIN_AUDIT_CLEANUP_ENABLED=true -LOGIN_AUDIT_RETENTION=90d -LOGIN_AUDIT_CLEANUP_BATCH_SIZE=500 -LOGIN_AUDIT_CLEANUP_MAX_BATCHES=20 -LOGIN_AUDIT_CLEANUP_INTERVAL_MS=86400000 -LOGIN_AUDIT_CLEANUP_INITIAL_DELAY_MS=120000 -TRUSTED_PROXY_CIDRS=172.16.0.0/12 - -# Календарные бизнес-даты приложения. -BUSINESS_TIME_ZONE=Europe/Moscow -TZ=Europe/Moscow - -# Локально Collector не входит в Compose. Укажите false при подключённом OTLP Collector. -OTEL_SDK_DISABLED=true diff --git a/backend/src/main/java/com/magistr/app/service/AcademicCalendarGridService.java b/backend/src/main/java/com/magistr/app/service/AcademicCalendarGridService.java index 7489da0..17a9103 100644 --- a/backend/src/main/java/com/magistr/app/service/AcademicCalendarGridService.java +++ b/backend/src/main/java/com/magistr/app/service/AcademicCalendarGridService.java @@ -114,7 +114,8 @@ public class AcademicCalendarGridService { private void validateWeek(AcademicYear academicYear, LocalDate date, Integer weekNumber) { long daysFromYearStart = ChronoUnit.DAYS.between(academicYear.getStartDate(), date); - int expectedWeek = Math.toIntExact(daysFromYearStart / 7 + 1); + int daysBeforeYearStartInFirstWeek = academicYear.getStartDate().getDayOfWeek().getValue() - 1; + int expectedWeek = Math.toIntExact((daysBeforeYearStartInFirstWeek + daysFromYearStart) / 7 + 1); if (weekNumber != expectedWeek) { throw new IllegalArgumentException("Номер недели не соответствует дате учебного года"); } diff --git a/backend/src/main/resources/db/migration/V2__align_academic_calendar_weeks_to_monday.sql b/backend/src/main/resources/db/migration/V2__align_academic_calendar_weeks_to_monday.sql new file mode 100644 index 0000000..ecc153c --- /dev/null +++ b/backend/src/main/resources/db/migration/V2__align_academic_calendar_weeks_to_monday.sql @@ -0,0 +1,23 @@ +-- Недели календарного учебного графика выровнены по ISO-неделе: +-- понедельник — первый день, воскресенье — последний. +UPDATE academic_calendar_days AS calendar_day +SET week_number = ( + ( + calendar_day.date + - academic_year.start_date + + EXTRACT(ISODOW FROM academic_year.start_date)::INTEGER + - 1 + ) / 7 +) + 1 +FROM academic_calendars AS calendar +JOIN academic_years AS academic_year + ON academic_year.id = calendar.academic_year_id +WHERE calendar_day.calendar_id = calendar.id + AND calendar_day.week_number IS DISTINCT FROM ( + ( + calendar_day.date + - academic_year.start_date + + EXTRACT(ISODOW FROM academic_year.start_date)::INTEGER + - 1 + ) / 7 + ) + 1; diff --git a/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberMigrationIntegrationTest.java new file mode 100644 index 0000000..c32a4fc --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberMigrationIntegrationTest.java @@ -0,0 +1,218 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; + +import static org.assertj.core.api.Assertions.assertThat; + +@Testcontainers +@DisplayName("Миграция нумерации недель календарного графика") +class AcademicCalendarWeekNumberMigrationIntegrationTest { + + @Container + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); + + @Test + @DisplayName("V2 переносит первый понедельник после неполной недели в неделю 2") + void migrationAlignsWeeksToMondayFor2026And2027() throws SQLException { + Flyway baseline = flyway("1"); + baseline.clean(); + baseline.migrate(); + + long calendar2026; + long calendar2027; + try (Connection connection = POSTGRES.createConnection("")) { + SeedReferences references = loadSeedReferences(connection); + + long year2026 = insertAcademicYear( + connection, + "2026-2027", + LocalDate.of(2026, 9, 1), + LocalDate.of(2027, 6, 30) + ); + calendar2026 = insertCalendar(connection, year2026, references, "График 2026-2027"); + insertCalendarDay(connection, calendar2026, references.activityTypeId(), + LocalDate.of(2026, 9, 1), 1, 2); + insertCalendarDay(connection, calendar2026, references.activityTypeId(), + LocalDate.of(2026, 9, 7), 1, 1); + + long year2027 = insertAcademicYear( + connection, + "2027-2028", + LocalDate.of(2027, 9, 1), + LocalDate.of(2028, 6, 30) + ); + calendar2027 = insertCalendar(connection, year2027, references, "График 2027-2028"); + insertCalendarDay(connection, calendar2027, references.activityTypeId(), + LocalDate.of(2027, 9, 1), 1, 3); + insertCalendarDay(connection, calendar2027, references.activityTypeId(), + LocalDate.of(2027, 9, 6), 1, 1); + } + + Flyway latest = latestFlyway(); + latest.migrate(); + + assertThat(latest.info().current()).isNotNull(); + assertThat(latest.info().current().getVersion().getVersion()).isEqualTo("2"); + try (Connection connection = POSTGRES.createConnection("")) { + assertThat(findWeekNumber(connection, calendar2026, LocalDate.of(2026, 9, 1))).isEqualTo(1); + assertThat(findWeekNumber(connection, calendar2026, LocalDate.of(2026, 9, 7))).isEqualTo(2); + assertThat(findWeekNumber(connection, calendar2027, LocalDate.of(2027, 9, 1))).isEqualTo(1); + assertThat(findWeekNumber(connection, calendar2027, LocalDate.of(2027, 9, 6))).isEqualTo(2); + } + } + + private Flyway flyway(String targetVersion) { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .target(MigrationVersion.fromVersion(targetVersion)) + .cleanDisabled(false) + .load(); + } + + private Flyway latestFlyway() { + return Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .cleanDisabled(false) + .load(); + } + + private SeedReferences loadSeedReferences(Connection connection) throws SQLException { + long specialtyId = queryLong(connection, "SELECT id FROM specialties ORDER BY id LIMIT 1"); + long profileId = queryLong( + connection, + "SELECT id FROM specialty_profiles WHERE specialty_id = ? ORDER BY id LIMIT 1", + specialtyId + ); + long studyFormId = queryLong(connection, "SELECT id FROM education_forms ORDER BY id LIMIT 1"); + long activityTypeId = queryLong( + connection, + "SELECT id FROM academic_calendar_activity_types WHERE code = 'Т'" + ); + return new SeedReferences(specialtyId, profileId, studyFormId, activityTypeId); + } + + private long insertAcademicYear(Connection connection, + String title, + LocalDate startDate, + LocalDate endDate) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO academic_years (title, start_date, end_date) + VALUES (?, ?, ?) + RETURNING id + """)) { + statement.setString(1, title); + statement.setDate(2, Date.valueOf(startDate)); + statement.setDate(3, Date.valueOf(endDate)); + return requiredLong(statement); + } + } + + private long insertCalendar(Connection connection, + long academicYearId, + SeedReferences references, + String title) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO academic_calendars ( + title, + academic_year_id, + specialty_id, + specialty_profile_id, + study_form_id, + course_count + ) + VALUES (?, ?, ?, ?, ?, 1) + RETURNING id + """)) { + statement.setString(1, title); + statement.setLong(2, academicYearId); + statement.setLong(3, references.specialtyId()); + statement.setLong(4, references.profileId()); + statement.setLong(5, references.studyFormId()); + return requiredLong(statement); + } + } + + private void insertCalendarDay(Connection connection, + long calendarId, + long activityTypeId, + LocalDate date, + int weekNumber, + int dayOfWeek) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + INSERT INTO academic_calendar_days ( + calendar_id, + course_number, + date, + week_number, + day_of_week, + activity_type_id + ) + VALUES (?, 1, ?, ?, ?, ?) + """)) { + statement.setLong(1, calendarId); + statement.setDate(2, Date.valueOf(date)); + statement.setInt(3, weekNumber); + statement.setInt(4, dayOfWeek); + statement.setLong(5, activityTypeId); + statement.executeUpdate(); + } + } + + private int findWeekNumber(Connection connection, + long calendarId, + LocalDate date) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(""" + SELECT week_number + FROM academic_calendar_days + WHERE calendar_id = ? + AND date = ? + """)) { + statement.setLong(1, calendarId); + statement.setDate(2, Date.valueOf(date)); + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getInt(1); + } + } + } + + private long queryLong(Connection connection, String sql, Object... arguments) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + for (int index = 0; index < arguments.length; index++) { + statement.setObject(index + 1, arguments[index]); + } + return requiredLong(statement); + } + } + + private long requiredLong(PreparedStatement statement) throws SQLException { + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getLong(1); + } + } + + private record SeedReferences( + long specialtyId, + long profileId, + long studyFormId, + long activityTypeId + ) { + } +} diff --git a/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceTest.java b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceTest.java index b996c66..3bab8fe 100644 --- a/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceTest.java +++ b/backend/src/test/java/com/magistr/app/service/AcademicCalendarGridServiceTest.java @@ -49,10 +49,11 @@ class AcademicCalendarGridServiceTest { private AcademicCalendarGridService service; private AcademicCalendarActivityType activityType; + private AcademicYear academicYear; @BeforeEach void setUp() { - AcademicYear academicYear = new AcademicYear(); + academicYear = new AcademicYear(); academicYear.setId(1L); academicYear.setTitle("2025-2026"); academicYear.setStartDate(YEAR_START); @@ -197,6 +198,48 @@ class AcademicCalendarGridServiceTest { }); } + @Test + void alignsFirstWeekToMondayWhenAcademicYearStartsOnTuesday() { + LocalDate yearStart = LocalDate.of(2026, 9, 1); + academicYear.setStartDate(yearStart); + academicYear.setEndDate(LocalDate.of(2027, 6, 30)); + + service.replaceGrid(CALENDAR_ID, List.of( + validRow(yearStart, 1, 2), + validRow(LocalDate.of(2026, 9, 6), 1, 7), + validRow(LocalDate.of(2026, 9, 7), 2, 1), + validRow(LocalDate.of(2026, 9, 14), 3, 1) + )); + + @SuppressWarnings("unchecked") + ArgumentCaptor> replacementCaptor = ArgumentCaptor.forClass(List.class); + verify(calendarDayRepository).saveAll(replacementCaptor.capture()); + assertThat(replacementCaptor.getValue()) + .extracting(AcademicCalendarDay::getWeekNumber) + .containsExactly(1, 1, 2, 3); + } + + @Test + void alignsFirstWeekToMondayWhenAcademicYearStartsOnWednesday() { + LocalDate yearStart = LocalDate.of(2027, 9, 1); + academicYear.setStartDate(yearStart); + academicYear.setEndDate(LocalDate.of(2028, 6, 30)); + + service.replaceGrid(CALENDAR_ID, List.of( + validRow(yearStart, 1, 3), + validRow(LocalDate.of(2027, 9, 5), 1, 7), + validRow(LocalDate.of(2027, 9, 6), 2, 1), + validRow(LocalDate.of(2027, 9, 13), 3, 1) + )); + + @SuppressWarnings("unchecked") + ArgumentCaptor> replacementCaptor = ArgumentCaptor.forClass(List.class); + verify(calendarDayRepository).saveAll(replacementCaptor.capture()); + assertThat(replacementCaptor.getValue()) + .extracting(AcademicCalendarDay::getWeekNumber) + .containsExactly(1, 1, 2, 3); + } + private AcademicCalendarGridDayDto validRow(LocalDate date, int weekNumber, int dayOfWeek) { return row(date, weekNumber, dayOfWeek, ACTIVITY_TYPE_ID); } diff --git a/docs/ACADEMIC_CALENDAR.md b/docs/ACADEMIC_CALENDAR.md index 7e3cb74..8b0c498 100644 --- a/docs/ACADEMIC_CALENDAR.md +++ b/docs/ACADEMIC_CALENDAR.md @@ -63,7 +63,7 @@ 1. В разделе кафедр и специальностей администратор создаёт специальность и её профили. 2. В разделе групп администратор создаёт группу, выбирая специальность и профиль обучения. 3. В разделе календарного графика администратор создаёт учебный год и семестры. -4. Там же создаётся календарный учебный график: название, учебный год, специальность, профиль, форма обучения из общего справочника и количество курсов. +4. Там же создаётся календарный учебный график: администратор выбирает учебный год, специальность, профиль, форму обучения из общего справочника и количество курсов. Название вручную не вводится — frontend формирует его в порядке `код специальности — профиль обучения — форма обучения — учебный год`. 5. Администратор открывает сетку графика, заполняет дни вручную или массово через диапазон дат. 6. На вкладке дисциплин графика администратор вручную привязывает дисциплины к учебным семестрам: например, для четырёх курсов доступны семестры `1..8`. 7. В разделе групп администратор назначает календарный график группе на нужный учебный год; вместе с назначением виден список дисциплин по семестрам. diff --git a/docs/API.md b/docs/API.md index 66ff3b3..902a417 100644 --- a/docs/API.md +++ b/docs/API.md @@ -559,7 +559,7 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 **Тело создания/обновления графика:** ```json { - "title": "09.03.04 очная форма 2025-2026", + "title": "09.03.04 — Программная инженерия — Очная — 2025-2026", "academicYearId": 1, "specialtyId": 2, "specialtyProfileId": 3, @@ -570,6 +570,7 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 `studyFormId` берётся из общего справочника форм обучения `GET /api/education-forms`; отдельного справочника форм для календарных графиков нет. `courseCount` должен быть в диапазоне `1..8`. +Административный frontend формирует `title` автоматически из кода специальности, профиля, формы обучения и учебного года; отдельного поля ручного ввода в интерфейсе нет. При `PUT /api/admin/academic-calendars/{id}` backend блокирует график и повторно проверяет все сохранённые назначения, дневную сетку и дисциплины. Изменение года, специальности, @@ -594,7 +595,9 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 удаления прежних строк backend проверяет весь список: он должен быть непустым и не содержать `null`, курс должен входить в `1..courseCount`, дата — в учебный год, `dayOfWeek` — совпадать с ISO-днём даты, а `weekNumber` — с номером семидневного периода -от начала учебного года. Ключ `(courseNumber, date)` не должен повторяться, каждый +`понедельник–воскресенье`. Неделя 1 содержит дату начала учебного года; дни этой недели +до начала года не входят в JSON и отображаются пустыми ячейками. Ключ +`(courseNumber, date)` не должен повторяться, каждый `activityTypeId` или `activityCode` должен существовать. При любом `400` старая сетка остаётся без изменений; `calendarId` из строки не переопределяет ID в URL. diff --git a/docs/BUSINESS_LOGIC.md b/docs/BUSINESS_LOGIC.md index 57765b5..6b55c56 100644 --- a/docs/BUSINESS_LOGIC.md +++ b/docs/BUSINESS_LOGIC.md @@ -166,7 +166,10 @@ Bearer-токен проверяется на backend. Frontend-скрытие уникальность `(course, date)`, соответствие даты учебному году, номеру недели и ISO-дню, и разрешает все коды активностей. Только после этого прежняя сетка удаляется и новый набор записывается одной транзакцией. Ошибка любой строки сохраняет прежнюю сетку целиком, а кэш -расписания очищается только после commit. +расписания очищается только после commit. Недели дневной сетки выровнены по ISO-неделе +`понедельник–воскресенье`: неделя 1 содержит первый день учебного года, а позиции до него +остаются пустыми. Поэтому при старте года во вторник следующий понедельник относится уже +к неделе 2. Генератор `ScheduleGeneratorService` рендерит расписание по запросу: 1. Определяет семестр для каждой даты диапазона. diff --git a/docs/DATABASE.md b/docs/DATABASE.md index a898570..d267987 100644 --- a/docs/DATABASE.md +++ b/docs/DATABASE.md @@ -775,7 +775,7 @@ V1 создаёт GiST exclusion constraint `ex_academic_years_no_overlap` дл | `calendar_id` | BIGINT FK → academic_calendars (CASCADE) | Календарный график | | `course_number` | INT | Номер курса | | `date` | DATE | Дата учебного года | -| `week_number` | INT | Номер недели от начала учебного года | +| `week_number` | INT | Номер периода `понедельник–воскресенье`; неделя 1 содержит начало учебного года | | `day_of_week` | INT CHECK(1–7) | День недели ISO | | `activity_type_id` | BIGINT FK → academic_calendar_activity_types | Код активности | @@ -920,13 +920,14 @@ lifecycle ресурсов, эффективная сетка целевого | Файл | Описание | |------|----------| | `V1__init.sql` | Полная baseline-схема: справочники, роли, refresh-сессии JWT, PostgreSQL rate limit и аудит входа, lifecycle-поля, история кафедр, календарные графики, динамическое расписание, точечные изменения с переносом даты, seed, CHECK/UNIQUE/GiST-ограничения, конкурентно безопасные триггеры и комментарии | +| `V2__align_academic_calendar_weeks_to_monday.sql` | Перенумерация сохранённых дней календарного графика по периодам `понедельник–воскресенье`, чтобы неполная первая неделя не заполнялась датами следующей недели | ### Этап разработки -По прямому решению владельца проекта все миграции V2–V7 объединены в V1, поскольку -клиентских tenant-БД ещё нет. После изменения контрольной суммы V1 локальную базу нужно -пересоздать целиком; накатывание этой редакции поверх БД со старой записью V1 в -`flyway_schema_history` не поддерживается. +По прямому решению владельца проекта прежние разработческие миграции V2–V7 были объединены +в baseline `V1`. Новая миграция `V2__align_academic_calendar_weeks_to_monday.sql` создана +после фиксации baseline и накатывается поверх существующих tenant-БД без изменения +контрольной суммы V1. ### Полный сброс БД (локально) diff --git a/docs/FRONTEND.md b/docs/FRONTEND.md index 6f12fed..54cf230 100644 --- a/docs/FRONTEND.md +++ b/docs/FRONTEND.md @@ -26,6 +26,9 @@ frontend/ ├── scripts/ │ └── build-vendor.mjs # Сборка `/vendor/otel.js` через esbuild ├── tests/ +│ ├── academic-calendar-grid.test.mjs # Неполная первая неделя календарного графика +│ ├── academic-calendar-title.test.mjs # Составное название календарного графика +│ ├── academic-calendar-tooltip.test.mjs # Позиционирование подсказки возле курсора и границ viewport │ ├── auth-session.test.mjs # Login/refresh/reload/logout и single-flight refresh │ ├── dashboard-conflicts.test.mjs # Регрессии дат и состояний проверки конфликтов │ ├── schedule-overrides.test.mjs # Действия, роли, недельный выбор и подбор времени разовой правки @@ -51,6 +54,7 @@ frontend/ │ │ ├── role-capabilities.js # Единая матрица вкладок admin/settings по ролям │ │ ├── api.js # HTTP-обёртка (fetch + Authorization) │ │ ├── dashboard-conflicts.js # Чистые функции дат, загрузки и состояний Red Zone +│ │ ├── date-input.js # Маска ДД.ММ.ГГГГ и преобразование дат в ISO │ │ ├── utils.js # Утилиты │ │ └── views/ # Модули представлений │ │ ├── dashboard.js # Дашборд @@ -64,6 +68,8 @@ frontend/ │ │ ├── schedule-view.js # Просмотр расписаний и запуск разовой правки из карточки │ │ ├── schedule-override-panel.js # Боковая панель и реестр разовых изменений │ │ ├── schedule.js # Конструктор правил расписания +│ │ ├── academic-calendar-grid.js # Расчёт ISO-недели дневной сетки +│ │ ├── academic-calendar-title.js # Название из кода, профиля, формы и года │ │ ├── academic-calendar.js # Календарные учебные графики │ │ └── auditorium-workload.js # Загруженность аудиторий, преподавателей и кафедр │ ├── views/ # HTML-шаблоны представлений @@ -178,9 +184,9 @@ frontend/ - Вкладка `auditorium-workload` стала общей вкладкой `Загруженность`: в поле «Что смотреть» выбираются аудитории, преподаватели или кафедры. Сводная матрица по выбранной дате использует одинаковую структуру: строки — выбранный тип сущности, столбцы — эффективные временные слоты дня из `/api/admin/time-slots/effective`, занятость собирается из динамического расписания `/api/schedule` по группам. Кафедральная матрица группирует занятия по кафедре преподавателя. Для аудиторий доступны фильтры корпуса, вместимости и оборудования. В поле «Отображение» можно выбрать конкретную аудиторию, преподавателя или кафедру; тогда сводная матрица заменяется одной таблицей по дням недели и времени для двухнедельного периода от выбранной даты. Таблица выбранной сущности растягивается до нижней части экрана. Ячейка делится вертикально только если верхняя и нижняя недели отличаются: нечётная неделя отображается сверху, чётная — снизу. Если состояние или занятие одинаковое, ячейка остаётся цельной. Чётность берётся из расписания, а для свободных дней рассчитывается по семестрам из `/api/admin/calendar/years`. - Вкладка `university-structure` содержит внутренние разделы `Кафедры`, `Специальности` и `Профили`, оформленные тем же визуальным паттерном вкладок, что и `academic-calendar`: администратор создаёт профили как из общего списка, так и через кнопку `Профили` у конкретной специальности. - Вкладка `schedule` не обращается к старым `lessons` API. Создание и редактирование расписания выполняется через правила `/api/admin/schedule-rules`, где каждое правило содержит группы, отдельные часы и недели начала для лекций, лабораторных и практик, а также набор базовых слотов. Группы выбираются через выпадающий мультиселект. Поле подгруппы появляется только при выборе лабораторной работы; для лекций и практик оно не отображается. Если в правиле выбрана одна группа, селект подгруппы содержит пункт `Вся группа`; если выбрано несколько групп, лабораторный слот показывает мультиселект подгрупп, чтобы выбрать разные подгруппы разных групп. Типы занятий в слоте сортируются в порядке: лекция, лабораторная работа, практика. Список слотов отображается без внутреннего вертикального скролла: при добавлении строк форма расширяется вниз, а кнопка сохранения остаётся отдельным блоком под слотами. Из календарной системы здесь используется список семестров для выбора периода действия правила. Справа доступна сворачиваемая визуальная матрица: пользователь выбирает учебный год, семестр и группы, после чего матрица строится только по правилам выбранного семестра. Столбцы — выбранные в фильтре группы, строки — только день и время, где есть активные пары, ячейки показывают дисциплину, диапазон недель, тип, формат, преподавателя, аудиторию и подгруппы. Период недель не показывается для занятия на весь семестр; если занятие идёт до конца семестра не с первой недели, выводится только неделя начала в формате `(с 5 нед.)`, а ограниченный диапазон — как `(с 1 по 3 нед.)`. Если нечётная и чётная недели отличаются, ячейка делится на две половины; одинаковые занятия схлопываются в цельную ячейку. Кнопка с тремя точками в правой части карточки пары открывает контекстное меню: можно открыть полное правило в форме, изменить только день и базовую пару выбранного слота через компактную модалку или удалить правило целиком. В списке правил действия отображаются едиными кнопками одинакового размера с отступами между ними. -- Вкладка `academic-calendar` полностью отделяет календарную систему от расписания занятий и внутри себя разделена на три вкладки: `Графики` для учебных годов, семестров и карточек календарных графиков, `Сетки` для редактора дневной сетки, `Дисциплины` для ручной привязки дисциплин из `/api/subjects` к номерам учебных семестров графика. Администратор выбирает форму обучения из общего справочника `/api/education-forms`, заполняет дневную сетку по курсам и кодам активностей, назначает ручную временную сетку на конкретную дату, а сохранение сетки идёт через `/api/admin/academic-calendars/{id}/grid`. +- Вкладка `academic-calendar` полностью отделяет календарную систему от расписания занятий и внутри себя разделена на три вкладки: `Графики` для учебных годов, семестров и карточек календарных графиков, `Сетки` для редактора дневной сетки, `Дисциплины` для ручной привязки дисциплин из `/api/subjects` к номерам учебных семестров графика. Отдельного поля названия у календарного графика нет: frontend формирует его как `код специальности — профиль обучения — форма обучения — учебный год`, показывает одинаково в таблицах и селектах и отправляет вычисленное значение в `title` для совместимости с API. Администратор выбирает форму обучения из общего справочника `/api/education-forms`, заполняет дневную сетку по курсам и кодам активностей, назначает ручную временную сетку на конкретную дату, а сохранение сетки идёт через `/api/admin/academic-calendars/{id}/grid`. Все шесть полей дат принимают до восьми цифр, автоматически показывают их в формате `ДД.ММ.ГГГГ`, ограничивают год четырьмя цифрами и перед отправкой преобразуют значение в ISO `ГГГГ-ММ-ДД`. - При сохранении правила во вкладке `schedule` frontend различает `409 Conflict` от остальных ошибок API. Если backend возвращает `conflictRule`, открывается широкое модальное окно разрешения конфликта: пользователь видит новое и ранее созданное правило, чипы причины конфликта из `conflictReasons` и подсветку соответствующих полей (`teacher`, `classroom`, `group`). Пользователь меняет у конфликтующего правила день, чётность, пару, преподавателя или аудиторию, после чего frontend сохраняет конфликтующее правило через `PUT /api/admin/schedule-rules/{id}` и автоматически повторяет исходный `POST` или `PUT`. Если после переноса появляется следующий конфликт, показывается следующее конфликтующее правило без потери исходного черновика. -- Редактор годового графика во вкладке `academic-calendar` показывает компактную табличную сетку: курсы раскрываются отдельными секциями со стрелкой, семестры внутри курса на широком экране идут рядом в две равные колонки одинаковой высоты, столбцы подписаны номерами недель учебного года, строки — днями недели, а ячейки содержат буквенный код активности. В рамках одного курса семестровые таблицы получают одинаковое число недельных колонок: недостающие колонки заполняются пустыми ячейками, поэтому левая и правая части занимают всю ширину секции курса без внешней пустоты. Подробная расшифровка и изменение кода открываются в компактном модальном окне по клику на ячейку; при наведении отображается кастомная подсказка с датой, курсом, кодом активности и временной сеткой, а код активности в подсказке центрируется внутри квадратного индикатора. Ячейки можно выделять протяжкой мышью и менять код активности через ту же модалку, выбранные ячейки подсвечиваются мягкой заливкой, а кнопка «Применить» закрывает окно. +- Редактор годового графика во вкладке `academic-calendar` показывает компактную табличную сетку: курсы раскрываются отдельными секциями со стрелкой, семестры внутри курса на широком экране идут рядом в две равные колонки одинаковой высоты, столбцы подписаны номерами недель учебного года, строки — днями недели, а ячейки содержат буквенный код активности. Недели выровнены по интервалам `понедельник–воскресенье`: если учебный год начинается не в понедельник, предшествующие позиции первой недели остаются пустыми, а следующий понедельник открывает неделю 2. В рамках одного курса семестровые таблицы получают одинаковое число недельных колонок: недостающие колонки заполняются пустыми ячейками, поэтому левая и правая части занимают всю ширину секции курса без внешней пустоты. Подробная расшифровка и изменение кода открываются в компактном модальном окне по клику на ячейку; при наведении возле курсора отображается кастомная подсказка с датой, курсом, кодом активности и временной сеткой. У границ viewport подсказка автоматически раскрывается в противоположную сторону и остаётся полностью видимой, а код активности в ней центрируется внутри квадратного индикатора. Ячейки можно выделять протяжкой мышью и менять код активности через ту же модалку, выбранные ячейки подсвечиваются мягкой заливкой, а кнопка «Применить» закрывает окно. - Вкладка `classrooms` теперь показывает архивные аудитории через `includeArchived=true`. Кнопка удаления заменена на архивирование: аудитория выводится из эксплуатации, но остаётся в историческом расписании. Для архивных аудиторий доступно восстановление. - Вкладка `users` поддерживает роли `EDUCATION_OFFICE`, `DEPARTMENT` и `SCHEDULE_VIEWER`; удаление пользователя работает как архивирование. diff --git a/frontend/admin/css/components.css b/frontend/admin/css/components.css index 08662d7..78681cd 100755 --- a/frontend/admin/css/components.css +++ b/frontend/admin/css/components.css @@ -2167,8 +2167,8 @@ visibility: hidden; transform: translateY(4px) scale(0.98); transition: opacity 0.14s ease, transform 0.14s ease, visibility 0.14s ease; - right: 12px; - bottom: 12px; + left: 0; + top: 0; } .calendar-day-tooltip.visible { diff --git a/frontend/admin/js/date-input.js b/frontend/admin/js/date-input.js new file mode 100644 index 0000000..7b265b2 --- /dev/null +++ b/frontend/admin/js/date-input.js @@ -0,0 +1,180 @@ +const DISPLAY_DATE_PATTERN = /^(\d{2})\.(\d{2})\.(\d{4})$/; +const ISO_DATE_PATTERN = /^(\d{4})-(\d{2})-(\d{2})$/; +const boundDateInputs = new WeakSet(); + +export function formatDateInputValue(value) { + const text = String(value || ''); + const isoMatch = text.match(ISO_DATE_PATTERN); + if (isoMatch) { + return `${isoMatch[3]}.${isoMatch[2]}.${isoMatch[1]}`; + } + + const digits = text.replace(/\D/g, '').slice(0, 8); + if (digits.length <= 2) return digits; + if (digits.length <= 4) return `${digits.slice(0, 2)}.${digits.slice(2)}`; + return `${digits.slice(0, 2)}.${digits.slice(2, 4)}.${digits.slice(4)}`; +} + +export function dateInputValueToIso(value) { + const text = String(value || '').trim(); + if (!text) return ''; + + const match = text.match(DISPLAY_DATE_PATTERN); + if (!match) { + throw new TypeError('Введите дату полностью в формате ДД.ММ.ГГГГ (год — 4 цифры)'); + } + + const [, dayText, monthText, yearText] = match; + const day = Number(dayText); + const month = Number(monthText); + const year = Number(yearText); + if (year < 1 || month < 1 || month > 12 || day < 1 || day > daysInMonth(month, year)) { + throw new TypeError('Введите существующую дату в формате ДД.ММ.ГГГГ'); + } + + return `${yearText}-${monthText}-${dayText}`; +} + +export function isoDateToInputValue(value) { + const text = String(value || '').trim(); + if (!text) return ''; + + const match = text.match(ISO_DATE_PATTERN); + if (!match) { + throw new TypeError('Ожидалась дата в формате ГГГГ-ММ-ДД'); + } + + const [, year, month, day] = match; + dateInputValueToIso(`${day}.${month}.${year}`); + return `${day}.${month}.${year}`; +} + +export function bindDateInputMask(input) { + if (!input || boundDateInputs.has(input)) return; + boundDateInputs.add(input); + + input.addEventListener('input', () => { + const rawValue = input.value; + const caret = input.selectionStart ?? rawValue.length; + const digitsBeforeCaret = rawValue.slice(0, caret).replace(/\D/g, '').length; + const caretWasAtEnd = caret === rawValue.length; + const formattedValue = formatDateInputValue(rawValue); + + input.value = formattedValue; + clearDateInputError(input); + const nextCaret = caretPositionAfterDigits(formattedValue, digitsBeforeCaret, caretWasAtEnd); + input.setSelectionRange?.(nextCaret, nextCaret); + }); + + input.addEventListener('keydown', event => { + if (event.key === 'Backspace' + && input.selectionStart === input.selectionEnd + && input.selectionStart > 0 + && input.value[input.selectionStart - 1] === '.') { + event.preventDefault(); + const nextCaret = input.selectionStart - 1; + input.setSelectionRange(nextCaret, nextCaret); + } + + if (event.key === 'Delete' + && input.selectionStart === input.selectionEnd + && input.value[input.selectionStart] === '.') { + event.preventDefault(); + const nextCaret = input.selectionStart + 1; + input.setSelectionRange(nextCaret, nextCaret); + } + }); + + input.addEventListener('blur', () => { + if (!input.value) { + clearDateInputError(input); + return; + } + + try { + const isoValue = dateInputValueToIso(input.value); + input.value = isoDateToInputValue(isoValue); + clearDateInputError(input); + } catch (error) { + setDateInputError(input, error.message); + } + }); + + input.form?.addEventListener('reset', () => clearDateInputError(input)); +} + +export function readDateInputIso(input, label = 'Дата') { + try { + const value = dateInputValueToIso(input?.value); + clearDateInputError(input); + return value; + } catch (error) { + const message = `${label}: ${lowercaseFirst(error.message)}`; + setDateInputError(input, message); + input?.focus(); + throw new Error(message); + } +} + +export function setDateInputIso(input, value) { + if (!input) return; + input.value = isoDateToInputValue(value); + clearDateInputError(input); +} + +function daysInMonth(month, year) { + const monthLengths = [ + 31, + isLeapYear(year) ? 29 : 28, + 31, + 30, + 31, + 30, + 31, + 31, + 30, + 31, + 30, + 31 + ]; + return monthLengths[month - 1] || 0; +} + +function isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + +function caretPositionAfterDigits(value, digitCount, preferEnd) { + if (digitCount <= 0) return 0; + + let seenDigits = 0; + for (let index = 0; index < value.length; index += 1) { + if (!/\d/.test(value[index])) continue; + seenDigits += 1; + if (seenDigits === digitCount) { + let position = index + 1; + if (preferEnd) { + while (value[position] === '.') position += 1; + } + return position; + } + } + return value.length; +} + +function setDateInputError(input, message) { + if (!input) return; + input.setCustomValidity?.(message); + input.setAttribute?.('aria-invalid', 'true'); +} + +function clearDateInputError(input) { + if (!input) return; + input.setCustomValidity?.(''); + input.removeAttribute?.('aria-invalid'); +} + +function lowercaseFirst(value) { + const text = String(value || ''); + return text ? text[0].toLowerCase() + text.slice(1) : text; +} diff --git a/frontend/admin/js/views/academic-calendar-grid.js b/frontend/admin/js/views/academic-calendar-grid.js new file mode 100644 index 0000000..2c4d7e2 --- /dev/null +++ b/frontend/admin/js/views/academic-calendar-grid.js @@ -0,0 +1,39 @@ +const MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000; + +export function academicCalendarWeekNumber(academicYearStartIso, dateIso) { + const academicYearStart = parseIsoDate(academicYearStartIso); + const date = parseIsoDate(dateIso); + const daysFromYearStart = (date.timestamp - academicYearStart.timestamp) / MILLISECONDS_PER_DAY; + + if (!Number.isInteger(daysFromYearStart) || daysFromYearStart < 0) { + throw new RangeError('Дата ячейки не может быть раньше начала учебного года'); + } + + const daysBeforeYearStartInFirstWeek = academicYearStart.dayOfWeek - 1; + return Math.floor((daysBeforeYearStartInFirstWeek + daysFromYearStart) / 7) + 1; +} + +function parseIsoDate(value) { + const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(String(value)); + if (!match) { + throw new TypeError('Ожидалась дата в формате ГГГГ-ММ-ДД'); + } + + const [, yearText, monthText, dayText] = match; + const year = Number(yearText); + const month = Number(monthText); + const day = Number(dayText); + const timestamp = Date.UTC(year, month - 1, day); + const date = new Date(timestamp); + if (date.getUTCFullYear() !== year + || date.getUTCMonth() !== month - 1 + || date.getUTCDate() !== day) { + throw new TypeError('Ожидалась дата в формате ГГГГ-ММ-ДД'); + } + + const jsDayOfWeek = date.getUTCDay(); + return { + timestamp, + dayOfWeek: jsDayOfWeek === 0 ? 7 : jsDayOfWeek + }; +} diff --git a/frontend/admin/js/views/academic-calendar-title.js b/frontend/admin/js/views/academic-calendar-title.js new file mode 100644 index 0000000..98fcbc0 --- /dev/null +++ b/frontend/admin/js/views/academic-calendar-title.js @@ -0,0 +1,21 @@ +const TITLE_SEPARATOR = ' — '; + +function normalizeTitlePart(value) { + return String(value ?? '').trim(); +} + +export function buildAcademicCalendarTitle({ + specialtyCode, + specialtyProfileName, + studyFormName, + academicYearTitle +} = {}) { + const parts = [ + specialtyCode, + specialtyProfileName, + studyFormName, + academicYearTitle + ].map(normalizeTitlePart); + + return parts.every(Boolean) ? parts.join(TITLE_SEPARATOR) : ''; +} diff --git a/frontend/admin/js/views/academic-calendar.js b/frontend/admin/js/views/academic-calendar.js index de46715..b45a12a 100644 --- a/frontend/admin/js/views/academic-calendar.js +++ b/frontend/admin/js/views/academic-calendar.js @@ -1,5 +1,8 @@ import { api } from '../api.js'; +import { bindDateInputMask, readDateInputIso, setDateInputIso } from '../date-input.js'; import { escapeHtml, formatLocalDate, showAlert, hideAlert } from '../utils.js'; +import { academicCalendarWeekNumber } from './academic-calendar-grid.js'; +import { buildAcademicCalendarTitle } from './academic-calendar-title.js'; const DAY_OPTIONS = [ { value: 1, label: 'Понедельник', shortLabel: 'Пн' }, @@ -16,6 +19,41 @@ const SEMESTER_LABELS = { spring: 'весенний' }; +const CALENDAR_TOOLTIP_OFFSET = 14; +const CALENDAR_TOOLTIP_VIEWPORT_PADDING = 12; + +export function calculateCalendarTooltipPosition({ + pointerX, + pointerY, + tooltipWidth, + tooltipHeight, + viewportWidth, + viewportHeight +}) { + const maxLeft = Math.max( + CALENDAR_TOOLTIP_VIEWPORT_PADDING, + viewportWidth - tooltipWidth - CALENDAR_TOOLTIP_VIEWPORT_PADDING + ); + const maxTop = Math.max( + CALENDAR_TOOLTIP_VIEWPORT_PADDING, + viewportHeight - tooltipHeight - CALENDAR_TOOLTIP_VIEWPORT_PADDING + ); + let left = pointerX + CALENDAR_TOOLTIP_OFFSET; + let top = pointerY + CALENDAR_TOOLTIP_OFFSET; + + if (left > maxLeft) { + left = pointerX - tooltipWidth - CALENDAR_TOOLTIP_OFFSET; + } + if (top > maxTop) { + top = pointerY - tooltipHeight - CALENDAR_TOOLTIP_OFFSET; + } + + return { + left: Math.round(Math.max(CALENDAR_TOOLTIP_VIEWPORT_PADDING, Math.min(left, maxLeft))), + top: Math.round(Math.max(CALENDAR_TOOLTIP_VIEWPORT_PADDING, Math.min(top, maxTop))) + }; +} + export async function initAcademicCalendar() { const academicYearForm = document.getElementById('academic-year-form'); const academicYearFormTitle = document.getElementById('academic-year-form-title'); @@ -39,7 +77,6 @@ export async function initAcademicCalendar() { const calendarForm = document.getElementById('academic-calendar-form'); const calendarFormTitle = document.getElementById('academic-calendar-form-title'); const calendarIdInput = document.getElementById('academic-calendar-id'); - const calendarTitleInput = document.getElementById('academic-calendar-title'); const calendarYearSelect = document.getElementById('academic-calendar-year'); const calendarSpecialtySelect = document.getElementById('academic-calendar-specialty'); const calendarProfileSelect = document.getElementById('academic-calendar-profile'); @@ -100,6 +137,7 @@ export async function initAcademicCalendar() { let suppressCalendarDayClick = false; let isSyncingCalendarDayDialog = false; let calendarDayTooltip = null; + let calendarDayTooltipPositionAnimation = null; bindEvents(); @@ -119,6 +157,15 @@ export async function initAcademicCalendar() { } function bindEvents() { + [ + academicYearStartInput, + academicYearEndInput, + semesterStartInput, + semesterEndInput, + fillStartInput, + fillEndInput + ].forEach(bindDateInputMask); + calendarTabButtons.forEach(button => { button.addEventListener('click', () => activateCalendarTab(button.dataset.calendarTab)); }); @@ -271,12 +318,12 @@ export async function initAcademicCalendar() { async function saveAcademicYear(event) { event.preventDefault(); hideAlert('academic-year-alert'); - const payload = { - title: academicYearTitleInput.value.trim(), - startDate: academicYearStartInput.value, - endDate: academicYearEndInput.value - }; try { + const payload = { + title: academicYearTitleInput.value.trim(), + startDate: readDateInputIso(academicYearStartInput, 'Начало учебного года'), + endDate: readDateInputIso(academicYearEndInput, 'Окончание учебного года') + }; if (!payload.title || !payload.startDate || !payload.endDate) throw new Error('Заполните название и даты учебного года'); const id = academicYearIdInput.value; await (id @@ -302,8 +349,8 @@ export async function initAcademicCalendar() { academicYearFormTitle.textContent = 'Редактирование учебного года'; academicYearIdInput.value = year.id; academicYearTitleInput.value = year.title || ''; - academicYearStartInput.value = year.startDate || ''; - academicYearEndInput.value = year.endDate || ''; + setDateInputIso(academicYearStartInput, year.startDate); + setDateInputIso(academicYearEndInput, year.endDate); hideAlert('academic-year-alert'); academicYearForm.scrollIntoView({ behavior: 'smooth', block: 'start' }); return; @@ -316,8 +363,8 @@ export async function initAcademicCalendar() { semesterIdInput.value = semester.id; semesterYearSelect.value = semester.academicYearId || ''; semesterTypeSelect.value = normalizeSemesterType(semester.semesterType); - semesterStartInput.value = semester.startDate || ''; - semesterEndInput.value = semester.endDate || ''; + setDateInputIso(semesterStartInput, semester.startDate); + setDateInputIso(semesterEndInput, semester.endDate); syncSelects(semesterYearSelect, semesterTypeSelect); hideAlert('semester-alert'); semesterForm.scrollIntoView({ behavior: 'smooth', block: 'start' }); @@ -348,12 +395,12 @@ export async function initAcademicCalendar() { event.preventDefault(); hideAlert('semester-alert'); const yearId = semesterYearSelect.value; - const payload = { - semesterType: semesterTypeSelect.value, - startDate: semesterStartInput.value, - endDate: semesterEndInput.value - }; try { + const payload = { + semesterType: semesterTypeSelect.value, + startDate: readDateInputIso(semesterStartInput, 'Начало семестра'), + endDate: readDateInputIso(semesterEndInput, 'Окончание семестра') + }; if (!yearId || !payload.semesterType || !payload.startDate || !payload.endDate) { throw new Error('Заполните учебный год, тип и даты семестра'); } @@ -420,7 +467,7 @@ export async function initAcademicCalendar() { } calendarsTbody.innerHTML = calendars.map(calendar => ` - + @@ -441,7 +488,7 @@ export async function initAcademicCalendar() { hideAlert('academic-calendar-alert'); const payload = { id: calendarIdInput.value ? Number(calendarIdInput.value) : null, - title: calendarTitleInput.value.trim(), + title: buildCalendarTitleFromForm(), academicYearId: Number(calendarYearSelect.value), specialtyId: Number(calendarSpecialtySelect.value), specialtyProfileId: Number(calendarProfileSelect.value), @@ -457,7 +504,8 @@ export async function initAcademicCalendar() { const saved = id ? await api.put('/api/admin/academic-calendars/' + id, payload) : await api.post('/api/admin/academic-calendars', payload); - showAlert('academic-calendar-alert', `График "${escapeHtml(saved.title)}" сохранён`, 'success'); + const savedTitle = buildAcademicCalendarTitle(saved) || payload.title; + showAlert('academic-calendar-alert', `График "${escapeHtml(savedTitle)}" сохранён`, 'success'); resetCalendarForm(); await loadCalendars(); } catch (error) { @@ -477,7 +525,6 @@ export async function initAcademicCalendar() { if (!calendar) return; calendarFormTitle.textContent = 'Редактирование календарного графика'; calendarIdInput.value = calendar.id; - calendarTitleInput.value = calendar.title || ''; calendarYearSelect.value = calendar.academicYearId || ''; calendarSpecialtySelect.value = calendar.specialtyId || ''; populateProfileSelect(calendarProfileSelect, calendarSpecialtySelect.value, calendar.specialtyProfileId); @@ -721,12 +768,19 @@ export async function initAcademicCalendar() { function applyCalendarFill() { hideAlert('calendar-editor-alert'); const activityId = fillActivitySelect.value; - const start = fillStartInput.value; - const end = fillEndInput.value; - if (!activityId || !start || !end) { + if (!activityId || !fillStartInput.value || !fillEndInput.value) { showAlert('calendar-editor-alert', 'Выберите даты и код активности для заполнения', 'error'); return; } + let start; + let end; + try { + start = readDateInputIso(fillStartInput, 'Дата начала диапазона'); + end = readDateInputIso(fillEndInput, 'Дата окончания диапазона'); + } catch (error) { + showAlert('calendar-editor-alert', error.message, 'error'); + return; + } if (end < start) { showAlert('calendar-editor-alert', 'Дата окончания не может быть раньше даты начала', 'error'); return; @@ -1051,12 +1105,33 @@ export async function initAcademicCalendar() { const tooltip = ensureCalendarDayTooltip(); tooltip.innerHTML = renderCalendarDayTooltip(day); tooltip.classList.add('visible'); + positionCalendarDayTooltip(tooltip, day, event); } function hideCalendarDayTooltip() { calendarDayTooltip?.classList.remove('visible'); } + function positionCalendarDayTooltip(tooltip, day, event) { + const dayRect = day.getBoundingClientRect(); + const pointerX = Number.isFinite(event?.clientX) ? event.clientX : dayRect.right; + const pointerY = Number.isFinite(event?.clientY) ? event.clientY : dayRect.bottom; + const tooltipRect = tooltip.getBoundingClientRect(); + const { left, top } = calculateCalendarTooltipPosition({ + pointerX, + pointerY, + tooltipWidth: tooltipRect.width, + tooltipHeight: tooltipRect.height, + viewportWidth: window.innerWidth, + viewportHeight: window.innerHeight + }); + calendarDayTooltipPositionAnimation?.cancel(); + calendarDayTooltipPositionAnimation = tooltip.animate( + [{ left: `${left}px`, top: `${top}px` }], + { duration: 0, fill: 'forwards' } + ); + } + function ensureCalendarDayTooltip() { if (calendarDayTooltip) return calendarDayTooltip; calendarDayTooltip = document.createElement('div'); @@ -1156,13 +1231,13 @@ export async function initAcademicCalendar() { const rows = []; const dates = enumerateDates(calendar.academicYearStartDate, calendar.academicYearEndDate); for (let course = 1; course <= calendar.courseCount; course += 1) { - dates.forEach((date, index) => { + dates.forEach(date => { rows.push({ id: null, calendarId: calendar.id, courseNumber: course, date: date.iso, - weekNumber: Math.floor(index / 7) + 1, + weekNumber: academicCalendarWeekNumber(calendar.academicYearStartDate, date.iso), dayOfWeek: date.dayOfWeek, activityTypeId: theoryActivityId(), activityCode: 'Т' @@ -1285,7 +1360,9 @@ export async function initAcademicCalendar() { function populateEditorCalendarSelect() { const current = editorCalendarSelect.value; editorCalendarSelect.innerHTML = '' + - calendars.map(calendar => ``).join(''); + calendars.map(calendar => + `` + ).join(''); if (current && calendars.some(calendar => String(calendar.id) === String(current))) { editorCalendarSelect.value = current; } @@ -1297,7 +1374,7 @@ export async function initAcademicCalendar() { const current = subjectCalendarSelect.value; subjectCalendarSelect.innerHTML = calendars.length ? '' + calendars.map(calendar => - `` + `` ).join('') : ''; if (current && calendars.some(calendar => String(calendar.id) === String(current))) { @@ -1425,11 +1502,40 @@ export async function initAcademicCalendar() { } function specialityLabel(speciality) { - const code = speciality.specialityCode || speciality.specialtyCode || speciality.specialty_code || speciality.id; + const code = specialityCode(speciality) || speciality.id; const name = speciality.specialityName || speciality.name || ''; return name ? `${code} - ${name}` : String(code); } + function specialityCode(speciality) { + return speciality?.specialityCode + || speciality?.specialtyCode + || speciality?.speciality_code + || speciality?.specialty_code + || ''; + } + + function buildCalendarTitleFromForm() { + const specialty = specialties.find(item => + String(item.id) === String(calendarSpecialtySelect.value) + ); + const profile = (profilesBySpecialty.get(String(calendarSpecialtySelect.value)) || []) + .find(item => String(item.id) === String(calendarProfileSelect.value)); + const studyForm = studyForms.find(item => + String(item.id) === String(calendarStudyFormSelect.value) + ); + const academicYear = academicYears.find(item => + String(item.id) === String(calendarYearSelect.value) + ); + + return buildAcademicCalendarTitle({ + specialtyCode: specialityCode(specialty), + specialtyProfileName: profile?.name, + studyFormName: studyForm?.name, + academicYearTitle: academicYear?.title + }); + } + function dayLabel(value) { return DAY_OPTIONS.find(day => String(day.value) === String(value))?.label || '-'; } diff --git a/frontend/admin/js/views/groups.js b/frontend/admin/js/views/groups.js index 754525e..b9e6150 100644 --- a/frontend/admin/js/views/groups.js +++ b/frontend/admin/js/views/groups.js @@ -1,5 +1,6 @@ import { api } from '../api.js'; import { escapeHtml, showAlert, hideAlert } from '../utils.js'; +import { buildAcademicCalendarTitle } from './academic-calendar-title.js'; async function fetchEducationForms() { try { @@ -384,7 +385,7 @@ export async function initGroups() { : []; manageCalendarSelect.innerHTML = matching.length ? '' + matching.map(calendar => - `` + `` ).join('') : ''; syncSelects(manageCalendarSelect); @@ -767,7 +768,7 @@ export async function initGroups() { manageCalendarTbody.innerHTML = currentAssignments.map(assignment => ` - + '; + calendarsTbody.innerHTML = ''; try { calendars = await api.get('/api/admin/academic-calendars'); renderCalendars(); populateEditorCalendarSelect(); populateSubjectCalendarSelect(); } catch (error) { - calendarsTbody.innerHTML = ``; + calendarsTbody.innerHTML = ``; throw error; } } function renderCalendars() { if (!calendars.length) { - calendarsTbody.innerHTML = ''; + calendarsTbody.innerHTML = ''; return; } calendarsTbody.innerHTML = calendars.map(calendar => ` - @@ -488,7 +487,6 @@ export async function initAcademicCalendar() { hideAlert('academic-calendar-alert'); const payload = { id: calendarIdInput.value ? Number(calendarIdInput.value) : null, - title: buildCalendarTitleFromForm(), academicYearId: Number(calendarYearSelect.value), specialtyId: Number(calendarSpecialtySelect.value), specialtyProfileId: Number(calendarProfileSelect.value), @@ -496,7 +494,7 @@ export async function initAcademicCalendar() { courseCount: Number(calendarCourseCountInput.value) }; try { - if (!payload.title || !payload.academicYearId || !payload.specialtyId + if (!payload.academicYearId || !payload.specialtyId || !payload.specialtyProfileId || !payload.studyFormId || !payload.courseCount) { throw new Error('Заполните все поля календарного графика'); } @@ -504,7 +502,7 @@ export async function initAcademicCalendar() { const saved = id ? await api.put('/api/admin/academic-calendars/' + id, payload) : await api.post('/api/admin/academic-calendars', payload); - const savedTitle = buildAcademicCalendarTitle(saved) || payload.title; + const savedTitle = buildAcademicCalendarTitle(saved); showAlert('academic-calendar-alert', `График "${escapeHtml(savedTitle)}" сохранён`, 'success'); resetCalendarForm(); await loadCalendars(); @@ -1126,9 +1124,13 @@ export async function initAcademicCalendar() { viewportHeight: window.innerHeight }); calendarDayTooltipPositionAnimation?.cancel(); + const positionedTransform = `translate3d(${left}px, ${top}px, 0) scale(1)`; calendarDayTooltipPositionAnimation = tooltip.animate( - [{ left: `${left}px`, top: `${top}px` }], - { duration: 0, fill: 'forwards' } + [ + { transform: positionedTransform }, + { transform: positionedTransform } + ], + { duration: 1, fill: 'forwards' } ); } @@ -1515,27 +1517,6 @@ export async function initAcademicCalendar() { || ''; } - function buildCalendarTitleFromForm() { - const specialty = specialties.find(item => - String(item.id) === String(calendarSpecialtySelect.value) - ); - const profile = (profilesBySpecialty.get(String(calendarSpecialtySelect.value)) || []) - .find(item => String(item.id) === String(calendarProfileSelect.value)); - const studyForm = studyForms.find(item => - String(item.id) === String(calendarStudyFormSelect.value) - ); - const academicYear = academicYears.find(item => - String(item.id) === String(calendarYearSelect.value) - ); - - return buildAcademicCalendarTitle({ - specialtyCode: specialityCode(specialty), - specialtyProfileName: profile?.name, - studyFormName: studyForm?.name, - academicYearTitle: academicYear?.title - }); - } - function dayLabel(value) { return DAY_OPTIONS.find(day => String(day.value) === String(value))?.label || '-'; } diff --git a/frontend/admin/js/views/schedule-view.js b/frontend/admin/js/views/schedule-view.js index 500b58f..85b80a1 100644 --- a/frontend/admin/js/views/schedule-view.js +++ b/frontend/admin/js/views/schedule-view.js @@ -37,6 +37,7 @@ const CELL_PARITY_LAYOUT = [ ]; const MOBILE_QUERY = '(max-width: 760px)'; const DEFAULT_SEMESTER_WEEKS = 22; +const SCHEDULE_REFRESH_PROMPT = 'Нажмите «Показать», чтобы обновить расписание'; export async function initScheduleView() { const session = getSession(); @@ -89,7 +90,7 @@ export async function initScheduleView() { targetSelect?.addEventListener('change', () => { clearInactiveEntityValues(); updateEntityFieldVisibility(); - resetResults('Нажмите «Показать», чтобы обновить расписание'); + resetResults(SCHEDULE_REFRESH_PROMPT); }); loadButton?.addEventListener('click', loadData); previousPeriodButton?.addEventListener('click', () => movePeriod(-1)); @@ -100,16 +101,21 @@ export async function initScheduleView() { nextPeriodButton?.addEventListener('click', () => movePeriod(1)); dateInput?.addEventListener('change', () => { updatePeriodLabel(); - resetResults('Нажмите «Показать», чтобы обновить расписание'); + resetResults(SCHEDULE_REFRESH_PROMPT); }); semesterSelect?.addEventListener('change', () => { synchronizeDateWithSemester(); updatePeriodLabel(); - resetResults('Нажмите «Показать», чтобы обновить расписание'); + resetResults(SCHEDULE_REFRESH_PROMPT); }); resultPreviousButton?.addEventListener('click', () => moveResult(-1)); resultNextButton?.addEventListener('click', () => moveResult(1)); tables?.addEventListener('click', event => { + const reloadButton = event.target.closest('[data-schedule-view-reload]'); + if (reloadButton) { + loadData(); + return; + } const button = event.target.closest('[data-schedule-override-edit]'); if (!button) return; const lesson = state.lessons.find(item => @@ -743,9 +749,20 @@ export async function initScheduleView() { `; } - function setTableState(message) { + function setTableState(message, showReloadButton = false) { if (!tables) return; - tables.innerHTML = `
${escapeHtml(message)}
`; + tables.innerHTML = ` +
+ ${escapeHtml(message)} + ${showReloadButton ? ` + + ` : ''} +
+ `; } function resetResults(message) { @@ -757,7 +774,7 @@ export async function initScheduleView() { renderResultNavigation(); tableTitle.textContent = 'Расписание'; tableCaption.textContent = message; - setTableState(message); + setTableState(message, message === SCHEDULE_REFRESH_PROMPT); countLabel.textContent = '0 занятий'; dayTabs.hidden = true; dayTabs.innerHTML = ''; diff --git a/frontend/admin/js/views/schedule.js b/frontend/admin/js/views/schedule.js index fb274b8..129ab2c 100644 --- a/frontend/admin/js/views/schedule.js +++ b/frontend/admin/js/views/schedule.js @@ -30,6 +30,10 @@ const SEMESTER_LABELS = { const WHOLE_GROUP_SUBGROUP_VALUE = '__whole_group__'; const ACADEMIC_HOURS_PER_SLOT = 2; +export function scheduleSlotActionLabel(slotCount) { + return slotCount === 1 ? 'Очистить' : 'Удалить'; +} + const LESSON_TYPE_LIMITS = [ { key: 'lecture', @@ -1364,7 +1368,11 @@ export async function initSchedule() { } function renderRuleSlots(slots) { - ruleSlotsContainer.innerHTML = (slots || [{}]).map((slot, index) => ` + const normalizedSlots = slots?.length ? slots : [{}]; + const isSingleSlot = normalizedSlots.length === 1; + const actionLabel = scheduleSlotActionLabel(normalizedSlots.length); + const actionClass = isSingleSlot ? 'btn-ghost' : 'btn-danger'; + ruleSlotsContainer.innerHTML = normalizedSlots.map((slot, index) => `
@@ -1374,7 +1382,7 @@ export async function initSchedule() {
${isLaboratorySlot(slot) ? renderSubgroupField(slot, index) : ''}
- +
`).join(''); } diff --git a/frontend/admin/settings/index.html b/frontend/admin/settings/index.html index e1aa02b..3ffd53b 100644 --- a/frontend/admin/settings/index.html +++ b/frontend/admin/settings/index.html @@ -90,14 +90,6 @@
-

Загрузка...

diff --git a/frontend/admin/settings/js/main.js b/frontend/admin/settings/js/main.js index a3fe82a..158bc8f 100644 --- a/frontend/admin/settings/js/main.js +++ b/frontend/admin/settings/js/main.js @@ -60,7 +60,6 @@ const pageTitle = document.getElementById('page-title'); const navItems = document.querySelectorAll('.nav-item[data-tab]'); const sidebar = document.querySelector('.sidebar'); const sidebarOverlay = document.getElementById('sidebar-overlay'); -const menuToggle = document.getElementById('menu-toggle'); const sidebarCloseBtn = document.getElementById('sidebar-close-btn'); const main = document.querySelector('.main'); @@ -70,18 +69,6 @@ if (window.innerWidth > 768 && localStorage.getItem('sidebar-collapsed') === 'tr main.classList.add('sidebar-collapsed'); } -// Кнопка меню -menuToggle.addEventListener('click', () => { - if (window.innerWidth <= 768) { - sidebar.classList.toggle('open'); - sidebarOverlay.classList.toggle('open'); - } else { - sidebar.classList.remove('collapsed'); - main.classList.remove('sidebar-collapsed'); - localStorage.setItem('sidebar-collapsed', 'false'); - } -}); - // Сворачивание боковой панели sidebarCloseBtn?.addEventListener('click', () => { if (window.innerWidth <= 768) { diff --git a/frontend/admin/views/academic-calendar.html b/frontend/admin/views/academic-calendar.html index e3b47e3..fd9e010 100644 --- a/frontend/admin/views/academic-calendar.html +++ b/frontend/admin/views/academic-calendar.html @@ -137,7 +137,6 @@
+ aria-label="${escapeHtml(`${formatShortDate(row.date)} ${dayName}, ${row.weekNumber} неделя, код ${code}`)}"> ${escapeHtml(code)} ${timeAssignmentForDate(row.date) ? 'вр.' : ''} @@ -921,7 +919,7 @@ export async function initAcademicCalendar() { return; } calendarDayDialogActivitySummary.innerHTML = ` - ${escapeHtml(activity.code)} + ${escapeHtml(activity.code)}
${escapeHtml(activity.name)}

${escapeHtml(activity.description || (activity.allowSchedule ? 'Обычные пары разрешены' : 'Обычные пары не генерируются'))}

@@ -938,7 +936,7 @@ export async function initAcademicCalendar() { const activity = activityById(commonCalendarDayActivityValue(days)); if (!activity) { calendarDayDialogActivitySummary.innerHTML = ` - ... + ...
Выбрано ячеек: ${days.length}

Выберите код активности, чтобы применить его ко всему выделению

@@ -948,7 +946,7 @@ export async function initAcademicCalendar() { } calendarDayDialogActivitySummary.innerHTML = ` - ${escapeHtml(activity.code)} + ${escapeHtml(activity.code)}
${escapeHtml(activity.name)} · ${days.length} ячеек

${escapeHtml(activity.description || (activity.allowSchedule ? 'Обычные пары разрешены' : 'Обычные пары не генерируются'))}

@@ -1041,8 +1039,6 @@ export async function initAcademicCalendar() { const select = day.querySelector('.calendar-day-activity'); const activity = activityById(select.value); const code = activity?.code || '-'; - const color = activity?.colorCode || '#64748b'; - day.style.setProperty('--activity-color', color); day.querySelector('.calendar-day-code').textContent = code; day.setAttribute('aria-label', `${formatShortDate(day.dataset.date)} ${shortDayLabel(day.dataset.day)}, ${day.dataset.week} неделя, код ${code}`); } @@ -1053,11 +1049,8 @@ export async function initAcademicCalendar() { return; } const tooltip = ensureCalendarDayTooltip(); - const activity = activityById(day.querySelector('.calendar-day-activity')?.value); - tooltip.style.setProperty('--activity-color', activity?.colorCode || '#64748b'); tooltip.innerHTML = renderCalendarDayTooltip(day); tooltip.classList.add('visible'); - positionCalendarDayTooltip(tooltip, day, event); } function hideCalendarDayTooltip() { @@ -1076,14 +1069,13 @@ export async function initAcademicCalendar() { function renderCalendarDayTooltip(day) { const activity = activityById(day.querySelector('.calendar-day-activity')?.value); const code = activity?.code || day.querySelector('.calendar-day-code')?.textContent || '-'; - const color = activity?.colorCode || '#64748b'; const timeAssignment = timeAssignmentForDate(day.dataset.date); const timeLabel = timeAssignment ? (timeSlotScopes.find(scope => String(scope.id) === String(timeAssignment.scopeId))?.name || 'ручная сетка') : automaticTimeScopeLabel(day.dataset.date).replace('По правилу даты ', ''); return `
- ${escapeHtml(code)} + ${escapeHtml(code)}
${escapeHtml(formatLongDate(day.dataset.date))} ${escapeHtml(shortDayLabel(day.dataset.day))}, ${escapeHtml(day.dataset.week)} неделя @@ -1106,24 +1098,6 @@ export async function initAcademicCalendar() { `; } - function positionCalendarDayTooltip(tooltip, day, event) { - const offset = 14; - const rect = day.getBoundingClientRect(); - const x = event?.clientX ?? rect.left + rect.width / 2; - const y = event?.clientY ?? rect.top; - const tooltipRect = tooltip.getBoundingClientRect(); - let left = x + offset; - let top = y + offset; - if (left + tooltipRect.width > window.innerWidth - 12) { - left = x - tooltipRect.width - offset; - } - if (top + tooltipRect.height > window.innerHeight - 12) { - top = y - tooltipRect.height - offset; - } - tooltip.style.left = `${Math.max(12, left)}px`; - tooltip.style.top = `${Math.max(12, top)}px`; - } - function startCalendarDayDragSelection(event, day) { if (event.button !== 0) return; hideCalendarDayTooltip(); @@ -1246,10 +1220,9 @@ export async function initAcademicCalendar() { calendarTotals.innerHTML = Array.from(counts.entries()) .sort(([a], [b]) => a.localeCompare(b, 'ru')) .map(([code, count]) => { - const activity = activityTypes.find(item => item.code === code); const selectedClass = selectedCode === code ? ' is-selected' : ''; const suffix = selectedCode === code ? 'выбрано' : ''; - return `${escapeHtml(code)}: ${count}${suffix}`; + return `${escapeHtml(code)}: ${count}${suffix}`; }).join(''); } diff --git a/frontend/admin/js/views/classrooms.js b/frontend/admin/js/views/classrooms.js index e426580..8d5090a 100755 --- a/frontend/admin/js/views/classrooms.js +++ b/frontend/admin/js/views/classrooms.js @@ -5,7 +5,7 @@ async function fetchEquipments() { try { return await api.get('/api/equipments'); } catch (e) { - console.error("Failed to fetch equipments", e); + console.error('Не удалось загрузить список оборудования'); return []; } } diff --git a/frontend/admin/js/views/dashboard.js b/frontend/admin/js/views/dashboard.js index d594266..bf45dc0 100644 --- a/frontend/admin/js/views/dashboard.js +++ b/frontend/admin/js/views/dashboard.js @@ -325,18 +325,16 @@ export async function initDashboard() { const conflictCards = conflicts.map(c => { const isError = c.severity === 'error'; - const borderCol = isError ? 'var(--error, #ef4444)' : '#f59e0b'; - const bgCol = isError ? 'rgba(239, 68, 68, 0.05)' : 'rgba(245, 158, 11, 0.05)'; const badgeIcon = isError ? `` : ``; return ` -
-
${badgeIcon}
-
-

${escapeHtml(c.title)}

-

${c.description}

+
+
${badgeIcon}
+
+

${escapeHtml(c.title)}

+

${escapeHtml(c.description)}

`; diff --git a/frontend/admin/js/views/department-workspace.js b/frontend/admin/js/views/department-workspace.js index 1614365..b34a134 100644 --- a/frontend/admin/js/views/department-workspace.js +++ b/frontend/admin/js/views/department-workspace.js @@ -1,11 +1,12 @@ -import { api } from '../api.js'; -import { escapeHtml, showAlert, hideAlert } from '../utils.js'; +import { api, getSession } from '../api.js'; +import { escapeHtml, formatLocalDate, showAlert, hideAlert } from '../utils.js'; const ROLE_DEPARTMENT = 'DEPARTMENT'; export async function initDepartmentWorkspace() { - const role = localStorage.getItem('role'); - const userDepartmentId = localStorage.getItem('departmentId'); + const session = getSession(); + const role = session?.role; + const userDepartmentId = session?.departmentId; const departmentField = document.getElementById('department-workspace-department-field'); const departmentSelect = document.getElementById('department-workspace-department'); const startInput = document.getElementById('department-workspace-start'); @@ -493,14 +494,10 @@ function fillSelect(id, items, valueFn, labelFn, emptyLabel) { function setDefaultDates(startInput, endInput) { const today = new Date(); - const nextWeek = new Date(); + const nextWeek = new Date(today); nextWeek.setDate(today.getDate() + 7); - startInput.value = toIsoDate(today); - endInput.value = toIsoDate(nextWeek); -} - -function toIsoDate(date) { - return date.toISOString().slice(0, 10); + startInput.value = formatLocalDate(today); + endInput.value = formatLocalDate(nextWeek); } function formatDateTime(value) { diff --git a/frontend/admin/js/views/groups.js b/frontend/admin/js/views/groups.js index c5048b5..754525e 100644 --- a/frontend/admin/js/views/groups.js +++ b/frontend/admin/js/views/groups.js @@ -5,7 +5,7 @@ async function fetchEducationForms() { try { return await api.get('/api/education-forms'); } catch (e) { - console.error("Failed to fetch education forms", e); + console.error('Не удалось загрузить формы обучения'); return []; } } @@ -182,7 +182,7 @@ export async function initGroups() { try { subgroups = await api.get('/api/subgroups'); } catch (error) { - console.error("Failed to load subgroups", error); + console.error('Не удалось загрузить подгруппы'); } } @@ -560,7 +560,7 @@ export async function initGroups() { renderSubgroupCapacityFields(count, current.map(item => item.studentCapacity)); subgroupFormTitle.textContent = 'Настройка подгрупп'; btnSaveSubgroup.textContent = 'Применить'; - btnCancelSubgroupEdit.style.display = 'none'; + btnCancelSubgroupEdit.hidden = true; hideAlert('manage-subgroup-alert'); } diff --git a/frontend/admin/js/views/schedule-view.js b/frontend/admin/js/views/schedule-view.js index bbc42a4..6ed0708 100644 --- a/frontend/admin/js/views/schedule-view.js +++ b/frontend/admin/js/views/schedule-view.js @@ -1,4 +1,4 @@ -import { api } from '../api.js'; +import { api, getSession } from '../api.js'; import { escapeHtml, showAlert, hideAlert } from '../utils.js'; const ROLE_DEPARTMENT = 'DEPARTMENT'; @@ -38,8 +38,9 @@ const MOBILE_QUERY = '(max-width: 760px)'; const DEFAULT_SEMESTER_WEEKS = 22; export async function initScheduleView() { - const role = localStorage.getItem('role'); - const userDepartmentId = normalizeId(localStorage.getItem('departmentId')); + const session = getSession(); + const role = session?.role; + const userDepartmentId = normalizeId(session?.departmentId); const dateInput = document.getElementById('schedule-view-date'); const targetSelect = document.getElementById('schedule-view-target'); const loadButton = document.getElementById('schedule-view-load'); diff --git a/frontend/admin/js/views/schedule.js b/frontend/admin/js/views/schedule.js index e57faab..fb274b8 100644 --- a/frontend/admin/js/views/schedule.js +++ b/frontend/admin/js/views/schedule.js @@ -658,13 +658,7 @@ export async function initSchedule() { slotIndex: button.dataset.slotIndex || '' }; if (!visualContextMenu) return; - const rect = button.getBoundingClientRect(); visualContextMenu.hidden = false; - const menuRect = visualContextMenu.getBoundingClientRect(); - const top = Math.min(rect.bottom + 6, window.innerHeight - menuRect.height - 12); - const left = Math.min(rect.left, window.innerWidth - menuRect.width - 12); - visualContextMenu.style.top = `${Math.max(12, top)}px`; - visualContextMenu.style.left = `${Math.max(12, left)}px`; visualContextMenu.querySelector('button')?.focus(); } @@ -672,8 +666,6 @@ export async function initSchedule() { visualContextTarget = null; if (!visualContextMenu) return; visualContextMenu.hidden = true; - visualContextMenu.style.top = ''; - visualContextMenu.style.left = ''; } async function handleVisualContextMenuClick(event) { diff --git a/frontend/admin/js/views/teacher-requests.js b/frontend/admin/js/views/teacher-requests.js index 787b0db..1a6b931 100644 --- a/frontend/admin/js/views/teacher-requests.js +++ b/frontend/admin/js/views/teacher-requests.js @@ -1,5 +1,5 @@ import { api } from '../api.js'; -import { escapeHtml, hideAlert, showAlert } from '../utils.js'; +import { escapeHtml, hideAlert, renderTableMessage, showAlert } from '../utils.js'; export async function initTeacherRequests() { const requestsTbody = document.getElementById('teacher-requests-tbody'); @@ -23,7 +23,7 @@ export async function initTeacherRequests() { detail: { count: normalizedRequests.length } })); } catch (error) { - requestsTbody.innerHTML = `
${escapeHtml(error.message || 'Ошибка загрузки заявок')}
${escapeHtml(request.comment || '-')}
@@ -131,6 +131,6 @@ export async function initTeacherRequests() { await loadDepartments(); await loadRequests(); } catch (error) { - requestsTbody.innerHTML = `
${escapeHtml(error.message || 'Ошибка загрузки')}
Ошибка загрузки: ${e.message}
${escapeHtml(calendar.title)}${escapeHtml(buildAcademicCalendarTitle(calendar) || '-')} ${escapeHtml(calendar.academicYearTitle || '-')} ${escapeHtml(`${calendar.specialtyCode || ''} ${calendar.specialtyName || ''}`.trim() || '-')} ${escapeHtml(calendar.specialtyProfileName || '-')}
${escapeHtml(assignment.academicYearTitle)}${escapeHtml(assignment.calendarTitle)}${escapeHtml(assignmentCalendarTitle(assignment))} ${renderAssignmentSubjects(assignment.subjects || [])} @@ -776,6 +777,13 @@ export async function initGroups() { `).join(''); } + function assignmentCalendarTitle(assignment) { + const calendar = calendars.find(item => + String(item.id) === String(assignment.calendarId) + ); + return buildAcademicCalendarTitle(calendar) || assignment.calendarTitle || '-'; + } + function renderAssignmentSubjects(subjects) { if (!subjects.length) { return 'Не привязаны'; diff --git a/frontend/admin/views/academic-calendar.html b/frontend/admin/views/academic-calendar.html index 915f0c7..e3b47e3 100644 --- a/frontend/admin/views/academic-calendar.html +++ b/frontend/admin/views/academic-calendar.html @@ -16,11 +16,11 @@
- +
- +
@@ -73,11 +73,11 @@
- +
- +
@@ -94,10 +94,6 @@
-
- - -
+
- +
diff --git a/frontend/tests/academic-calendar-grid.test.mjs b/frontend/tests/academic-calendar-grid.test.mjs new file mode 100644 index 0000000..4af09cc --- /dev/null +++ b/frontend/tests/academic-calendar-grid.test.mjs @@ -0,0 +1,29 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; + +import { academicCalendarWeekNumber } from '../admin/js/views/academic-calendar-grid.js'; + +test('в 2026 году первая неделя оставляет понедельник перед 1 сентября пустым', () => { + const yearStart = '2026-09-01'; + + assert.equal(academicCalendarWeekNumber(yearStart, '2026-09-01'), 1); + assert.equal(academicCalendarWeekNumber(yearStart, '2026-09-06'), 1); + assert.equal(academicCalendarWeekNumber(yearStart, '2026-09-07'), 2); + assert.equal(academicCalendarWeekNumber(yearStart, '2026-09-14'), 3); +}); + +test('в 2027 году первая неделя оставляет понедельник и вторник перед 1 сентября пустыми', () => { + const yearStart = '2027-09-01'; + + assert.equal(academicCalendarWeekNumber(yearStart, '2027-09-01'), 1); + assert.equal(academicCalendarWeekNumber(yearStart, '2027-09-05'), 1); + assert.equal(academicCalendarWeekNumber(yearStart, '2027-09-06'), 2); + assert.equal(academicCalendarWeekNumber(yearStart, '2027-09-13'), 3); +}); + +test('учебный год с понедельника сохраняет полную первую неделю', () => { + const yearStart = '2025-09-01'; + + assert.equal(academicCalendarWeekNumber(yearStart, '2025-09-07'), 1); + assert.equal(academicCalendarWeekNumber(yearStart, '2025-09-08'), 2); +}); diff --git a/frontend/tests/academic-calendar-title.test.mjs b/frontend/tests/academic-calendar-title.test.mjs new file mode 100644 index 0000000..cf7427a --- /dev/null +++ b/frontend/tests/academic-calendar-title.test.mjs @@ -0,0 +1,31 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; + +import { buildAcademicCalendarTitle } from '../admin/js/views/academic-calendar-title.js'; + +test('название календарного графика собирается в заданном порядке', () => { + assert.equal(buildAcademicCalendarTitle({ + specialtyCode: '09.03.04', + specialtyProfileName: 'Программная инженерия', + studyFormName: 'Очная', + academicYearTitle: '2025-2026' + }), '09.03.04 — Программная инженерия — Очная — 2025-2026'); +}); + +test('части названия очищаются от лишних пробелов', () => { + assert.equal(buildAcademicCalendarTitle({ + specialtyCode: ' 09.03.04 ', + specialtyProfileName: ' Без профиля ', + studyFormName: ' Заочная ', + academicYearTitle: ' 2026-2027 ' + }), '09.03.04 — Без профиля — Заочная — 2026-2027'); +}); + +test('неполный набор полей не образует вводящее в заблуждение название', () => { + assert.equal(buildAcademicCalendarTitle({ + specialtyCode: '09.03.04', + specialtyProfileName: '', + studyFormName: 'Очная', + academicYearTitle: '2025-2026' + }), ''); +}); diff --git a/frontend/tests/academic-calendar-tooltip.test.mjs b/frontend/tests/academic-calendar-tooltip.test.mjs new file mode 100644 index 0000000..b4ee866 --- /dev/null +++ b/frontend/tests/academic-calendar-tooltip.test.mjs @@ -0,0 +1,37 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; + +import { calculateCalendarTooltipPosition } from '../admin/js/views/academic-calendar.js'; + +test('подсказка располагается с отступом справа и снизу от курсора', () => { + assert.deepEqual(calculateCalendarTooltipPosition({ + pointerX: 100, + pointerY: 80, + tooltipWidth: 280, + tooltipHeight: 160, + viewportWidth: 1280, + viewportHeight: 720 + }), { left: 114, top: 94 }); +}); + +test('у правого нижнего края подсказка раскрывается влево и вверх', () => { + assert.deepEqual(calculateCalendarTooltipPosition({ + pointerX: 1260, + pointerY: 700, + tooltipWidth: 280, + tooltipHeight: 160, + viewportWidth: 1280, + viewportHeight: 720 + }), { left: 966, top: 526 }); +}); + +test('подсказка не выходит за минимальные отступы узкого viewport', () => { + assert.deepEqual(calculateCalendarTooltipPosition({ + pointerX: 190, + pointerY: 110, + tooltipWidth: 176, + tooltipHeight: 96, + viewportWidth: 200, + viewportHeight: 120 + }), { left: 12, top: 12 }); +}); diff --git a/frontend/tests/date-input.test.mjs b/frontend/tests/date-input.test.mjs new file mode 100644 index 0000000..eb089ee --- /dev/null +++ b/frontend/tests/date-input.test.mjs @@ -0,0 +1,91 @@ +import assert from 'node:assert/strict'; +import { readFile } from 'node:fs/promises'; +import test from 'node:test'; + +import { + bindDateInputMask, + dateInputValueToIso, + formatDateInputValue, + isoDateToInputValue +} from '../admin/js/date-input.js'; + +test('маска расставляет точки при последовательном вводе восьми цифр', () => { + assert.equal(formatDateInputValue('0'), '0'); + assert.equal(formatDateInputValue('01'), '01'); + assert.equal(formatDateInputValue('010'), '01.0'); + assert.equal(formatDateInputValue('0109'), '01.09'); + assert.equal(formatDateInputValue('01092'), '01.09.2'); + assert.equal(formatDateInputValue('01092026'), '01.09.2026'); +}); + +test('маска удаляет посторонние символы и ограничивает год четырьмя цифрами', () => { + assert.equal(formatDateInputValue('01-09/2026'), '01.09.2026'); + assert.equal(formatDateInputValue('010920261234'), '01.09.2026'); +}); + +test('привязанная маска расставляет точки прямо во время ввода', () => { + const input = new DateInputStub(); + bindDateInputMask(input); + + typeText(input, '01092026'); + assert.equal(input.value, '01.09.2026'); + assert.equal(input.selectionStart, 10); + + typeText(input, '12'); + assert.equal(input.value, '01.09.2026'); + assert.equal(input.selectionStart, 10); +}); + +test('дата преобразуется между форматом поля и ISO без потери значения', () => { + assert.equal(dateInputValueToIso('01.09.2026'), '2026-09-01'); + assert.equal(isoDateToInputValue('2026-09-01'), '01.09.2026'); +}); + +test('неполный, шестизначный год и несуществующие даты отклоняются', () => { + assert.throws(() => dateInputValueToIso('01.09.202'), /год — 4 цифры/); + assert.throws(() => dateInputValueToIso('01.09.202612'), /год — 4 цифры/); + assert.throws(() => dateInputValueToIso('31.02.2026'), /существующую дату/); + assert.equal(dateInputValueToIso('29.02.2024'), '2024-02-29'); + assert.throws(() => dateInputValueToIso('29.02.2025'), /существующую дату/); +}); + +test('все поля дат календарного графика подключены к числовой маске', async () => { + const template = await readFile(new URL('../admin/views/academic-calendar.html', import.meta.url), 'utf8'); + assert.equal(template.match(/\bdata-date-input\b/g)?.length, 6); + assert.equal(template.match(/\bmaxlength="10"/g)?.length, 6); + assert.doesNotMatch(template, /type="date"/); +}); + +class DateInputStub extends EventTarget { + constructor() { + super(); + this.value = ''; + this.selectionStart = 0; + this.selectionEnd = 0; + this.form = null; + } + + setSelectionRange(start, end) { + this.selectionStart = start; + this.selectionEnd = end; + } + + setCustomValidity() {} + + setAttribute() {} + + removeAttribute() {} + + focus() {} +} + +function typeText(input, text) { + for (const character of text) { + const start = input.selectionStart; + const end = input.selectionEnd; + input.value = input.value.slice(0, start) + character + input.value.slice(end); + input.selectionStart = start + 1; + input.selectionEnd = start + 1; + input.dispatchEvent(new Event('input')); + } +} From a78a93f2f039f029383cf1c049300a9d8b64ee3a Mon Sep 17 00:00:00 2001 From: Zuev Date: Mon, 27 Jul 2026 02:23:26 +0300 Subject: [PATCH 13/14] =?UTF-8?q?#5=208=209=2010=2012=2013=2017=20-=20?= =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D1=8B.=20#15=20-=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AcademicCalendarController.java | 6 +- .../app/service/AcademicStructureService.java | 11 +- .../utils/AcademicCalendarTitleBuilder.java | 38 +++++++ .../AcademicCalendarControllerTest.java | 98 ++++++++++++++++ .../service/AcademicStructureServiceTest.java | 14 ++- .../AcademicCalendarTitleBuilderTest.java | 40 +++++++ docs/API.md | 5 +- docs/BUSINESS_LOGIC.md | 4 + docs/FRONTEND.md | 11 +- frontend/admin/css/auditorium-workload.css | 12 ++ frontend/admin/css/components.css | 24 +++- frontend/admin/css/layout.css | 17 +++ frontend/admin/index.html | 8 -- frontend/admin/js/main.js | 15 +-- frontend/admin/js/views/academic-calendar.js | 41 ++----- frontend/admin/js/views/schedule-view.js | 29 ++++- frontend/admin/js/views/schedule.js | 12 +- frontend/admin/settings/index.html | 8 -- frontend/admin/settings/js/main.js | 13 --- frontend/admin/views/academic-calendar.html | 3 +- frontend/tests/admin-ui-regressions.test.mjs | 106 ++++++++++++++++++ 21 files changed, 413 insertions(+), 102 deletions(-) create mode 100644 backend/src/main/java/com/magistr/app/utils/AcademicCalendarTitleBuilder.java create mode 100644 backend/src/test/java/com/magistr/app/controller/AcademicCalendarControllerTest.java create mode 100644 backend/src/test/java/com/magistr/app/utils/AcademicCalendarTitleBuilderTest.java create mode 100644 frontend/tests/admin-ui-regressions.test.mjs diff --git a/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java b/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java index 83074a7..e16703a 100644 --- a/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java +++ b/backend/src/main/java/com/magistr/app/controller/AcademicCalendarController.java @@ -7,6 +7,7 @@ import com.magistr.app.repository.*; import com.magistr.app.service.AcademicCalendarGridService; import com.magistr.app.service.AcademicStructureService; import com.magistr.app.service.ScheduleGeneratorService; +import com.magistr.app.utils.AcademicCalendarTitleBuilder; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -152,9 +153,6 @@ public class AcademicCalendarController { if (request == null) { throw new IllegalArgumentException("Передайте данные календарного графика"); } - if (request.title() == null || request.title().isBlank()) { - throw new IllegalArgumentException("Название графика обязательно"); - } if (request.courseCount() == null || request.courseCount() <= 0) { throw new IllegalArgumentException("Количество курсов должно быть больше нуля"); } @@ -178,7 +176,7 @@ public class AcademicCalendarController { EducationForm studyForm = educationFormRepository.findById(request.studyFormId()) .orElseThrow(() -> new IllegalArgumentException("Форма обучения не найдена")); - calendar.setTitle(request.title().trim()); + calendar.setTitle(AcademicCalendarTitleBuilder.build(year, speciality, profile, studyForm)); calendar.setAcademicYear(year); calendar.setSpeciality(speciality); calendar.setSpecialtyProfile(profile); diff --git a/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java b/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java index 24e3232..edd81de 100644 --- a/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java +++ b/backend/src/main/java/com/magistr/app/service/AcademicStructureService.java @@ -20,6 +20,7 @@ import com.magistr.app.repository.SpecialtiesRepository; import com.magistr.app.repository.SpecialtyProfileRepository; import com.magistr.app.repository.StudentGroupCalendarAssignmentRepository; import com.magistr.app.repository.SubgroupRepository; +import com.magistr.app.utils.AcademicCalendarTitleBuilder; import com.magistr.app.utils.CourseAndSemesterCalculator; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; @@ -126,7 +127,12 @@ public class AcademicStructureService { ); } - calendar.setTitle(request.title().trim()); + calendar.setTitle(AcademicCalendarTitleBuilder.build( + candidate.academicYear(), + candidate.speciality(), + candidate.profile(), + candidate.studyForm() + )); applyCalendarDimensions(calendar, candidate, request.courseCount()); AcademicCalendar saved = saveCalendar(calendar); clearScheduleCacheAfterCommit(); @@ -208,9 +214,6 @@ public class AcademicStructureService { if (request == null) { throw new IllegalArgumentException("Передайте данные календарного графика"); } - if (request.title() == null || request.title().isBlank()) { - throw new IllegalArgumentException("Название графика обязательно"); - } if (request.courseCount() == null || request.courseCount() <= 0) { throw new IllegalArgumentException("Количество курсов должно быть больше нуля"); } diff --git a/backend/src/main/java/com/magistr/app/utils/AcademicCalendarTitleBuilder.java b/backend/src/main/java/com/magistr/app/utils/AcademicCalendarTitleBuilder.java new file mode 100644 index 0000000..bfd8860 --- /dev/null +++ b/backend/src/main/java/com/magistr/app/utils/AcademicCalendarTitleBuilder.java @@ -0,0 +1,38 @@ +package com.magistr.app.utils; + +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.EducationForm; +import com.magistr.app.model.Speciality; +import com.magistr.app.model.SpecialtyProfile; + +import java.util.List; + +public final class AcademicCalendarTitleBuilder { + + private static final String SEPARATOR = " — "; + + private AcademicCalendarTitleBuilder() { + } + + public static String build(AcademicYear academicYear, + Speciality speciality, + SpecialtyProfile profile, + EducationForm studyForm) { + List parts = List.of( + normalize(speciality == null ? null : speciality.getSpecialityCode()), + normalize(profile == null ? null : profile.getName()), + normalize(studyForm == null ? null : studyForm.getName()), + normalize(academicYear == null ? null : academicYear.getTitle()) + ); + if (parts.stream().anyMatch(String::isBlank)) { + throw new IllegalArgumentException( + "Невозможно сформировать название календарного графика из выбранных параметров" + ); + } + return String.join(SEPARATOR, parts); + } + + private static String normalize(String value) { + return value == null ? "" : value.trim(); + } +} diff --git a/backend/src/test/java/com/magistr/app/controller/AcademicCalendarControllerTest.java b/backend/src/test/java/com/magistr/app/controller/AcademicCalendarControllerTest.java new file mode 100644 index 0000000..bc95735 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/controller/AcademicCalendarControllerTest.java @@ -0,0 +1,98 @@ +package com.magistr.app.controller; + +import com.magistr.app.dto.AcademicCalendarDto; +import com.magistr.app.model.AcademicCalendar; +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.EducationForm; +import com.magistr.app.model.Speciality; +import com.magistr.app.model.SpecialtyProfile; +import com.magistr.app.repository.AcademicCalendarDayRepository; +import com.magistr.app.repository.AcademicCalendarRepository; +import com.magistr.app.repository.AcademicCalendarSubjectRepository; +import com.magistr.app.repository.AcademicYearRepository; +import com.magistr.app.repository.EducationFormRepository; +import com.magistr.app.repository.SpecialtiesRepository; +import com.magistr.app.repository.SpecialtyProfileRepository; +import com.magistr.app.repository.SubjectRepository; +import com.magistr.app.service.AcademicCalendarGridService; +import com.magistr.app.service.AcademicStructureService; +import com.magistr.app.service.ScheduleGeneratorService; +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +class AcademicCalendarControllerTest { + + @Test + void createCalendarBuildsTitleWithoutClientValue() { + AcademicCalendarRepository calendarRepository = mock(AcademicCalendarRepository.class); + AcademicYearRepository academicYearRepository = mock(AcademicYearRepository.class); + SpecialtiesRepository specialtiesRepository = mock(SpecialtiesRepository.class); + SpecialtyProfileRepository profileRepository = mock(SpecialtyProfileRepository.class); + EducationFormRepository educationFormRepository = mock(EducationFormRepository.class); + + AcademicYear year = new AcademicYear(); + year.setId(1L); + year.setTitle("2026-2027"); + year.setStartDate(LocalDate.of(2026, 9, 1)); + year.setEndDate(LocalDate.of(2027, 6, 30)); + Speciality speciality = new Speciality(2L, "Программная инженерия", "09.03.04"); + SpecialtyProfile profile = new SpecialtyProfile(); + profile.setId(3L); + profile.setSpeciality(speciality); + profile.setName("Разработка ПО"); + EducationForm studyForm = new EducationForm(); + studyForm.setId(4L); + studyForm.setName("Очная"); + + when(academicYearRepository.findById(1L)).thenReturn(Optional.of(year)); + when(specialtiesRepository.findById(2L)).thenReturn(Optional.of(speciality)); + when(profileRepository.findById(3L)).thenReturn(Optional.of(profile)); + when(educationFormRepository.findById(4L)).thenReturn(Optional.of(studyForm)); + when(calendarRepository.save(any(AcademicCalendar.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + + AcademicCalendarController controller = new AcademicCalendarController( + calendarRepository, + mock(AcademicCalendarDayRepository.class), + academicYearRepository, + specialtiesRepository, + profileRepository, + educationFormRepository, + mock(SubjectRepository.class), + mock(AcademicCalendarSubjectRepository.class), + mock(AcademicCalendarGridService.class), + mock(ScheduleGeneratorService.class), + mock(AcademicStructureService.class) + ); + AcademicCalendarDto request = new AcademicCalendarDto( + null, + null, + 1L, + null, + null, + null, + 2L, + null, + null, + 3L, + null, + 4L, + null, + 4 + ); + + var response = controller.createCalendar(request); + + assertThat(response.getStatusCode().value()).isEqualTo(200); + assertThat(response.getBody()).isInstanceOf(AcademicCalendarDto.class); + assertThat(((AcademicCalendarDto) response.getBody()).title()) + .isEqualTo("09.03.04 — Разработка ПО — Очная — 2026-2027"); + } +} diff --git a/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java b/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java index 9b8af15..31c5596 100644 --- a/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java +++ b/backend/src/test/java/com/magistr/app/service/AcademicStructureServiceTest.java @@ -168,6 +168,18 @@ class AcademicStructureServiceTest { .hasMessage("Нельзя уменьшить количество курсов: есть дисциплины старших семестров"); } + @Test + void buildsCalendarTitleFromDimensionsInsteadOfRequestField() { + AcademicCalendar saved = service.updateCalendar( + CALENDAR_ID, + calendarRequest(4, FORM_ID) + ); + + assertThat(saved.getTitle()) + .isEqualTo("09.03.01 — Без профиля — Бакалавриат — 2025-2026"); + verify(calendarRepository).saveAndFlush(calendar); + } + @Test void rejectsGroupDimensionChangeAndKeepsAssignment() { when(assignmentRepository.findByGroupIdWithDetails(GROUP_ID)) @@ -280,7 +292,7 @@ class AcademicStructureServiceTest { private AcademicCalendarDto calendarRequest(int courseCount, long studyFormId) { return new AcademicCalendarDto( CALENDAR_ID, - "График 2026", + null, YEAR_ID, null, null, diff --git a/backend/src/test/java/com/magistr/app/utils/AcademicCalendarTitleBuilderTest.java b/backend/src/test/java/com/magistr/app/utils/AcademicCalendarTitleBuilderTest.java new file mode 100644 index 0000000..53de2f5 --- /dev/null +++ b/backend/src/test/java/com/magistr/app/utils/AcademicCalendarTitleBuilderTest.java @@ -0,0 +1,40 @@ +package com.magistr.app.utils; + +import com.magistr.app.model.AcademicYear; +import com.magistr.app.model.EducationForm; +import com.magistr.app.model.Speciality; +import com.magistr.app.model.SpecialtyProfile; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class AcademicCalendarTitleBuilderTest { + + @Test + void buildsTitleFromCalendarDimensions() { + AcademicYear year = new AcademicYear(); + year.setTitle(" 2026-2027 "); + Speciality speciality = new Speciality(); + speciality.setSpecialityCode(" 09.03.04 "); + SpecialtyProfile profile = new SpecialtyProfile(); + profile.setName(" Программная инженерия "); + EducationForm studyForm = new EducationForm(); + studyForm.setName(" Очная "); + + assertThat(AcademicCalendarTitleBuilder.build(year, speciality, profile, studyForm)) + .isEqualTo("09.03.04 — Программная инженерия — Очная — 2026-2027"); + } + + @Test + void rejectsIncompleteDimensions() { + assertThatThrownBy(() -> AcademicCalendarTitleBuilder.build( + new AcademicYear(), + new Speciality(), + new SpecialtyProfile(), + new EducationForm() + )) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Невозможно сформировать название календарного графика из выбранных параметров"); + } +} diff --git a/docs/API.md b/docs/API.md index 902a417..2cc2f3d 100644 --- a/docs/API.md +++ b/docs/API.md @@ -559,7 +559,6 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 **Тело создания/обновления графика:** ```json { - "title": "09.03.04 — Программная инженерия — Очная — 2025-2026", "academicYearId": 1, "specialtyId": 2, "specialtyProfileId": 3, @@ -570,7 +569,9 @@ GET /api/schedule?groupId=1&startDate=2026-04-27&endDate=2026-05-03 `studyFormId` берётся из общего справочника форм обучения `GET /api/education-forms`; отдельного справочника форм для календарных графиков нет. `courseCount` должен быть в диапазоне `1..8`. -Административный frontend формирует `title` автоматически из кода специальности, профиля, формы обучения и учебного года; отдельного поля ручного ввода в интерфейсе нет. +Поле `title` в запросе не требуется и не влияет на результат: backend всегда формирует +название автоматически как `код специальности — профиль обучения — форма обучения — учебный год`. +Отдельного пользовательского названия у календарного графика нет. При `PUT /api/admin/academic-calendars/{id}` backend блокирует график и повторно проверяет все сохранённые назначения, дневную сетку и дисциплины. Изменение года, специальности, diff --git a/docs/BUSINESS_LOGIC.md b/docs/BUSINESS_LOGIC.md index 6b55c56..ac5fb1d 100644 --- a/docs/BUSINESS_LOGIC.md +++ b/docs/BUSINESS_LOGIC.md @@ -153,6 +153,10 @@ Bearer-токен проверяется на backend. Frontend-скрытие | `schedule_rule_slot_subgroups` | Подгруппы лабораторного слота | | `schedule_overrides` | Точечные переносы, отмены и замены конкретных сгенерированных пар | +Название календарного учебного графика не является отдельным пользовательским атрибутом. +При создании и изменении backend всегда формирует его из кода специальности, названия +профиля, формы обучения и учебного года. Переданное клиентом значение `title` игнорируется. + Учебные годы и семестры изменяются через транзакционный `AcademicPeriodService`. Границы считаются включительными: разные учебные годы не могут иметь общую дату, а семестры не могут пересекаться внутри одного года. Семестр целиком лежит в границах своего учебного diff --git a/docs/FRONTEND.md b/docs/FRONTEND.md index 54cf230..475af37 100644 --- a/docs/FRONTEND.md +++ b/docs/FRONTEND.md @@ -29,6 +29,7 @@ frontend/ │ ├── academic-calendar-grid.test.mjs # Неполная первая неделя календарного графика │ ├── academic-calendar-title.test.mjs # Составное название календарного графика │ ├── academic-calendar-tooltip.test.mjs # Позиционирование подсказки возле курсора и границ viewport +│ ├── admin-ui-regressions.test.mjs # Заголовки, меню, действия слотов и компоновка вкладок │ ├── auth-session.test.mjs # Login/refresh/reload/logout и single-flight refresh │ ├── dashboard-conflicts.test.mjs # Регрессии дат и состояний проверки конфликтов │ ├── schedule-overrides.test.mjs # Действия, роли, недельный выбор и подбор времени разовой правки @@ -148,6 +149,9 @@ frontend/ Пути `/department/` и `/edu-office/` оставлены как входные redirect-страницы в общую панель. Отдельные кабинеты не дублируют UI админ-панели. Пункты меню, недоступные роли, не отображаются в sidebar: `main.js` выставляет `hidden`, а `layout.css` явно скрывает такие элементы, чтобы базовый `display: flex` у `.nav-item` не возвращал их на экран. +Верхние панели основной админки и settings SPA не содержат неработающей кнопки +бургер-меню. В светлой теме пункты и заголовки sidebar получают контрастные тёмные цвета +для всех ролей, включая `DEPARTMENT`. ### Разделы админ-панели @@ -178,13 +182,13 @@ frontend/ - Вкладка `department-workspace` в блоке преподавателей объединяет данные `/api/department/teachers` и `/api/workload/teachers`: каждый преподаватель показывается одной карточкой с должностью и нагрузкой за выбранный период, преподаватели без занятий получают нулевую нагрузку, а преподаватели из расписания добавляются без дублей. Если дата начала периода выбрана позже даты окончания, поле окончания очищается, а расчёт нагрузки ждёт корректный период. - Вкладка `department-workspace` позволяет кафедре добавить существующего активного преподавателя на свою кафедру через `/api/department/teachers/{teacherId}/assignments`, отправить заявку на нового преподавателя через `/api/department/teacher-requests` и видеть статусы собственных заявок в таблице. - Компоновка `department-workspace` использует собственные CSS-сетки `department-workspace-filter-grid` и `department-workspace-actions-grid`: фильтры периода отделены от сеток расписания, загрузка дисциплин занимает широкую колонку, формы преподавателей выравниваются справа, а списки и таблицы идут полноширинными блоками ниже. -- Вкладка `schedule-view` показывает найденные занятия в режиме одной активной таблицы. Пользователь выбирает, что смотреть: группу, преподавателя, аудиторию или кафедру; в дополнительных фильтрах доступен семестр из справочника `/api/schedule/semesters`, предназначенного только для чтения. Для текущего семестра сохраняется текущая двухнедельная точка просмотра, а при выборе другого семестра диапазон начинается с понедельника его первой недели. Frontend запрашивает две недели и собирает найденные расписания в переключатель результатов. На странице не выводится стек таблиц: виден один выбранный результат, а остальные доступны через чипы и кнопки предыдущего/следующего расписания; чипы результатов переносятся и отделены от счётчика стабильным отступом. Для режима кафедры и роли `DEPARTMENT` расписание ограничивается кафедрой пользователя; преподавательские и студенческие отдельные страницы пока остаются самостоятельными. Таблица строится как строки пар и столбцы дней недели. Нечётная неделя отображается в верхней половине ячейки, чётная — в нижней, а одинаковые занятия в обе недели схлопываются в цельную ячейку. Бейдж диапазона недель скрывается для занятий на весь семестр, а для занятий до конца семестра показывает только неделю начала в формате `(с 5 нед.)`. На мобильной ширине вместо широкой недельной матрицы показывается один день активного расписания с переключателем дней. +- Вкладка `schedule-view` показывает найденные занятия в режиме одной активной таблицы. Пользователь выбирает, что смотреть: группу, преподавателя, аудиторию или кафедру; основная кнопка `Показать` расположена в заголовке блока параметров, а пустое состояние таблицы с подсказкой об обновлении содержит дополнительную кнопку `Показать расписание`. В дополнительных фильтрах доступен семестр из справочника `/api/schedule/semesters`, предназначенного только для чтения. Для текущего семестра сохраняется текущая двухнедельная точка просмотра, а при выборе другого семестра диапазон начинается с понедельника его первой недели. Frontend запрашивает две недели и собирает найденные расписания в переключатель результатов. На странице не выводится стек таблиц: виден один выбранный результат, а остальные доступны через чипы и кнопки предыдущего/следующего расписания; чипы результатов переносятся и отделены от счётчика стабильным отступом. Для режима кафедры и роли `DEPARTMENT` расписание ограничивается кафедрой пользователя; преподавательские и студенческие отдельные страницы пока остаются самостоятельными. Таблица строится как строки пар и столбцы дней недели. Нечётная неделя отображается в верхней половине ячейки, чётная — в нижней, а одинаковые занятия в обе недели схлопываются в цельную ячейку. Бейдж диапазона недель скрывается для занятий на весь семестр, а для занятий до конца семестра показывает только неделю начала в формате `(с 5 нед.)`. На мобильной ширине вместо широкой недельной матрицы показывается один день активного расписания с переключателем дней. - Для `ADMIN` и `EDUCATION_OFFICE` карточка занятия содержит кнопку `Изменить`, а уже изменённая пара — индикатор разовой правки. Справа открывается полупрозрачная боковая панель с размытием содержимого под ней; внешний затемнённый слой также размывает страницу, а на мобильном устройстве панель занимает весь экран. Режим `Редактирование` сравнивает `Было по правилу / Станет`, позволяет изменить дату, эффективный временной слот, преподавателя, аудиторию, формат и комментарий, отменить занятие или удалить override через `Вернуть по правилу`. Селект аудитории получает записи из `/api/classrooms`, но показывает только поле `name`, без корпуса и этажа. По умолчанию выводятся семь дней исходной недели; кнопка `Выбрать другую дату` раскрывает календарь всего семестра, где неучебные даты отключены. После смены даты загружается эффективная сетка дня: сначала выбирается тот же ID слота, затем совпадающий интервал, иначе требуется ручной выбор. Дата или время формируют `MOVE`, а только преподаватель, аудитория или формат — `REPLACE`. - Режим `Изменения за период` загружает overrides, у которых в двухнедельный диапазон попала исходная или целевая дата. Поэтому в реестре остаются отменённые занятия и входящие/исходящие переносы, которых нет на исходном месте в таблице. После сохранения, отмены или возврата расписание и реестр обновляются без смены выбранного периода. Для `DEPARTMENT` и `SCHEDULE_VIEWER` вкладка остаётся полностью read-only: кнопка, панель и запросы управляющего API не создаются. - Вкладка `auditorium-workload` стала общей вкладкой `Загруженность`: в поле «Что смотреть» выбираются аудитории, преподаватели или кафедры. Сводная матрица по выбранной дате использует одинаковую структуру: строки — выбранный тип сущности, столбцы — эффективные временные слоты дня из `/api/admin/time-slots/effective`, занятость собирается из динамического расписания `/api/schedule` по группам. Кафедральная матрица группирует занятия по кафедре преподавателя. Для аудиторий доступны фильтры корпуса, вместимости и оборудования. В поле «Отображение» можно выбрать конкретную аудиторию, преподавателя или кафедру; тогда сводная матрица заменяется одной таблицей по дням недели и времени для двухнедельного периода от выбранной даты. Таблица выбранной сущности растягивается до нижней части экрана. Ячейка делится вертикально только если верхняя и нижняя недели отличаются: нечётная неделя отображается сверху, чётная — снизу. Если состояние или занятие одинаковое, ячейка остаётся цельной. Чётность берётся из расписания, а для свободных дней рассчитывается по семестрам из `/api/admin/calendar/years`. - Вкладка `university-structure` содержит внутренние разделы `Кафедры`, `Специальности` и `Профили`, оформленные тем же визуальным паттерном вкладок, что и `academic-calendar`: администратор создаёт профили как из общего списка, так и через кнопку `Профили` у конкретной специальности. -- Вкладка `schedule` не обращается к старым `lessons` API. Создание и редактирование расписания выполняется через правила `/api/admin/schedule-rules`, где каждое правило содержит группы, отдельные часы и недели начала для лекций, лабораторных и практик, а также набор базовых слотов. Группы выбираются через выпадающий мультиселект. Поле подгруппы появляется только при выборе лабораторной работы; для лекций и практик оно не отображается. Если в правиле выбрана одна группа, селект подгруппы содержит пункт `Вся группа`; если выбрано несколько групп, лабораторный слот показывает мультиселект подгрупп, чтобы выбрать разные подгруппы разных групп. Типы занятий в слоте сортируются в порядке: лекция, лабораторная работа, практика. Список слотов отображается без внутреннего вертикального скролла: при добавлении строк форма расширяется вниз, а кнопка сохранения остаётся отдельным блоком под слотами. Из календарной системы здесь используется список семестров для выбора периода действия правила. Справа доступна сворачиваемая визуальная матрица: пользователь выбирает учебный год, семестр и группы, после чего матрица строится только по правилам выбранного семестра. Столбцы — выбранные в фильтре группы, строки — только день и время, где есть активные пары, ячейки показывают дисциплину, диапазон недель, тип, формат, преподавателя, аудиторию и подгруппы. Период недель не показывается для занятия на весь семестр; если занятие идёт до конца семестра не с первой недели, выводится только неделя начала в формате `(с 5 нед.)`, а ограниченный диапазон — как `(с 1 по 3 нед.)`. Если нечётная и чётная недели отличаются, ячейка делится на две половины; одинаковые занятия схлопываются в цельную ячейку. Кнопка с тремя точками в правой части карточки пары открывает контекстное меню: можно открыть полное правило в форме, изменить только день и базовую пару выбранного слота через компактную модалку или удалить правило целиком. В списке правил действия отображаются едиными кнопками одинакового размера с отступами между ними. -- Вкладка `academic-calendar` полностью отделяет календарную систему от расписания занятий и внутри себя разделена на три вкладки: `Графики` для учебных годов, семестров и карточек календарных графиков, `Сетки` для редактора дневной сетки, `Дисциплины` для ручной привязки дисциплин из `/api/subjects` к номерам учебных семестров графика. Отдельного поля названия у календарного графика нет: frontend формирует его как `код специальности — профиль обучения — форма обучения — учебный год`, показывает одинаково в таблицах и селектах и отправляет вычисленное значение в `title` для совместимости с API. Администратор выбирает форму обучения из общего справочника `/api/education-forms`, заполняет дневную сетку по курсам и кодам активностей, назначает ручную временную сетку на конкретную дату, а сохранение сетки идёт через `/api/admin/academic-calendars/{id}/grid`. Все шесть полей дат принимают до восьми цифр, автоматически показывают их в формате `ДД.ММ.ГГГГ`, ограничивают год четырьмя цифрами и перед отправкой преобразуют значение в ISO `ГГГГ-ММ-ДД`. +- Вкладка `schedule` имеет заголовок `Конструктор правил` и не обращается к старым `lessons` API. Создание и редактирование расписания выполняется через правила `/api/admin/schedule-rules`, где каждое правило содержит группы, отдельные часы и недели начала для лекций, лабораторных и практик, а также набор базовых слотов. Группы выбираются через выпадающий мультиселект. Поле подгруппы появляется только при выборе лабораторной работы; для лекций и практик оно не отображается. Если в правиле выбрана одна группа, селект подгруппы содержит пункт `Вся группа`; если выбрано несколько групп, лабораторный слот показывает мультиселект подгрупп, чтобы выбрать разные подгруппы разных групп. Типы занятий в слоте сортируются в порядке: лекция, лабораторная работа, практика. Единственный слот имеет действие `Очистить`, которое сбрасывает его поля; при наличии нескольких слотов у каждой строки показывается действие `Удалить`. Оба действия используют размер формы, минимальную ширину `125px` и высоту `44px`, поэтому совпадают по масштабу с соседними селектами. Список слотов отображается без внутреннего вертикального скролла: при добавлении строк форма расширяется вниз, а кнопка сохранения остаётся отдельным блоком под слотами. Из календарной системы здесь используется список семестров для выбора периода действия правила. Справа доступна сворачиваемая визуальная матрица: пользователь выбирает учебный год, семестр и группы, после чего матрица строится только по правилам выбранного семестра. Столбцы — выбранные в фильтре группы, строки — только день и время, где есть активные пары, ячейки показывают дисциплину, диапазон недель, тип, формат, преподавателя, аудиторию и подгруппы. Период недель не показывается для занятия на весь семестр; если занятие идёт до конца семестра не с первой недели, выводится только неделя начала в формате `(с 5 нед.)`, а ограниченный диапазон — как `(с 1 по 3 нед.)`. Если нечётная и чётная недели отличаются, ячейка делится на две половины; одинаковые занятия схлопываются в цельную ячейку. Кнопка с тремя точками в правой части карточки пары открывает контекстное меню: можно открыть полное правило в форме, изменить только день и базовую пару выбранного слота через компактную модалку или удалить правило целиком. В списке правил действия отображаются едиными кнопками одинакового размера с отступами между ними. +- Вкладка `academic-calendar` полностью отделяет календарную систему от расписания занятий и внутри себя разделена на три вкладки: `Графики` для учебных годов, семестров и карточек календарных графиков, `Сетки` для редактора дневной сетки, `Дисциплины` для ручной привязки дисциплин из `/api/subjects` к номерам учебных семестров графика. У календарного графика нет поля ввода и отдельного столбца названия; отображаемая подпись и сохраняемое backend название автоматически собираются как `код специальности — профиль обучения — форма обучения — учебный год`. Frontend не отправляет `title` в payload. Администратор выбирает форму обучения из общего справочника `/api/education-forms`, заполняет дневную сетку по курсам и кодам активностей, назначает ручную временную сетку на конкретную дату, а сохранение сетки идёт через `/api/admin/academic-calendars/{id}/grid`. Все шесть полей дат принимают до восьми цифр, автоматически показывают их в формате `ДД.ММ.ГГГГ`, ограничивают год четырьмя цифрами и перед отправкой преобразуют значение в ISO `ГГГГ-ММ-ДД`. - При сохранении правила во вкладке `schedule` frontend различает `409 Conflict` от остальных ошибок API. Если backend возвращает `conflictRule`, открывается широкое модальное окно разрешения конфликта: пользователь видит новое и ранее созданное правило, чипы причины конфликта из `conflictReasons` и подсветку соответствующих полей (`teacher`, `classroom`, `group`). Пользователь меняет у конфликтующего правила день, чётность, пару, преподавателя или аудиторию, после чего frontend сохраняет конфликтующее правило через `PUT /api/admin/schedule-rules/{id}` и автоматически повторяет исходный `POST` или `PUT`. Если после переноса появляется следующий конфликт, показывается следующее конфликтующее правило без потери исходного черновика. - Редактор годового графика во вкладке `academic-calendar` показывает компактную табличную сетку: курсы раскрываются отдельными секциями со стрелкой, семестры внутри курса на широком экране идут рядом в две равные колонки одинаковой высоты, столбцы подписаны номерами недель учебного года, строки — днями недели, а ячейки содержат буквенный код активности. Недели выровнены по интервалам `понедельник–воскресенье`: если учебный год начинается не в понедельник, предшествующие позиции первой недели остаются пустыми, а следующий понедельник открывает неделю 2. В рамках одного курса семестровые таблицы получают одинаковое число недельных колонок: недостающие колонки заполняются пустыми ячейками, поэтому левая и правая части занимают всю ширину секции курса без внешней пустоты. Подробная расшифровка и изменение кода открываются в компактном модальном окне по клику на ячейку; при наведении возле курсора отображается кастомная подсказка с датой, курсом, кодом активности и временной сеткой. У границ viewport подсказка автоматически раскрывается в противоположную сторону и остаётся полностью видимой, а код активности в ней центрируется внутри квадратного индикатора. Ячейки можно выделять протяжкой мышью и менять код активности через ту же модалку, выбранные ячейки подсвечиваются мягкой заливкой, а кнопка «Применить» закрывает окно. - Вкладка `classrooms` теперь показывает архивные аудитории через `includeArchived=true`. Кнопка удаления заменена на архивирование: аудитория выводится из эксплуатации, но остаётся в историческом расписании. Для архивных аудиторий доступно восстановление. @@ -374,6 +378,7 @@ CSS-переменные позволяют поддерживать светл - Размеры: `btn-sm` — 32px для табличных строк, `btn-md` — 40px для форм и панелей, `btn-lg` — 48px для входа и главных широких действий. - Иконки: `btn-icon-sm` — 32x32, `btn-icon-md` — 40x40. Все icon-only кнопки должны иметь `aria-label` на русском языке. - Варианты: `btn-primary` для основного действия блока, `btn-secondary` для редактирования/обновления/показа, `btn-ghost` для очистки/отмены/сворачивания, `btn-danger` для удаления, `btn-danger-subtle` для архивирования, выхода и других рискованных действий без немедленного удаления. +- Каждый вариант `btn`, включая `primary`, `ghost`, `danger` и disabled-состояние, сохраняет видимую обводку в светлой и тёмной теме. - Единый радиус кнопок — `8px`. Локальные переопределения `.btn-primary`, `.btn-secondary`, `.btn-delete` в feature CSS запрещены: новые экраны должны наследовать токены из `frontend/admin/css/components.css`. - Primary-акцент общий для продукта: `#4F46E5` в светлой теме и `#8B5CF6` в тёмной. Ролевые цвета кнопок в кабинетах преподавателя и студента не используются. diff --git a/frontend/admin/css/auditorium-workload.css b/frontend/admin/css/auditorium-workload.css index 6378149..3b0104f 100644 --- a/frontend/admin/css/auditorium-workload.css +++ b/frontend/admin/css/auditorium-workload.css @@ -1219,6 +1219,18 @@ body.schedule-override-open { background: var(--bg-input); } +.schedule-view-state-actionable { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1rem; +} + +.schedule-view-state-reload { + min-width: 200px; +} + .schedule-view-day-tabs { flex-wrap: wrap; justify-content: flex-end; diff --git a/frontend/admin/css/components.css b/frontend/admin/css/components.css index 78681cd..ce5f333 100755 --- a/frontend/admin/css/components.css +++ b/frontend/admin/css/components.css @@ -2,20 +2,24 @@ :root { --button-primary-bg: #8B5CF6; --button-primary-bg-hover: #7C3AED; + --button-primary-border: #C4B5FD; --button-primary-text: #FFFFFF; --button-secondary-bg: rgba(255, 255, 255, 0.04); --button-secondary-bg-hover: rgba(255, 255, 255, 0.08); --button-secondary-border: rgba(255, 255, 255, 0.10); --button-secondary-text: #F8FAFC; --button-ghost-bg-hover: rgba(255, 255, 255, 0.06); + --button-ghost-border: rgba(255, 255, 255, 0.18); --button-danger-bg: #DC2626; --button-danger-bg-hover: #B91C1C; + --button-danger-border: #F87171; --button-danger-subtle-bg: rgba(239, 68, 68, 0.13); --button-danger-subtle-bg-hover: rgba(239, 68, 68, 0.20); --button-danger-subtle-border: rgba(239, 68, 68, 0.25); --button-danger-subtle-text: #FECACA; --button-focus-ring: rgba(139, 92, 246, 0.45); --button-disabled-bg: rgba(148, 163, 184, 0.16); + --button-disabled-border: rgba(148, 163, 184, 0.32); --button-disabled-text: #94A3B8; --button-radius: 8px; } @@ -23,20 +27,24 @@ [data-theme="light"] { --button-primary-bg: #4F46E5; --button-primary-bg-hover: #4338CA; + --button-primary-border: #3730A3; --button-primary-text: #FFFFFF; --button-secondary-bg: #FFFFFF; --button-secondary-bg-hover: #F1F5F9; --button-secondary-border: #CBD5E1; --button-secondary-text: #334155; --button-ghost-bg-hover: #F8FAFC; + --button-ghost-border: #CBD5E1; --button-danger-bg: #DC2626; --button-danger-bg-hover: #B91C1C; + --button-danger-border: #991B1B; --button-danger-subtle-bg: #FEF2F2; --button-danger-subtle-bg-hover: #FEE2E2; --button-danger-subtle-border: #FECACA; --button-danger-subtle-text: #B91C1C; --button-focus-ring: rgba(79, 70, 229, 0.35); --button-disabled-bg: #CBD5E1; + --button-disabled-border: #94A3B8; --button-disabled-text: #64748B; } @@ -755,6 +763,12 @@ grid-template-columns: repeat(8, minmax(125px, 1fr)) auto; } +.schedule-slot-remove { + min-width: 125px; + min-height: 44px; + padding-inline: 1rem; +} + .schedule-conflict-modal { z-index: 1200; padding: 0.35rem; @@ -3070,7 +3084,7 @@ input[type="number"] { justify-content: center; gap: 0.45rem; min-width: 0; - border: 1px solid transparent; + border: 1px solid var(--button-secondary-border); border-radius: var(--button-radius); background: transparent; color: inherit; @@ -3107,7 +3121,7 @@ input[type="number"] { .btn:disabled, .btn[aria-disabled="true"] { background: var(--button-disabled-bg); - border-color: transparent; + border-color: var(--button-disabled-border); color: var(--button-disabled-text); cursor: not-allowed; opacity: 0.75; @@ -3168,7 +3182,7 @@ input[type="number"] { .btn-primary { background: var(--button-primary-bg); - border-color: transparent; + border-color: var(--button-primary-border); color: var(--button-primary-text); box-shadow: none; } @@ -3192,7 +3206,7 @@ input[type="number"] { .btn-ghost { background: transparent; - border-color: transparent; + border-color: var(--button-ghost-border); color: var(--text-secondary); } @@ -3203,7 +3217,7 @@ input[type="number"] { .btn-danger { background: var(--button-danger-bg); - border-color: transparent; + border-color: var(--button-danger-border); color: #FFFFFF; } diff --git a/frontend/admin/css/layout.css b/frontend/admin/css/layout.css index 8bf7322..bcfa5cc 100755 --- a/frontend/admin/css/layout.css +++ b/frontend/admin/css/layout.css @@ -64,6 +64,10 @@ overflow: hidden; } +[data-theme="light"] .sidebar .nav-item { + color: #334155; +} + .nav-item[hidden], .settings-menu-item[hidden] { display: none !important; @@ -486,6 +490,19 @@ display: none !important; } +.sidebar-section-title { + padding: 0.5rem 1.25rem 0.25rem; + color: color-mix(in srgb, var(--text-secondary) 72%, transparent); + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.05em; + text-transform: uppercase; +} + +[data-theme="light"] .sidebar-section-title { + color: #64748b !important; +} + .sidebar-section-divider { height: 1px; background: rgba(229, 231, 235, 0.1); diff --git a/frontend/admin/index.html b/frontend/admin/index.html index 000ab0b..d57df64 100755 --- a/frontend/admin/index.html +++ b/frontend/admin/index.html @@ -207,14 +207,6 @@
-

Загрузка...

diff --git a/frontend/admin/js/main.js b/frontend/admin/js/main.js index f554495..81487f5 100755 --- a/frontend/admin/js/main.js +++ b/frontend/admin/js/main.js @@ -94,7 +94,7 @@ const ROUTES = { } }, schedule: { - title: 'Расписание занятий', + title: 'Конструктор правил', file: '/admin/views/schedule.html', init: async () => { const module = await import('./views/schedule.js'); @@ -127,7 +127,6 @@ const pageTitle = document.getElementById('page-title'); const navItems = document.querySelectorAll('.nav-item[data-tab]'); const sidebar = document.querySelector('.sidebar'); const sidebarOverlay = document.getElementById('sidebar-overlay'); -const menuToggle = document.getElementById('menu-toggle'); const sidebarCloseBtn = document.getElementById('sidebar-close-btn'); const btnLogout = document.getElementById('btn-logout'); const main = document.querySelector('.main'); @@ -148,18 +147,6 @@ if (window.innerWidth > 768 && localStorage.getItem('sidebar-collapsed') === 'tr main.classList.add('sidebar-collapsed'); } -// Menu Toggle (Hamburger) -menuToggle.addEventListener('click', () => { - if (window.innerWidth <= 768) { - sidebar.classList.toggle('open'); - sidebarOverlay.classList.toggle('open'); - } else { - sidebar.classList.remove('collapsed'); - main.classList.remove('sidebar-collapsed'); - localStorage.setItem('sidebar-collapsed', 'false'); - } -}); - // Sidebar Close (X button) sidebarCloseBtn?.addEventListener('click', () => { if (window.innerWidth <= 768) { diff --git a/frontend/admin/js/views/academic-calendar.js b/frontend/admin/js/views/academic-calendar.js index b45a12a..da0d668 100644 --- a/frontend/admin/js/views/academic-calendar.js +++ b/frontend/admin/js/views/academic-calendar.js @@ -448,26 +448,25 @@ export async function initAcademicCalendar() { } async function loadCalendars() { - calendarsTbody.innerHTML = '
Загрузка...
Загрузка...
Ошибка загрузки: ${escapeHtml(error.message)}
Ошибка загрузки: ${escapeHtml(error.message)}
Календарные графики не созданы
Календарные графики не созданы
${escapeHtml(buildAcademicCalendarTitle(calendar) || '-')} ${escapeHtml(calendar.academicYearTitle || '-')} ${escapeHtml(`${calendar.specialtyCode || ''} ${calendar.specialtyName || ''}`.trim() || '-')} ${escapeHtml(calendar.specialtyProfileName || '-')}
- @@ -148,7 +147,7 @@ - +
Название Учебный год Специальность Профиль
Загрузка...Загрузка...
diff --git a/frontend/tests/admin-ui-regressions.test.mjs b/frontend/tests/admin-ui-regressions.test.mjs new file mode 100644 index 0000000..134d873 --- /dev/null +++ b/frontend/tests/admin-ui-regressions.test.mjs @@ -0,0 +1,106 @@ +import assert from 'node:assert/strict'; +import { readFile } from 'node:fs/promises'; +import test from 'node:test'; + +import { scheduleSlotActionLabel } from '../admin/js/views/schedule.js'; + +const readFrontendFile = relativePath => readFile( + new URL(`../${relativePath}`, import.meta.url), + 'utf8' +); + +test('одиночный слот очищается, а несколько слотов удаляются', () => { + assert.equal(scheduleSlotActionLabel(1), 'Очистить'); + assert.equal(scheduleSlotActionLabel(2), 'Удалить'); + assert.equal(scheduleSlotActionLabel(5), 'Удалить'); +}); + +test('в общих заголовках админ-панели и настроек нет бургер-меню', async () => { + const files = await Promise.all([ + readFrontendFile('admin/index.html'), + readFrontendFile('admin/js/main.js'), + readFrontendFile('admin/settings/index.html'), + readFrontendFile('admin/settings/js/main.js') + ]); + + files.forEach(content => assert.doesNotMatch(content, /menu-toggle/)); +}); + +test('заголовок вкладки соответствует конструктору правил', async () => { + const mainScript = await readFrontendFile('admin/js/main.js'); + assert.match(mainScript, /schedule:\s*\{\s*title:\s*'Конструктор правил'/); +}); + +test('основная кнопка показа находится в заголовке блока параметров', async () => { + const scheduleView = await readFrontendFile('admin/views/schedule-view.html'); + const controlHeaderIndex = scheduleView.indexOf('schedule-view-control-header'); + const controlGridIndex = scheduleView.indexOf('schedule-view-control-grid'); + const loadButtonIndex = scheduleView.indexOf('id="schedule-view-load"'); + + assert.ok(controlHeaderIndex >= 0); + assert.ok(loadButtonIndex > controlHeaderIndex); + assert.ok(loadButtonIndex < controlGridIndex); + assert.equal(scheduleView.match(/id="schedule-view-load"/g)?.length, 1); +}); + +test('пустое состояние расписания содержит собственную кнопку обновления', async () => { + const scheduleScript = await readFrontendFile('admin/js/views/schedule-view.js'); + + assert.match(scheduleScript, /SCHEDULE_REFRESH_PROMPT\s*=\s*'Нажмите «Показать», чтобы обновить расписание'/); + assert.match(scheduleScript, /data-schedule-view-reload/); + assert.match(scheduleScript, /closest\('\[data-schedule-view-reload\]'\)[\s\S]*?loadData\(\)/); + assert.match(scheduleScript, /setTableState\(message,\s*message === SCHEDULE_REFRESH_PROMPT\)/); +}); + +test('действия слотов имеют размер соседнего поля', async () => { + const [components, scheduleScript] = await Promise.all([ + readFrontendFile('admin/css/components.css'), + readFrontendFile('admin/js/views/schedule.js') + ]); + + assert.match(components, /\.schedule-slot-remove\s*\{[^}]*min-width:\s*125px[^}]*min-height:\s*44px/s); + assert.match(scheduleScript, /class="btn btn-md \$\{actionClass\} schedule-slot-remove"/); +}); + +test('все варианты системных кнопок имеют видимую обводку', async () => { + const components = await readFrontendFile('admin/css/components.css'); + + assert.match(components, /\.btn\s*\{[^}]*border:\s*1px solid var\(--button-secondary-border\)/s); + assert.match(components, /\.btn-primary\s*\{[^}]*border-color:\s*var\(--button-primary-border\)/s); + assert.match(components, /\.btn-ghost\s*\{[^}]*border-color:\s*var\(--button-ghost-border\)/s); + assert.match(components, /\.btn-danger\s*\{[^}]*border-color:\s*var\(--button-danger-border\)/s); +}); + +test('подсказка календарной сетки получает позицию напрямую от курсора', async () => { + const calendarScript = await readFrontendFile('admin/js/views/academic-calendar.js'); + + assert.match(calendarScript, /translate3d\(\$\{left\}px, \$\{top\}px, 0\) scale\(1\)/); + assert.match(calendarScript, /\{ duration: 1, fill: 'forwards' \}/); + assert.doesNotMatch(calendarScript, /\.style\.(?:left|top)\s*=/); +}); + +test('светлая тема задаёт контрастные пункты и заголовки левого меню', async () => { + const [layout, index] = await Promise.all([ + readFrontendFile('admin/css/layout.css'), + readFrontendFile('admin/index.html') + ]); + + assert.match(layout, /\[data-theme="light"\] \.sidebar \.nav-item\s*\{[^}]*color:\s*#334155/s); + assert.match(layout, /\[data-theme="light"\] \.sidebar-section-title\s*\{[^}]*color:\s*#64748b !important/s); + assert.match(index, />Расписание<\/div>/); +}); + +test('таблица календарных графиков не содержит отдельный столбец названия', async () => { + const [calendarView, calendarScript] = await Promise.all([ + readFrontendFile('admin/views/academic-calendar.html'), + readFrontendFile('admin/js/views/academic-calendar.js') + ]); + const bodyIndex = calendarView.indexOf('id="academic-calendars-tbody"'); + const tableStart = calendarView.lastIndexOf('', bodyIndex); + const tableEnd = calendarView.indexOf('
', bodyIndex); + const calendarTable = calendarView.slice(tableStart, tableEnd); + + assert.doesNotMatch(calendarTable, /Название<\/th>/); + assert.match(calendarTable, /colspan="6"/); + assert.doesNotMatch(calendarScript, /title:\s*buildCalendarTitleFromForm/); +}); From 8bb7fe97eb621bffdb4a71fe91d4ac4d7f5e9473 Mon Sep 17 00:00:00 2001 From: Zuev Date: Wed, 29 Jul 2026 23:13:17 +0300 Subject: [PATCH 14/14] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=20=D0=B1=D0=B5=D0=B7=D0=BE=D0=BF?= =?UTF-8?q?=D0=B0=D1=81=D0=BD=D1=8B=D0=B9=20production=20rollout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/docker-build.yaml | 6 +- BUG_FIX_PROGRESS.md | 38 ++- STARTUP_GUIDE.md | 98 +++++--- .../main/resources/db/migration/V1__init.sql | 23 +- ...lign_academic_calendar_weeks_to_monday.sql | 23 -- ...ndarWeekNumberBaselineIntegrationTest.java | 70 ++++++ ...darWeekNumberMigrationIntegrationTest.java | 218 ------------------ docs/DATABASE.md | 14 +- docs/INFRASTRUCTURE.md | 14 +- graphify-out/.graphify_learning.json | 209 +++++++++++++++-- ...Œ_напиши_мне_инструкцию_как_это_всё_выыкатить.md | 26 +++ ..._схема_на_проде_на_удалённом_сервере_создана.md | 24 ++ ...01238_сам_можешь_выполнить_эти_действия.md | 25 ++ graphify-out/reflections/LESSONS.md | 17 +- scripts/check-artifact-pinning.sh | 4 + scripts/test-artifact-pinning.sh | 9 + 16 files changed, 494 insertions(+), 324 deletions(-) delete mode 100644 backend/src/main/resources/db/migration/V2__align_academic_calendar_weeks_to_monday.sql create mode 100644 backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberBaselineIntegrationTest.java delete mode 100644 backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberMigrationIntegrationTest.java create mode 100644 graphify-out/memory/query_20260729_192644_теперь_напиши_мне_инструкцию_как_это_всё_выыкатить.md create mode 100644 graphify-out/memory/query_20260729_195904_новая_схема_на_проде_на_удалённом_сервере_создана.md create mode 100644 graphify-out/memory/query_20260729_201238_сам_можешь_выполнить_эти_действия.md diff --git a/.gitea/workflows/docker-build.yaml b/.gitea/workflows/docker-build.yaml index 1923ce4..e1f9c06 100644 --- a/.gitea/workflows/docker-build.yaml +++ b/.gitea/workflows/docker-build.yaml @@ -6,10 +6,7 @@ on: - main tags: - 'v*' - -concurrency: - group: magistr-production - cancel-in-progress: false + workflow_dispatch: env: REGISTRY: gitea.zuev.company @@ -175,6 +172,7 @@ jobs: deploy-to-k8s: name: Развернуть проверенные digests needs: [build-and-push-backend, build-and-push-frontend, security-scan] + if: ${{ gitea.event_name == 'workflow_dispatch' }} runs-on: ubuntu-latest timeout-minutes: 15 environment: production diff --git a/BUG_FIX_PROGRESS.md b/BUG_FIX_PROGRESS.md index bc00ea1..46bd74f 100644 --- a/BUG_FIX_PROGRESS.md +++ b/BUG_FIX_PROGRESS.md @@ -1,6 +1,6 @@ # Журнал исправления проблем -Обновлено: 2026-07-19 (Europe/Moscow). +Обновлено: 2026-07-29 (Europe/Moscow). ## Область и неизменяемые данные @@ -21,7 +21,7 @@ | `V2__subgroups_active_unique_name.sql` | `68f5525a50ddba4f8800a63cab3cd0f84779e301c4a1f29a6e0399f97fbdb30b` | Текущая единая baseline-миграция: `V1__init.sql`, SHA-256 -`fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`. +`a984718777f1b4695868549e3c805c8b22edbb82fbe0b8731563adf5f11e1742`. Упоминания V2–V7 в исторических записях ниже описывают последовательность разработки до консолидации и не означают наличие этих файлов в текущем дереве. @@ -1047,21 +1047,41 @@ - Полностью закрыты и проверены 32 пункта. Для № 1 остаются только операторские ротация, provisioning, rollout и очистка истории, которые исходный prompt прямо запрещает выполнять без отдельных production-полномочий. -- Полный backend PostgreSQL/Testcontainers-прогон: 277 тестов, 0 failures, 0 errors, +- Полный backend PostgreSQL/Testcontainers-прогон: 300 тестов, 0 failures, 0 errors, 0 skipped. Четыре frontend test-suite, `npm run check`, Compose validation, Workflow YAML, artifact/deploy shell-тесты и `git diff --check` прошли. - `kubectl kustomize ../k8s`, production secret-scan, синтаксис deploy-скрипта и расширенный artifact-scan прошли. В production-манифестах отсутствуют mutable `latest` и `:main`. - Каталог Flyway содержит ровно `V1__init.sql`; V2–V4 и другие дополнительные миграции отсутствуют. Финальный SHA-256 V1: - `fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`. + `a984718777f1b4695868549e3c805c8b22edbb82fbe0b8731563adf5f11e1742`. +- Исправление нумерации недель календарного графика также перенесено из промежуточной V2 + непосредственно в V1. Чистое применение baseline и формула недель + `понедельник–воскресенье` подтверждены + `AcademicCalendarWeekNumberBaselineIntegrationTest`. ## Точка продолжения -Текущий этап: **реализация и проверка всех разрешённых изменений завершены**. +Текущий этап: **репозиторная реализация завершена, production подготовлен к первому +контролируемому rollout**. -Оставшееся операторское действие владельца: +29 июля 2026 года по отдельному разрешению владельца выполнена production-подготовка: -1. при готовности production-полномочий выполнить `docs/SECURITY_RUNBOOK.md`: ротацию, - provisioning, rollout и очистку истории для № 1. Эти действия не выполнялись - автоматически и не требуются для завершения репозиторной реализации. +- старый backend остановлен на `0` реплик; +- обе tenant-БД (`magistr`, `n8n`) доступны, их схемы `public` пусты, у application role + есть права `CREATE` на схему и БД; +- в `app-secret` без вывода значения добавлен новый случайный `JWT_SECRET`; +- из действующей конфигурации без вывода значений созданы переходные `tenants-secret` и + `otel-postgres-secret`; +- push в `main` больше не запускает production deploy: job разрешён только для ручного + `workflow_dispatch`; +- server-side dry-run выявил immutable `roleRef` старого RoleBinding; в + `../k8s/rbac.yaml` новый binding переименован в `backend-tenant-secret-binding`, после + чего `kubectl apply --dry-run=server -k ../k8s` прошёл. + +Оставшиеся операторские действия: + +1. Закоммитить и отправить изменения в `main`, дождаться checks, сборки и Trivy scan. +2. Выполнить первый rollout по digest через `../k8s/deploy.sh apply`. +3. После проверки удалить старые ConfigMap/RBAC-объекты, ротировать перенесённые DB/OTel + credentials и выполнить согласованную очистку истории по `docs/SECURITY_RUNBOOK.md`. diff --git a/STARTUP_GUIDE.md b/STARTUP_GUIDE.md index ff28b33..5a7a85d 100644 --- a/STARTUP_GUIDE.md +++ b/STARTUP_GUIDE.md @@ -58,53 +58,95 @@ Полный локальный сброс БД выполняется командой `docker compose down -v`, но она удалит все локальные данные. Обычная остановка без удаления данных: `docker compose down`. -## 2. Первый запуск в production +## 2. Обновление существующего production -1. Подготовьте K3s/Kubernetes-кластер и убедитесь, что `kubectl get nodes` работает. - PostgreSQL в текущие манифесты не входит: заранее создайте доступную из кластера БД для - каждого университета. Пользователь БД должен иметь права на создание и изменение схемы — - Flyway применит `V1__init.sql` автоматически. +Простой push в `main` для первого обновления **недостаточен**. Он выполняет проверки, +собирает и сканирует образы, но job `deploy-to-k8s` запускается только вручную через +`workflow_dispatch`. Новые файлы `../k8s` CI не применяет. Gitea 1.25 игнорирует +`environment` и `concurrency`, поэтому они не используются как production-защита. -2. Настройте DNS для `magistr.zuev.company` и остальных tenant-доменов на публичный - reverse proxy/Ingress. В текущем `../k8s/ingress.yaml` нет секции TLS: для HTTPS нужно - настроить внешний Caddy с сертификатом либо добавить cert-manager/TLS в кластер. +1. Подготовьте секреты по [`docs/SECURITY_RUNBOOK.md`](docs/SECURITY_RUNBOOK.md): -3. Создайте namespace и четыре обязательных Secret по - [`docs/SECURITY_RUNBOOK.md`](docs/SECURITY_RUNBOOK.md): + - `app-secret`: новый случайный `JWT_SECRET` не короче 32 байт, `POSTGRES_USER`, + `POSTGRES_PASSWORD`; + - `tenants-secret`: новый `tenants.json` с актуальными JDBC URL и ротированными паролями; + - `otel-postgres-secret`: восемь обязательных параметров подключений Collector; + - `gitea-registry`: доступ K3s к registry. - - `app-secret`: `JWT_SECRET`, `POSTGRES_USER`, `POSTGRES_PASSWORD`; - - `tenants-secret`: файл `tenants.json`; - - `otel-postgres-secret`: подключения Collector к БД; - - `gitea-registry`: доступ к приватным Docker-образам. + Для `magistr.zuev.company` нужен tenant с `"domain": "magistr"`, для + `n8n.zuev.company` — `"domain": "n8n"`. Секреты не сохраняйте в Git или CI-логах. - Для `magistr.zuev.company` запись в `tenants.json` должна иметь `"domain": "magistr"` - и реальный JDBC URL. Не сохраняйте значения Secret в Git или логах. +2. Выполните локальные проверки, затем отправьте изменения в `main`: -4. В Gitea Actions добавьте секреты `ZUEV_TOKEN` (доступ к registry) и - `KUBECONFIG_DATA` (kubeconfig в Base64). Push в `main` соберёт, проверит и опубликует - образы. При самом первом запуске автоматический deploy может ещё не найти Deployment — - возьмите два опубликованных digest из CI/registry и выполните bootstrap вручную: + ```bash + K8S_DIR=../k8s bash scripts/check-production-secrets.sh + K8S_DIR=../k8s bash scripts/check-artifact-pinning.sh + bash scripts/test-deploy-images.sh + kubectl kustomize ../k8s >/dev/null + ``` + + Дождитесь успешных checks, сборки и Trivy scan. Скопируйте точные backend/frontend + ссылки вида `image@sha256:...` из CI/registry. + +3. Объявите техническое окно и временно закройте публичный доступ во внешнем Caddy. Затем + остановите backend: + + ```bash + kubectl scale deployment/backend -n magistr --replicas=0 + ``` + + Полностью пересоздайте **каждую** PostgreSQL tenant-БД, указанную в новом + `tenants.json`. Недостаточно удалить `flyway_schema_history` или отдельные таблицы: + миграции V2–V7 объединены в новую `V1__init.sql`, поэтому старая БД получит checksum + error, а непустая БД без истории может быть ошибочно принята Flyway за baseline. + Пользователь БД должен уметь создавать схему, функции, триггеры и расширения + `pgcrypto`/`btree_gist`. + +4. С рабочей станции с актуальным каталогом `../k8s` выполните первый rollout вручную: ```bash export BACKEND_IMAGE_REF='gitea.zuev.company/zuev/magistr-backend@sha256:' export FRONTEND_IMAGE_REF='gitea.zuev.company/zuev/magistr-frontend@sha256:' - K8S_DIR=../k8s bash scripts/check-production-secrets.sh - K8S_DIR=../k8s bash scripts/check-artifact-pinning.sh - kubectl kustomize ../k8s >/dev/null bash ../k8s/deploy.sh apply ``` -5. Проверьте результат: + Скрипт применит ConfigMap, RBAC, Secret mount, probes, OTel и Ingress, поднимет две + реплики backend и дождётся Flyway/readiness. CI deploy после push не ожидает + подтверждения: он будет пропущен. Следующие image-only обновления можно запускать + вручную кнопкой `Run workflow`. + +5. Перед открытием публичного доступа проверьте: ```bash - bash ../k8s/deploy.sh status kubectl rollout status deployment/backend -n magistr --timeout=300s + kubectl rollout status deployment/frontend -n magistr --timeout=120s + kubectl get pods -n magistr kubectl logs -n magistr -l app=backend --tail=200 - curl -fsS https://magistr.zuev.company/ + curl -fsSI https://magistr.zuev.company/ ``` - После первого входа немедленно смените/отключите все тестовые пароли из `V1__init.sql`. - Следующие push в `main` CI/CD сможет развёртывать автоматически. + Проверьте в браузере login → reload → refresh → logout для каждого tenant-домена. + Refresh-cookie должна иметь `HttpOnly`, `Secure`, `SameSite=Lax`, path `/api/auth`; + access JWT не должен находиться в Local/Session Storage. До снятия технического окна + смените или отключите все демонстрационные учётные записи из `V1__init.sql`. + +6. После проверки удалите старый `ConfigMap/tenants-config`, отзовите старые DB/OTel + пароли и верните обычный доступ через Caddy. В дальнейшем image-only изменения можно + разворачивать ручным запуском workflow, но любые изменения `../k8s` по-прежнему нужно + применять отдельно или переносить этот каталог в управляемый CI репозиторий. + +### Важные ограничения rollback + +- Смена `JWT_SECRET` и сброс БД завершат все старые пользовательские сессии. +- Readiness требует доступности и успешной миграции всех tenant-БД; одна старая или + недоступная БД остановит rollout. +- Автоматический rollback возвращает только два image reference. Он не откатывает БД, + Secret, ConfigMap или RBAC; после применения новой V1 безопаснее исправлять проблему + вперёд либо снова пересоздавать БД под старую версию. +- CI не запускает Testcontainers integration tests: полный PostgreSQL-прогон нужно + повторить вручную, если после зафиксированных 300 успешных тестов код ещё менялся. +- `TRUSTED_PROXY_CIDRS=10.42.0.0/16` соответствует текущей pod-сети K3s. При смене + cluster CIDR его нужно обновить, иначе rate limit увидит неверные клиентские IP. ## 3. Что могу выполнить я diff --git a/backend/src/main/resources/db/migration/V1__init.sql b/backend/src/main/resources/db/migration/V1__init.sql index d040527..50868e5 100755 --- a/backend/src/main/resources/db/migration/V1__init.sql +++ b/backend/src/main/resources/db/migration/V1__init.sql @@ -731,12 +731,31 @@ CREATE TABLE IF NOT EXISTS academic_calendar_days ( CREATE INDEX IF NOT EXISTS idx_calendar_days_lookup ON academic_calendar_days(calendar_id, course_number, date); +CREATE OR REPLACE FUNCTION calculate_academic_calendar_week_number( + academic_year_start DATE, + calendar_date DATE +) +RETURNS INTEGER +LANGUAGE SQL +IMMUTABLE +STRICT +AS $$ + SELECT ( + ( + calendar_date + - academic_year_start + + EXTRACT(ISODOW FROM academic_year_start)::INTEGER + - 1 + ) / 7 + ) + 1 +$$; + INSERT INTO academic_calendar_days (calendar_id, course_number, date, week_number, day_of_week, activity_type_id) SELECT calendar.id, course.course_number, days.date::DATE, - ((days.date::DATE - ay.start_date) / 7) + 1, + calculate_academic_calendar_week_number(ay.start_date, days.date::DATE), EXTRACT(ISODOW FROM days.date::DATE)::INT, activity.id FROM academic_calendars calendar @@ -1262,6 +1281,8 @@ COMMENT ON COLUMN academic_calendar_days.date IS 'Дата'; COMMENT ON COLUMN academic_calendar_days.week_number IS 'Номер недели в учебном году'; COMMENT ON COLUMN academic_calendar_days.day_of_week IS 'День недели ISO'; COMMENT ON COLUMN academic_calendar_days.activity_type_id IS 'ID кода активности'; +COMMENT ON FUNCTION calculate_academic_calendar_week_number(DATE, DATE) + IS 'Номер недели календарного учебного графика по периодам понедельник–воскресенье'; COMMENT ON COLUMN academic_calendar_subjects.calendar_id IS 'ID календарного учебного графика'; COMMENT ON COLUMN academic_calendar_subjects.semester_number IS 'Номер учебного семестра внутри графика: 1, 2, 3 ...'; diff --git a/backend/src/main/resources/db/migration/V2__align_academic_calendar_weeks_to_monday.sql b/backend/src/main/resources/db/migration/V2__align_academic_calendar_weeks_to_monday.sql deleted file mode 100644 index ecc153c..0000000 --- a/backend/src/main/resources/db/migration/V2__align_academic_calendar_weeks_to_monday.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Недели календарного учебного графика выровнены по ISO-неделе: --- понедельник — первый день, воскресенье — последний. -UPDATE academic_calendar_days AS calendar_day -SET week_number = ( - ( - calendar_day.date - - academic_year.start_date - + EXTRACT(ISODOW FROM academic_year.start_date)::INTEGER - - 1 - ) / 7 -) + 1 -FROM academic_calendars AS calendar -JOIN academic_years AS academic_year - ON academic_year.id = calendar.academic_year_id -WHERE calendar_day.calendar_id = calendar.id - AND calendar_day.week_number IS DISTINCT FROM ( - ( - calendar_day.date - - academic_year.start_date - + EXTRACT(ISODOW FROM academic_year.start_date)::INTEGER - - 1 - ) / 7 - ) + 1; diff --git a/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberBaselineIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberBaselineIntegrationTest.java new file mode 100644 index 0000000..026294c --- /dev/null +++ b/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberBaselineIntegrationTest.java @@ -0,0 +1,70 @@ +package com.magistr.app.migration; + +import org.flywaydb.core.Flyway; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; + +import static org.assertj.core.api.Assertions.assertThat; + +@Testcontainers +@DisplayName("Baseline нумерации недель календарного графика") +class AcademicCalendarWeekNumberBaselineIntegrationTest { + + @Container + static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); + + @Test + @DisplayName("V1 считает недели по периодам понедельник–воскресенье") + void baselineAlignsWeeksToMonday() throws SQLException { + Flyway flyway = Flyway.configure() + .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) + .locations("classpath:db/migration") + .cleanDisabled(false) + .load(); + + flyway.clean(); + flyway.migrate(); + + assertThat(flyway.info().current()).isNotNull(); + assertThat(flyway.info().current().getVersion().getVersion()).isEqualTo("1"); + + try (Connection connection = POSTGRES.createConnection("")) { + assertThat(calculateWeek(connection, LocalDate.of(2026, 9, 1), LocalDate.of(2026, 9, 1))) + .isEqualTo(1); + assertThat(calculateWeek(connection, LocalDate.of(2026, 9, 1), LocalDate.of(2026, 9, 6))) + .isEqualTo(1); + assertThat(calculateWeek(connection, LocalDate.of(2026, 9, 1), LocalDate.of(2026, 9, 7))) + .isEqualTo(2); + assertThat(calculateWeek(connection, LocalDate.of(2027, 9, 1), LocalDate.of(2027, 9, 6))) + .isEqualTo(2); + assertThat(calculateWeek(connection, LocalDate.of(2025, 9, 1), LocalDate.of(2025, 9, 8))) + .isEqualTo(2); + } + } + + private int calculateWeek(Connection connection, + LocalDate academicYearStart, + LocalDate calendarDate) throws SQLException { + try (PreparedStatement statement = connection.prepareStatement( + "SELECT calculate_academic_calendar_week_number(?, ?)" + )) { + statement.setDate(1, Date.valueOf(academicYearStart)); + statement.setDate(2, Date.valueOf(calendarDate)); + try (ResultSet resultSet = statement.executeQuery()) { + assertThat(resultSet.next()).isTrue(); + return resultSet.getInt(1); + } + } + } +} diff --git a/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberMigrationIntegrationTest.java b/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberMigrationIntegrationTest.java deleted file mode 100644 index c32a4fc..0000000 --- a/backend/src/test/java/com/magistr/app/migration/AcademicCalendarWeekNumberMigrationIntegrationTest.java +++ /dev/null @@ -1,218 +0,0 @@ -package com.magistr.app.migration; - -import org.flywaydb.core.Flyway; -import org.flywaydb.core.api.MigrationVersion; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; - -import java.sql.Connection; -import java.sql.Date; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.time.LocalDate; - -import static org.assertj.core.api.Assertions.assertThat; - -@Testcontainers -@DisplayName("Миграция нумерации недель календарного графика") -class AcademicCalendarWeekNumberMigrationIntegrationTest { - - @Container - static final PostgreSQLContainer POSTGRES = - new PostgreSQLContainer<>(com.magistr.app.testing.TestContainerImages.POSTGRES); - - @Test - @DisplayName("V2 переносит первый понедельник после неполной недели в неделю 2") - void migrationAlignsWeeksToMondayFor2026And2027() throws SQLException { - Flyway baseline = flyway("1"); - baseline.clean(); - baseline.migrate(); - - long calendar2026; - long calendar2027; - try (Connection connection = POSTGRES.createConnection("")) { - SeedReferences references = loadSeedReferences(connection); - - long year2026 = insertAcademicYear( - connection, - "2026-2027", - LocalDate.of(2026, 9, 1), - LocalDate.of(2027, 6, 30) - ); - calendar2026 = insertCalendar(connection, year2026, references, "График 2026-2027"); - insertCalendarDay(connection, calendar2026, references.activityTypeId(), - LocalDate.of(2026, 9, 1), 1, 2); - insertCalendarDay(connection, calendar2026, references.activityTypeId(), - LocalDate.of(2026, 9, 7), 1, 1); - - long year2027 = insertAcademicYear( - connection, - "2027-2028", - LocalDate.of(2027, 9, 1), - LocalDate.of(2028, 6, 30) - ); - calendar2027 = insertCalendar(connection, year2027, references, "График 2027-2028"); - insertCalendarDay(connection, calendar2027, references.activityTypeId(), - LocalDate.of(2027, 9, 1), 1, 3); - insertCalendarDay(connection, calendar2027, references.activityTypeId(), - LocalDate.of(2027, 9, 6), 1, 1); - } - - Flyway latest = latestFlyway(); - latest.migrate(); - - assertThat(latest.info().current()).isNotNull(); - assertThat(latest.info().current().getVersion().getVersion()).isEqualTo("2"); - try (Connection connection = POSTGRES.createConnection("")) { - assertThat(findWeekNumber(connection, calendar2026, LocalDate.of(2026, 9, 1))).isEqualTo(1); - assertThat(findWeekNumber(connection, calendar2026, LocalDate.of(2026, 9, 7))).isEqualTo(2); - assertThat(findWeekNumber(connection, calendar2027, LocalDate.of(2027, 9, 1))).isEqualTo(1); - assertThat(findWeekNumber(connection, calendar2027, LocalDate.of(2027, 9, 6))).isEqualTo(2); - } - } - - private Flyway flyway(String targetVersion) { - return Flyway.configure() - .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) - .locations("classpath:db/migration") - .target(MigrationVersion.fromVersion(targetVersion)) - .cleanDisabled(false) - .load(); - } - - private Flyway latestFlyway() { - return Flyway.configure() - .dataSource(POSTGRES.getJdbcUrl(), POSTGRES.getUsername(), POSTGRES.getPassword()) - .locations("classpath:db/migration") - .cleanDisabled(false) - .load(); - } - - private SeedReferences loadSeedReferences(Connection connection) throws SQLException { - long specialtyId = queryLong(connection, "SELECT id FROM specialties ORDER BY id LIMIT 1"); - long profileId = queryLong( - connection, - "SELECT id FROM specialty_profiles WHERE specialty_id = ? ORDER BY id LIMIT 1", - specialtyId - ); - long studyFormId = queryLong(connection, "SELECT id FROM education_forms ORDER BY id LIMIT 1"); - long activityTypeId = queryLong( - connection, - "SELECT id FROM academic_calendar_activity_types WHERE code = 'Т'" - ); - return new SeedReferences(specialtyId, profileId, studyFormId, activityTypeId); - } - - private long insertAcademicYear(Connection connection, - String title, - LocalDate startDate, - LocalDate endDate) throws SQLException { - try (PreparedStatement statement = connection.prepareStatement(""" - INSERT INTO academic_years (title, start_date, end_date) - VALUES (?, ?, ?) - RETURNING id - """)) { - statement.setString(1, title); - statement.setDate(2, Date.valueOf(startDate)); - statement.setDate(3, Date.valueOf(endDate)); - return requiredLong(statement); - } - } - - private long insertCalendar(Connection connection, - long academicYearId, - SeedReferences references, - String title) throws SQLException { - try (PreparedStatement statement = connection.prepareStatement(""" - INSERT INTO academic_calendars ( - title, - academic_year_id, - specialty_id, - specialty_profile_id, - study_form_id, - course_count - ) - VALUES (?, ?, ?, ?, ?, 1) - RETURNING id - """)) { - statement.setString(1, title); - statement.setLong(2, academicYearId); - statement.setLong(3, references.specialtyId()); - statement.setLong(4, references.profileId()); - statement.setLong(5, references.studyFormId()); - return requiredLong(statement); - } - } - - private void insertCalendarDay(Connection connection, - long calendarId, - long activityTypeId, - LocalDate date, - int weekNumber, - int dayOfWeek) throws SQLException { - try (PreparedStatement statement = connection.prepareStatement(""" - INSERT INTO academic_calendar_days ( - calendar_id, - course_number, - date, - week_number, - day_of_week, - activity_type_id - ) - VALUES (?, 1, ?, ?, ?, ?) - """)) { - statement.setLong(1, calendarId); - statement.setDate(2, Date.valueOf(date)); - statement.setInt(3, weekNumber); - statement.setInt(4, dayOfWeek); - statement.setLong(5, activityTypeId); - statement.executeUpdate(); - } - } - - private int findWeekNumber(Connection connection, - long calendarId, - LocalDate date) throws SQLException { - try (PreparedStatement statement = connection.prepareStatement(""" - SELECT week_number - FROM academic_calendar_days - WHERE calendar_id = ? - AND date = ? - """)) { - statement.setLong(1, calendarId); - statement.setDate(2, Date.valueOf(date)); - try (ResultSet resultSet = statement.executeQuery()) { - assertThat(resultSet.next()).isTrue(); - return resultSet.getInt(1); - } - } - } - - private long queryLong(Connection connection, String sql, Object... arguments) throws SQLException { - try (PreparedStatement statement = connection.prepareStatement(sql)) { - for (int index = 0; index < arguments.length; index++) { - statement.setObject(index + 1, arguments[index]); - } - return requiredLong(statement); - } - } - - private long requiredLong(PreparedStatement statement) throws SQLException { - try (ResultSet resultSet = statement.executeQuery()) { - assertThat(resultSet.next()).isTrue(); - return resultSet.getLong(1); - } - } - - private record SeedReferences( - long specialtyId, - long profileId, - long studyFormId, - long activityTypeId - ) { - } -} diff --git a/docs/DATABASE.md b/docs/DATABASE.md index d267987..a179a95 100644 --- a/docs/DATABASE.md +++ b/docs/DATABASE.md @@ -913,21 +913,21 @@ lifecycle ресурсов, эффективная сетка целевого 2. Формат имени: `V{номер}__{описание}.sql` (напр. `V1__init.sql`, `V2__add_departments.sql`) 3. **ЗАПРЕЩЕНО** изменять уже закоммиченные файлы миграций — это сломает контрольные суммы Flyway. Исключение допускается только по прямой просьбе пользователя и при полном сбросе tenant-БД. 4. Flyway запускается **программно** при первом обращении к БД тенанта (`TenantConfigWatcher.initDatabaseForTenant()`) -5. Настройка `baselineOnMigrate=true` — если в БД уже есть данные, Flyway начнёт с baseline +5. Настройка `baselineOnMigrate=true` — непустая БД без истории будет помечена baseline и + `V1` не выполнится; поэтому текущую консолидированную V1 применяют только к полностью + пустой tenant-схеме ### Текущие миграции | Файл | Описание | |------|----------| -| `V1__init.sql` | Полная baseline-схема: справочники, роли, refresh-сессии JWT, PostgreSQL rate limit и аудит входа, lifecycle-поля, история кафедр, календарные графики, динамическое расписание, точечные изменения с переносом даты, seed, CHECK/UNIQUE/GiST-ограничения, конкурентно безопасные триггеры и комментарии | -| `V2__align_academic_calendar_weeks_to_monday.sql` | Перенумерация сохранённых дней календарного графика по периодам `понедельник–воскресенье`, чтобы неполная первая неделя не заполнялась датами следующей недели | +| `V1__init.sql` | Полная baseline-схема: справочники, роли, refresh-сессии JWT, PostgreSQL rate limit и аудит входа, lifecycle-поля, история кафедр, календарные графики с нумерацией недель `понедельник–воскресенье`, динамическое расписание, точечные изменения с переносом даты, seed, CHECK/UNIQUE/GiST-ограничения, конкурентно безопасные триггеры и комментарии | ### Этап разработки -По прямому решению владельца проекта прежние разработческие миграции V2–V7 были объединены -в baseline `V1`. Новая миграция `V2__align_academic_calendar_weeks_to_monday.sql` создана -после фиксации baseline и накатывается поверх существующих tenant-БД без изменения -контрольной суммы V1. +По прямому решению владельца проекта разработческие миграции V2–V7 объединены в baseline +`V1`. Правильная нумерация недель календарного графика также входит непосредственно в V1. +Перед применением этой редакции требуется полностью пустая tenant-схема. ### Полный сброс БД (локально) diff --git a/docs/INFRASTRUCTURE.md b/docs/INFRASTRUCTURE.md index e716460..c7e0a4a 100644 --- a/docs/INFRASTRUCTURE.md +++ b/docs/INFRASTRUCTURE.md @@ -325,8 +325,8 @@ kubectl auth can-i update secret/tenants-secret \ --as="system:serviceaccount:magistr:${BACKEND_SERVICE_ACCOUNT}" -n magistr ``` -Production rollout и проверка реальных pod являются внешними операциями и без отдельного -разрешения из этой рабочей копии не выполнялись. +Production rollout и проверка реальных pod являются внешними операциями и выполняются из +этой рабочей копии только по отдельному разрешению владельца. ### Ручное обновление backend и frontend @@ -368,12 +368,16 @@ Deployment-файлов запрещено. jobs также возвращают registry digest каждого образа. 4. Отдельный обязательный job сканирует опубликованные digests закреплённым Trivy `0.63.0` и блокирует deploy при исправимых `HIGH`/`CRITICAL` уязвимостях. -5. Deploy job устанавливает фиксированный `kubectl v1.33.12` только после SHA-256 проверки. - Java Agent также имеет точную версию и checksum. +5. Push в `main` выполняет проверки, сборку, публикацию и scan, но не меняет production. + Deploy job запускается только вручную через `workflow_dispatch` и устанавливает + фиксированный `kubectl v1.33.12` после SHA-256 проверки. Java Agent также имеет точную + версию и checksum. 6. `scripts/deploy-images.sh` принимает только `image@sha256:...`, сохраняет предыдущие ссылки, применяет оба digest и ждёт rollout. При отказе автоматически возвращает оба предыдущих образа и повторно проверяет их готовность. -7. Workflow-wide concurrency lock не допускает одновременные production deployment. +7. Gitea 1.25 игнорирует `environment` и `concurrency`, поэтому workflow не полагается на + них как на защиту production. Оператор не должен запускать второй ручной deploy, пока + первый не завершён. `scripts/check-artifact-pinning.sh` проверяет Dockerfile, Compose, Actions, checksum и CI gates. При передаче `K8S_DIR=../k8s` он дополнительно требует digest у каждого production diff --git a/graphify-out/.graphify_learning.json b/graphify-out/.graphify_learning.json index 96c0d00..298e703 100644 --- a/graphify-out/.graphify_learning.json +++ b/graphify-out/.graphify_learning.json @@ -1,6 +1,27 @@ { - "generated_at": "2026-07-22T21:09:28.978295+00:00", + "generated_at": "2026-07-29T20:02:59.230356+00:00", "nodes": { + "_gitea_workflows_docker_build_build_and_push_docker_images": { + "code_fingerprint": "80373e004c326a786715725be21ddb9214b6ff382a02cb829acad1bb9c9098f8", + "label": "Workflow сборки и публикации Docker-образов", + "last": "2026-07-29T19:59:04.551881+00:00", + "provenance": [ + { + "date": "2026-07-29T19:59:04.551881+00:00", + "outcome": "useful", + "q": "новая схема на проде на удалённом сервере создана через CREATE SCHEMA public. я проверил, давай дальше" + }, + { + "date": "2026-07-29T19:26:44.188240+00:00", + "outcome": "useful", + "q": "теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли?" + } + ], + "score": 1.999355769, + "source_file": ".gitea/workflows/docker-build.yaml", + "status": "preferred", + "uses": 2 + }, "backend_src_main_java_com_magistr_app_config_auth_authorizationinterceptor_authorizationinterceptor": { "code_fingerprint": "70b01b3fa22e058ee997250c52cc0affee54ab37aa5f8cc7eb74411487f1bbbf", "label": "AuthorizationInterceptor", @@ -22,7 +43,7 @@ "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" } ], - "score": 2.185520319, + "score": 1.861135007, "source_file": "backend/src/main/java/com/magistr/app/config/auth/AuthorizationInterceptor.java", "status": "preferred", "uses": 3 @@ -38,7 +59,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.776480146, + "score": 0.661231273, "source_file": "backend/src/main/java/com/magistr/app/config/auth/JwtTokenService.java", "status": "tentative", "uses": 1 @@ -54,7 +75,7 @@ "q": "Почему RequireRoles связывает множество контроллеров, моделей и сервисов как cross-community bridge?" } ], - "score": 0.653312094, + "score": 0.556344408, "source_file": "backend/src/main/java/com/magistr/app/config/auth/RequireRoles.java", "status": "tentative", "uses": 1 @@ -70,7 +91,7 @@ "q": "Как безопасно обновлять tenant DataSource без потери рабочего подключения?" } ], - "score": 0.794603611, + "score": 0.676664767, "source_file": "backend/src/main/java/com/magistr/app/config/DataInitializer.java", "status": "tentative", "uses": 1 @@ -86,7 +107,7 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 0.75572808, + "score": 0.643559327, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/ConfigMapUpdater.java", "status": "tentative", "uses": 1 @@ -102,7 +123,7 @@ "q": "Как безопасно заменить tenant DataSource без потери рабочего подключения?" } ], - "score": 0.794468884, + "score": 0.676550037, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfig.java", "status": "tentative", "uses": 1 @@ -128,7 +149,7 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 2.344800575, + "score": 1.99677413, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantConfigWatcher.java", "status": "preferred", "uses": 3 @@ -154,7 +175,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 2.365552641, + "score": 2.014446076, "source_file": "backend/src/main/java/com/magistr/app/config/tenant/TenantRoutingDataSource.java", "status": "preferred", "uses": 3 @@ -170,7 +191,7 @@ "q": "Почему в выборе аудитории показаны корпус и этаж?" } ], - "score": 0.976851438, + "score": 0.831862505, "source_file": "backend/src/main/java/com/magistr/app/controller/ClassroomController.java", "status": "tentative", "uses": 1 @@ -186,7 +207,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.776480146, + "score": 0.661231273, "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "status": "tentative", "uses": 1 @@ -207,7 +228,7 @@ "q": "Как безопасно заменить tenant DataSource без потери рабочего подключения?" } ], - "score": 1.589072495, + "score": 1.353214804, "source_file": "backend/src/main/java/com/magistr/app/controller/DatabaseController.java", "status": "preferred", "uses": 2 @@ -223,7 +244,7 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 0.75572808, + "score": 0.643559327, "source_file": "backend/src/main/java/com/magistr/app/controller/GlobalExceptionHandler.java", "status": "tentative", "uses": 1 @@ -244,7 +265,7 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 1.752429602, + "score": 1.492325672, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleController.java", "status": "preferred", "uses": 2 @@ -260,7 +281,7 @@ "q": "Как безопасно валидировать и сохранять точечные изменения расписания?" } ], - "score": 0.78890947, + "score": 0.671815777, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleOverrideController.java", "status": "tentative", "uses": 1 @@ -281,11 +302,27 @@ "q": "проанализируй весь проект на баги и ошибки и дополни '/mnt/HDD/ProjectMagistr/magistr/BUG_REPORT.md'" } ], - "score": 1.549927354, + "score": 1.319879771, "source_file": "backend/src/main/java/com/magistr/app/controller/ScheduleRuleAdminController.java", "status": "preferred", "uses": 2 }, + "backend_src_main_java_com_magistr_app_model_academiccalendar_academiccalendar": { + "code_fingerprint": "5bdd7da771fe97443661a5bd06bed94f453ea036759c4de8c927ed68eb2b723d", + "label": "AcademicCalendar", + "last": "2026-07-22T21:09:57.015227+00:00", + "provenance": [ + { + "date": "2026-07-22T21:09:57.015227+00:00", + "outcome": "useful", + "q": "хотим поменять название сервиса, придумай что-то короткое одним словом подходящее по смыслу" + } + ], + "score": 0.851581632, + "source_file": "backend/src/main/java/com/magistr/app/model/AcademicCalendar.java", + "status": "tentative", + "uses": 1 + }, "backend_src_main_java_com_magistr_app_model_classroom_classroom": { "code_fingerprint": "5614d83b8b7e20fd2b76271b28a8ef11ffc137808ec2d7ed7cd23e42e0ab93ec", "label": "Classroom", @@ -297,11 +334,27 @@ "q": "Почему в выборе аудитории показаны корпус и этаж?" } ], - "score": 0.976851438, + "score": 0.831862505, "source_file": "backend/src/main/java/com/magistr/app/model/Classroom.java", "status": "tentative", "uses": 1 }, + "backend_src_main_java_com_magistr_app_model_department_department": { + "code_fingerprint": "2948555ebc816c44c9f745ce199b0a908930bf6c82cb4a0bd46c23ffac42ea6a", + "label": "Department", + "last": "2026-07-22T21:09:57.015227+00:00", + "provenance": [ + { + "date": "2026-07-22T21:09:57.015227+00:00", + "outcome": "useful", + "q": "хотим поменять название сервиса, придумай что-то короткое одним словом подходящее по смыслу" + } + ], + "score": 0.851581632, + "source_file": "backend/src/main/java/com/magistr/app/model/Department.java", + "status": "tentative", + "uses": 1 + }, "backend_src_main_java_com_magistr_app_model_schedulerule_schedulerule": { "code_fingerprint": "692d61c1bfd5b46f5865174dde8cf2d962d2ccd124b5e4320e2ba8535bb29605", "label": "ScheduleRule", @@ -318,7 +371,7 @@ "q": "Корректны ли inferred-связи вокруг ScheduleRule?" } ], - "score": 1.448240567, + "score": 1.23328582, "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRule.java", "status": "preferred", "uses": 2 @@ -334,7 +387,7 @@ "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" } ], - "score": 0.794199275, + "score": 0.676320444, "source_file": "backend/src/main/java/com/magistr/app/model/ScheduleRuleSlot.java", "status": "tentative", "uses": 1 @@ -342,16 +395,37 @@ "backend_src_main_java_com_magistr_app_model_semester_semester": { "code_fingerprint": "52546b552fff16ab841a63ea80fb806f6cc32edc0615ec53b3c002543d692f24", "label": "Semester", - "last": "2026-07-21T19:52:13.631700+00:00", + "last": "2026-07-22T21:09:57.015227+00:00", "provenance": [ + { + "date": "2026-07-22T21:09:57.015227+00:00", + "outcome": "useful", + "q": "хотим поменять название сервиса, придумай что-то короткое одним словом подходящее по смыслу" + }, { "date": "2026-07-21T19:52:13.631700+00:00", "outcome": "useful", "q": "в дополнительные фильры просмотра расписаний нужно добавить выбор семестра" } ], - "score": 0.975949456, + "score": 1.682676032, "source_file": "backend/src/main/java/com/magistr/app/model/Semester.java", + "status": "preferred", + "uses": 2 + }, + "backend_src_main_java_com_magistr_app_model_studentgroup_studentgroup": { + "code_fingerprint": "c4a022d9dd493adcfcf8bce3abd264e78d5539b45316d9e0aaef72f1b15091ac", + "label": "StudentGroup", + "last": "2026-07-22T21:09:57.015227+00:00", + "provenance": [ + { + "date": "2026-07-22T21:09:57.015227+00:00", + "outcome": "useful", + "q": "хотим поменять название сервиса, придумай что-то короткое одним словом подходящее по смыслу" + } + ], + "score": 0.851581632, + "source_file": "backend/src/main/java/com/magistr/app/model/StudentGroup.java", "status": "tentative", "uses": 1 }, @@ -366,7 +440,7 @@ "q": "Какие связи затрагивает полная валидация правил расписания в исправлении №7?" } ], - "score": 0.794199275, + "score": 0.676320444, "source_file": "backend/src/main/java/com/magistr/app/repository/SemesterRepository.java", "status": "tentative", "uses": 1 @@ -387,7 +461,7 @@ "q": "Как безопасно валидировать и сохранять точечные изменения расписания?" } ], - "score": 1.764858926, + "score": 1.502910177, "source_file": "backend/src/main/java/com/magistr/app/service/ScheduleQueryService.java", "status": "preferred", "uses": 2 @@ -403,7 +477,7 @@ "q": "Корректны ли inferred-связи вокруг ScheduleRule?" } ], - "score": 0.654041293, + "score": 0.556965376, "source_file": "backend/src/test/java/com/magistr/app/model/ScheduleRuleTest.java", "status": "tentative", "uses": 1 @@ -419,10 +493,95 @@ "q": "Какие подсистемы связывают исправления аутентификации, tenant-конфигурации, расписания и инфраструктуры?" } ], - "score": 0.776480146, + "score": 0.661231273, "source_file": "compose.yaml", "status": "tentative", "uses": 1 + }, + "compose_db_service": { + "code_fingerprint": "944ed05aa3bb66491e0622baa9659fc2db3115c79076325ebe243aeb84ca09f9", + "label": "PostgreSQL-сервис Docker Compose", + "last": "2026-07-29T19:59:04.551881+00:00", + "provenance": [ + { + "date": "2026-07-29T19:59:04.551881+00:00", + "outcome": "useful", + "q": "новая схема на проде на удалённом сервере создана через CREATE SCHEMA public. я проверил, давай дальше" + } + ], + "score": 0.999937245, + "source_file": "compose.yaml", + "status": "tentative", + "uses": 1 + }, + "docs_database_flyway_migrations": { + "code_fingerprint": "2f5d4ce61ba0f5d8a9141f4ac33375dfc26a68e3bdccdc4269cf2a4f45a50176", + "label": "Flyway-миграции", + "last": "2026-07-29T19:26:44.188240+00:00", + "provenance": [ + { + "date": "2026-07-29T19:26:44.188240+00:00", + "outcome": "useful", + "q": "теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли?" + } + ], + "score": 0.999418524, + "source_file": "docs/DATABASE.md", + "status": "tentative", + "uses": 1 + }, + "docs_infrastructure_jwt_secret_policy": { + "code_fingerprint": "fbce586f3b64dba203d336f5744d9895924e86e122cdde1939c0dec1600e1af1", + "label": "Политика JWT-секрета", + "last": "2026-07-29T19:26:44.188240+00:00", + "provenance": [ + { + "date": "2026-07-29T19:26:44.188240+00:00", + "outcome": "useful", + "q": "теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли?" + } + ], + "score": 0.999418524, + "source_file": "docs/INFRASTRUCTURE.md", + "status": "tentative", + "uses": 1 + }, + "docs_infrastructure_kubernetes_production": { + "code_fingerprint": "fbce586f3b64dba203d336f5744d9895924e86e122cdde1939c0dec1600e1af1", + "label": "Production-инфраструктура Kubernetes", + "last": "2026-07-29T19:59:04.551881+00:00", + "provenance": [ + { + "date": "2026-07-29T19:59:04.551881+00:00", + "outcome": "useful", + "q": "новая схема на проде на удалённом сервере создана через CREATE SCHEMA public. я проверил, давай дальше" + }, + { + "date": "2026-07-29T19:26:44.188240+00:00", + "outcome": "useful", + "q": "теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли?" + } + ], + "score": 1.999355769, + "source_file": "docs/INFRASTRUCTURE.md", + "status": "preferred", + "uses": 2 + }, + "docs_infrastructure_tenants_configmap": { + "code_fingerprint": "fbce586f3b64dba203d336f5744d9895924e86e122cdde1939c0dec1600e1af1", + "label": "Tenants ConfigMap", + "last": "2026-07-29T19:26:44.188240+00:00", + "provenance": [ + { + "date": "2026-07-29T19:26:44.188240+00:00", + "outcome": "useful", + "q": "теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли?" + } + ], + "score": 0.999418524, + "source_file": "docs/INFRASTRUCTURE.md", + "status": "tentative", + "uses": 1 } }, "version": 1 diff --git a/graphify-out/memory/query_20260729_192644_теперь_напиши_мне_инструкцию_как_это_всё_выыкатить.md b/graphify-out/memory/query_20260729_192644_теперь_напиши_мне_инструкцию_как_это_всё_выыкатить.md new file mode 100644 index 0000000..d4f99c0 --- /dev/null +++ b/graphify-out/memory/query_20260729_192644_теперь_напиши_мне_инструкцию_как_это_всё_выыкатить.md @@ -0,0 +1,26 @@ +--- +type: "query" +date: "2026-07-29T19:26:44.188240+00:00" +question: "теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["Workflow сборки и публикации Docker-образов", "Production-инфраструктура Kubernetes", "Flyway-миграции", "Политика JWT-секрета", "Tenants ConfigMap"] +--- + +# Q: теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли? + +## Answer + +Expanded from original query via vocab: [auth, cookie, database, docker, flyway, jwt, kubernetes, production, refresh, secret, secure, workflow]. Прямой push в main для первого rollout небезопасен: workflow меняет только image digests, а актуальные ../k8s манифесты находятся вне Git-корня и не применяются. В действующем кластере отсутствуют tenants-secret и otel-postgres-secret, а app-secret не содержит JWT_SECRET. Для консолидированной V1 нужно полностью пересоздать все tenant-БД, затем выполнить первый rollout вручную по digest через ../k8s/deploy.sh. Инструкция и ограничения rollback обновлены в STARTUP_GUIDE.md. + +## Outcome + +- Signal: useful + +## Source Nodes + +- Workflow сборки и публикации Docker-образов +- Production-инфраструктура Kubernetes +- Flyway-миграции +- Политика JWT-секрета +- Tenants ConfigMap \ No newline at end of file diff --git a/graphify-out/memory/query_20260729_195904_новая_схема_на_проде_на_удалённом_сервере_создана.md b/graphify-out/memory/query_20260729_195904_новая_схема_на_проде_на_удалённом_сервере_создана.md new file mode 100644 index 0000000..bde1145 --- /dev/null +++ b/graphify-out/memory/query_20260729_195904_новая_схема_на_проде_на_удалённом_сервере_создана.md @@ -0,0 +1,24 @@ +--- +type: "query" +date: "2026-07-29T19:59:04.551881+00:00" +question: "новая схема на проде на удалённом сервере создана через CREATE SCHEMA public. я проверил, давай дальше" +contributor: "graphify" +outcome: "useful" +source_nodes: ["Workflow сборки и публикации Docker-образов", "Production-инфраструктура Kubernetes", "PostgreSQL-сервис Docker Compose"] +--- + +# Q: новая схема на проде на удалённом сервере создана через CREATE SCHEMA public. я проверил, давай дальше + +## Answer + +Expanded from original query via vocab: [auth, database, flyway, jwt, kubernetes, postgres, production, secret, workflow]. Граф связал workflow сборки immutable Docker-образов, production-инфраструктуру Kubernetes и tenant PostgreSQL. Проверка исходников и кластера подтвердила: консолидированная V1 проходит на чистом PostgreSQL, push в main запускает image-only rollout, а новые манифесты ../k8s нужно применить вручную. До push необходимо создать JWT_SECRET в app-secret, tenants-secret и otel-postgres-secret; значения секретов не читались и не изменялись. + +## Outcome + +- Signal: useful + +## Source Nodes + +- Workflow сборки и публикации Docker-образов +- Production-инфраструктура Kubernetes +- PostgreSQL-сервис Docker Compose \ No newline at end of file diff --git a/graphify-out/memory/query_20260729_201238_сам_можешь_выполнить_эти_действия.md b/graphify-out/memory/query_20260729_201238_сам_можешь_выполнить_эти_действия.md new file mode 100644 index 0000000..3e42d6b --- /dev/null +++ b/graphify-out/memory/query_20260729_201238_сам_можешь_выполнить_эти_действия.md @@ -0,0 +1,25 @@ +--- +type: "query" +date: "2026-07-29T20:12:38.880629+00:00" +question: "сам можешь выполнить эти действия?" +contributor: "graphify" +outcome: "useful" +source_nodes: ["Workflow сборки и публикации Docker-образов", "Production-инфраструктура Kubernetes", "Job деплоя в Kubernetes", "Политика JWT-секрета"] +--- + +# Q: сам можешь выполнить эти действия? + +## Answer + +Expanded from original query via vocab: [workflow, production, kubernetes, secret, jwt, tenant, postgres, otel, gitea, main, registry, flyway]. Первый traversal по перегруженному main был нерелевантен; повторный запрос без main связал Workflow сборки и публикации Docker-образов, Production-инфраструктуру Kubernetes, Job деплоя в Kubernetes и Политику JWT-секрета. По отдельному разрешению старый backend масштабирован до 0, обе tenant-БД read-only проверены как пустые и имеющие CREATE, в app-secret добавлен новый JWT_SECRET без вывода значения, созданы переходные tenants-secret и otel-postgres-secret. Workflow изменён так, что push выполняет build/scan, а deploy разрешён только ручному workflow_dispatch. Server dry-run выявил immutable roleRef; внешний rbac.yaml исправлен новым именем backend-tenant-secret-binding, повторный dry-run прошёл. + +## Outcome + +- Signal: useful + +## Source Nodes + +- Workflow сборки и публикации Docker-образов +- Production-инфраструктура Kubernetes +- Job деплоя в Kubernetes +- Политика JWT-секрета \ No newline at end of file diff --git a/graphify-out/reflections/LESSONS.md b/graphify-out/reflections/LESSONS.md index c9f756e..cddd6ca 100644 --- a/graphify-out/reflections/LESSONS.md +++ b/graphify-out/reflections/LESSONS.md @@ -1,30 +1,39 @@ # Lessons -_Auto-generated by `graphify reflect` from 11 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ +_Auto-generated by `graphify reflect` from 14 session memories in graphify-out/memory/. Deterministic; no LLM. Use for orientation — verify before relying, and revisit dead ends if the code has changed since._ ## Summary -- 10 useful · 1 dead ends · 0 corrected · 0 unmarked +- 13 useful · 1 dead ends · 0 corrected · 0 unmarked ## Lessons **Preferred sources** — corroborated by ≥2 useful results; start here. +- `ScheduleGeneratorService` (3× useful) - `TenantRoutingDataSource` (3× useful) +- `Production-инфраструктура Kubernetes` (2× useful) +- `Workflow сборки и публикации Docker-образов` (2× useful) - `TenantConfigWatcher` (3× useful) - `AuthorizationInterceptor` (3× useful) +- `Semester` (2× useful) - `ScheduleQueryService` (2× useful) - `ScheduleController.java` (2× useful) - `DatabaseController` (2× useful) -- `ScheduleGeneratorService` (2× useful) - `ScheduleRuleAdminController` (2× useful) - `ScheduleRule` (2× useful) **Tentative** — useful in fewer than 2 results; verify before relying. +- `PostgreSQL-сервис Docker Compose` (1× useful) +- `Flyway-миграции` (1× useful) +- `Tenants ConfigMap` (1× useful) +- `Политика JWT-секрета` (1× useful) +- `AcademicCalendar` (1× useful) +- `Department` (1× useful) +- `StudentGroup` (1× useful) - `Classroom` (1× useful) - `ClassroomController.java` (1× useful) -- `Semester` (1× useful) - `DataInitializer` (1× useful) - `TenantConfig` (1× useful) - `ScheduleRuleSlot` (1× useful) diff --git a/scripts/check-artifact-pinning.sh b/scripts/check-artifact-pinning.sh index 4c603bd..83e024e 100755 --- a/scripts/check-artifact-pinning.sh +++ b/scripts/check-artifact-pinning.sh @@ -85,6 +85,10 @@ check_workflow_gates() { if ! grep -Eq '^ needs: \[build-and-push-backend, build-and-push-frontend, security-scan\]$' "$WORKFLOW"; then fail "deploy обязан зависеть от успешного security-scan" fi + if ! grep -Eq '^[[:space:]]{2}workflow_dispatch:[[:space:]]*$' "$WORKFLOW" \ + || ! grep -Fq "if: \${{ gitea.event_name == 'workflow_dispatch' }}" "$WORKFLOW"; then + fail "production deploy должен запускаться только через ручной workflow_dispatch" + fi if ! grep -Eq '^ KUBECTL_VERSION: v[0-9]+\.[0-9]+\.[0-9]+$' "$WORKFLOW" \ || ! grep -Eq '^ KUBECTL_SHA256: [0-9a-f]{64}$' "$WORKFLOW" \ diff --git a/scripts/test-artifact-pinning.sh b/scripts/test-artifact-pinning.sh index 9abd5e7..0200a88 100755 --- a/scripts/test-artifact-pinning.sh +++ b/scripts/test-artifact-pinning.sh @@ -29,4 +29,13 @@ if PROJECT_ROOT="$FIXTURE_DIR" bash "$CHECK_SCRIPT" >/dev/null 2>&1; then exit 1 fi +cp "$ROOT_DIR/.gitea/workflows/docker-build.yaml" \ + "$FIXTURE_DIR/.gitea/workflows/docker-build.yaml" +sed -i "/gitea.event_name == 'workflow_dispatch'/d" \ + "$FIXTURE_DIR/.gitea/workflows/docker-build.yaml" +if PROJECT_ROOT="$FIXTURE_DIR" bash "$CHECK_SCRIPT" >/dev/null 2>&1; then + printf 'Ошибка теста: автоматический production deploy на push не был отклонён\n' >&2 + exit 1 +fi + printf 'Проверка закрепления артефактов завершена успешно\n'